Just sharing some of my inconsequential lunch conversations with you... RSS  

Thursday, April 30, 2009

Windows 7 RC is out

… and I can’t logon on MSDN site… Can this be related to Windows 7 RC? Or is MSDN site just failing as usual?… Dammed…

Wednesday, April 29, 2009

What Software are people using?

Here’s a cool social network: Wakoopa, aimed at discovering and sharing what applications people are using. Not for tinfoil hats, I’m afraid :)

I’m given it a try, let’s see what it finds…

Talking directly to RFID interrogators

We have a rule: we never talk directly to interrogators, we always use BizTalk RFID DSPI providers to abstract hardware. But rules are made to be broken, so every now and then we have to use raw Basic Reader Interface (BRI) commands over the DSPI. And from time to time we have to write an application entirely over BRI. This post is about one of this times.

One of the more important tasks we have to do on RFID projects is the site survey. On this site surveys we usually try a bunch of portal topologies, antennas, orientations and settings, measuring the reading (or writing) experience. DSPI provider is focused on generalities, not specialization, so in order to get specific parameters like Received Signal Strength Indication (RSSI) we have to write our own antenna tuning application from ground up.

<update>It turns out that DSPI does support RSSI on vendor specific data</update>

The good news is it’s really easy. We often use Intermec’s products, and the SDK is really easy to integrate with .NET.

Intermec has 2 approaches:

  • Advanced BRI: higher level API. Gives us primitives like ReadTags(), StartReadingTags(), PollTags(). Implemented using the Basic BRI reader.
  • Basic BRI: lower level API. Basically executes BRI commands and gets the response as string.

Here’s a typical BRI session:

ATTRIB ANTS=1
OK>

ATTRIB FIELDSTRENGTH=30DB,30DB,30DB,30DB
OK>

READ ANT COUNT RSSI REPORT=NO
OK>

READ POLL
H000000000000000000000003 1 51 -44.3

H000000000000000000000004 1 51 -50.8

H000000000000000000000006 1 51 -51.4

H000000000000000000000007 1 50 -51.6

H000000000000000000000002 1 50 -53.1

H000000000000000000000005 1 50 -53.7

H000000000000000000000001 1 21 -59.4

OK>

READ STOP
OK>



Now for some strange reason Intermec’s SDK doesn’t seem to provide RSSI information on the simpler Advanced BRI – at least I didn’t found out how, even after reversing Intermec’s SDK code. Oh well, porting our auto tuning application from Advanced to Basic was simple enough. Here’s a sample:



        /// <summary>
/// Return a list of TagReading, given a tags whitelist, for a time span.
/// </summary>
/// <param name="tagsWhiteList">List of tags to read - ignore all of the rest.</param>
/// <param name="timeSpan">Cycle timeout.</param>
/// <returns></returns>
private TagReading[] GetTagCountsAndRSSI(List<String> tagsWhiteList, TimeSpan timeSpan)
{
BasicBRIReader reader = new BasicBRIReader(owner);

try
{
//
// 1. open connection

reader.Open("tcp://192.168.58.177");

//
// 2. StartReading

reader.Execute("READ ANT COUNT RSSI REPORT=NO");

//
// 3. Wait

System.Threading.Thread.Sleep(timeSpan);

//
// 4. Collect tags

Tag[] tags = BRIParser.GetTags(
SupportClassAdv.ToByteArray(reader.Execute("READ POLL")), // NOTE: SupportClassAdv.ToByteArray reversed from SDK
BRIConstants.FIELD_SEPARATOR
);

//
// 5. Stop polling

reader.Execute("READ STOP");

//
// 6. Filter, project and return results

return tags == null ?
new TagReading[0] :
tags
.Where(x => tagsWhiteList == null || tagsWhiteList.Count == 0 || tagsWhiteList.Contains(x.ToString()))
.Select(
x => new TagReading()
{
Id = x.ToString(),
Count = (int)x.TagFields.FieldArray[1].DataInt,
Rssi = float.Parse(x.TagFields.FieldArray[2].DataString)
}
).ToArray();
}

finally
{
//
// 7. cleanup

if (reader != null && reader.IsConnected)
{
reader.Close();
}
}
}

Tuesday, April 28, 2009

Windows 7 roadmap to RTM

Here’s a probable roadmap:

  • April 30: RC released to MSDN and TechNet subscribers (me!)
  • May 5: RC released to everyone else
  • June 30: RTM

If the tests goes according to plan, this RC will be chosen as RTM, so we can be 2 days apart from getting Windows 7 :)

Here’s the rumor from MicrosoftWatch.

Saturday, April 25, 2009

When to accept piracy?

Strangely enough piracy doesn’t have the same signification for all people. Let’s start with the Pirates of Caribbean: they are heroes, right? Why? Probably because of the freedom they represent. But piracy also has a darker side.

Pirates have been around as long as people have used the oceans as trade routes. Though Portugal, my country, doesn’t have piracy for ages, on the past we have been both pirates and suffered from the piracy of others. But piracy today has changed. Except for Somalia, piracy nowadays is about music, movies, software and counterfeiting.

So why do most people tend to accept this kind of piracy? First of all, because this piracy is made with no violence on the comfort of our homes. But above all because most people, right or wrong, don’t understand as fair the price of what they are getting, believe that these prices are manipulated and that the people that should get the money, the composers and authors, don’t get but a small piece of the pie. And finally because those who judge these cases are probably biased. And should I ask: can the recent Somalia piracy have influenced the decision against thepiratebay.org?

But let’s face it: even if we can understand some classes of piracy, we can never defend it. So what should we do? We should lobby for:

  • lower music and movies prices
  • more copyrights to composers and authors, less to content holders

Ok, this doesn’t apply to software and counterfeiting, I know. On the software, and since free software is so broadly available, there’s less reasons for keep pirating software. On regards to counterfeiting it will always exist as long as there are products that cost much more than they cost to produce and this is above all a producer and counterfeiting problem, not as much as consumer problem as the others.

Tuesday, April 21, 2009

Oracle Buys Sun

Oracle Corporation (NASDAQ: ORCL) and Sun Microsystems (NASDAQ: JAVA) announced today they have entered into a definitive agreement under which Oracle will acquire Sun common stock for $9.50 per share in cash. The transaction is valued at approximately $7.4 billion, or $5.6 billion net of Sun’s cash and debt. “We expect this acquisition to be accretive to Oracle’s earnings by at least 15 cents on a non-GAAP basis in the first full year after closing. We estimate that the acquired business will contribute over $1.5 billion to Oracle’s non-GAAP operating profit in the first year, increasing to over $2 billion in the second year. This would make the Sun acquisition more profitable in per share contribution in the first year than we had planned for the acquisitions of BEA, PeopleSoft and Siebel combined,” said Oracle President Safra Catz.

Glups, will Oracle never stop?!?!

Sunday, April 19, 2009

Overclocking my Windows Mobile

I’m still using my old HTC 3300 (201 MHz), so if something I need is speed. I’m trying out Pocket Hack Master, and here’s my experience:

  • It can be safely overclocked to 260 MHz
  • It doesn’t seem to run any hotter, and it doesn’t waist significantly more battery
  • underclocking has an annoying effect: the display starts to flicker; only acceptable from 150 MHz up

Pocket master has a cool option: change the clock on the presence of specific apps, maybe I’ll give it a try underclocking to 65 MHz and overclocking on the presence of all the apps I use. Hopefully my battery will last longer, since I’ve activated push mail I’m arriving home with something like 10 to 20% battery left, without using GPS :(

<update>

Unfortunately the “Application speeds” strategy failed… Some apps insist on staying in memory after exit. This happens with the phone app, for starter…

</update>

<update II>

From Pocket Hack Mobile’s site:

The energy that a typical processor consumes is a square function of its clock rate. This means that a CPU running at 100MHz consumes eight times less energy than a processor running at 400MHz.

This is not the experience I’ve collected. Strange…

</update II>

Thursday, April 16, 2009

We’ve finally found the D830 substitute!

image After a disappointing benchmark of a Vostro 1510, I’ve asked for a Latitude E5500 for try out. It was considerably better than Vostro (I’ll post the experience one of this days), at an affordable price. But it still had some problems:

  • no graphic card option other than the onboard
  • no connectors on the back! Too crowded on the sideways
  • 4GB memory limit
  • No 64 bits official support
  • No e-sata support

But we had a break and I’ve managed to get a hand on a Latitude E6500. And let’s say I’ve loved it! Compared to E5500:

  • there’s a dedicated memory graphic card as an option
  • Some connectors are on the back – where they belong
  • 8GB limit
  • 64 bits support
  • e-sata

More important than the benchmarks, the usage experience was great. Working on VMWare Player and Virtual PC was fast enough for our needs. And I didn’t expect any difference here to E5500, the specs are pretty much the same…

We’ve successfully tried:

All I have to complaint is:

  • One less USB (only 2). Oh well, everyone should have a stand with an USB hub, anyway
  • On the unit I’ve tried, the LCD cover was a bitter unstable – it went back and forward as we pushed it

Here’s one of the simplest benchmarks I value the most (on Windows 7 build 7077):

e6600 windiws7 build 7077

Cool results!

D830 is dead. Long live E6500 :)

Monday, April 13, 2009

Microsoft research photo tools

At last I’ve posted me first photos at PhotoSynth. Here they are.

Photosynth - from Microsoft. Imagine being able to share the places and things you love using the cinematic quality of a movie, the control of a video game, and the mind-blowing detail of the real world. With nothing more than a bunch of photos, Photosynth creates an amazing new experience.

<update>New to Photosynth? Be sure to press ‘P’ while viewing this synth</update>

<update II>Too bad Microsoft didn’t port it to MacOS and Linux…</update II>

I’m a bit disappointed with the result, probably because of the lens I’ve used – a 16mm fish-eye, and mostly because of the way I’ve used it – I’ve shoot it mostly from 2 or 3 positions, and swivel all around on a panoramic technique. This is the way to do it with stitching, but probably a bad way to take photos for Photosynth. With this technique I’d use Image Composite Editor, like this:

Mosteiro dos Jerónimos, Belém, Lisboa, Portugal

Oops, now that I think about it, I should have used a lens with perspective correction, now I can see how confused was Photosynth

Here’s ICE:

Image Composite Editor - from Microsoft Research. Image Composite Editor is an advanced panoramic image stitcher. While Photo Gallery includes the same stitching "engine", this application provides a lot more fine control. The stitched panorama can be saved in a wide variety of formats, from common formats like JPEG and TIFF to multi-resolution tiled formats like HD View and Silverlight Deep Zoom.

PS: the monument on the photos is Mosteiro dos Jerónimos, built to commemorate Vasco da Gama's discovery of a maritime path to India.

Wednesday, April 08, 2009

Service Pack 1 for SQL Server 2008

Service Pack 1 for SQL Server 2008 will be available today for customers. The Service pack is available via download at http://www.microsoft.com/downloads/en/default.aspx and is primarily a roll-up of previous cumulative updates, quick fix engineering updates and minor fixes made in response to requests reported through the SQL Server community. While there are no new features in this service pack, customers running SQL Server 2008 should download and install SP1 to take advantage of the fixes which increase supportability and stability of SQL Server 2008.

As announced here. Buuu, no fun….

Tuesday, April 07, 2009

TFS error creating work item

When I tried to create a work item on TFS (VS2K8 + TFS2K8) I got an error message saying:

Could not load type 'Microsoft.TeamFoundation.workitemTracking.Client.WorkItemTypeDeniedOrNotExistException' from assembly 'Microsoft.TeamFoundation.WorkItemTracking.Client, Version=9.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'

 

Arghh. It seems like there’s an correct installation order to fulfill. I had to re-install Visual Studio 2008 SP1 and everything is working fine. Strange, as it worked for ages on my laptop… probably another update screw this up…

Some RFID facts

I’ve been working on yet another cool RFID project for the last months, and we’ve just concluded the 2nd site survey. Unfortunately I can’t give you much details yet, for now all I can post is generic information.

Here are some generic facts I’ve gathered through this site surveys:

  • Laboratorial test can be deceptive. They provided us some important data, but only the final equipment list and topology can only be found on the premises.
  • RFID tags are not always hard to detect, on some scenarios the problem is to avoid them. On most cases because of reflection.
  • On the other hand reflection can work for us. Whenever we can we should use it to improve coverage.
  • Whenever possible setup an environment to potentiate readings. An all around reflection portico can greatly improve readings. Aluminum foil will work just fine for the site survey.
  • Whenever possible try to trap signal from interfering with other interrogators - be RFID eco-responsible. The previous reflection portico can be enhanced with external absorbers - for the site survey a wet cloth will do the trick.
  • Some environments can be very RFID-hostile. For instance, some metal conveyers will absorb all energy when close to the tags, others will read just fine.
  • Choose your antenna’s wisely, from gain to beamwidth. Have a worksheet ready with each of the antennas trigonometric data so you can quickly decide which antenna to try. For these site survey we used 3 types of antennas on a total of 10.
  • Make sure you stay on legal limits and that you don’t overrun other readers.
  • Don’t use power you don’t need, be RFID eco-responsible :) On most cases you’ll end up getting better readings with less power. And if you really need to use all of the antenna's coverage, remember to set it to half power. Don’t forget to take a spectrum analyzer, it’s a must.
  • The perfect match is hard to find. We have to try different interrogators, parameters, antennas, tags, topologies, reflectors and absorbers. All of these against moving tags placed on the worst possible conditions, reading nothing more than RSSI and tag counts.
  • Our greater asset: the experience we’ve been collecting from past projects and contact with our partners. Yes, we can now setup a site survey on a couple of hours on that very same scenario that took a month to figure out how to make it work!

All I can show you for now is my company’s (Link Consulting) business link (here’s the Portuguese link). And also a hint of the beautiful Açores Islands:

IMG_0878_stitchv2

Santa Maria, Açores

 

IMG_0968_stitch

Santa Maria, Açores

 

IMG_9101_stitch

Ponta Delgada, S. Miguel, Açores

 

IMG_9147

Igreja Matriz, Ponta Delgada, S. Miguel, Açores

 

IMG_0333

Lagoa do Fogo, S. Miguel, Açores

 

Thanks to Ismael, Raquel, Renato, Sara, Joaquim, Carla, Tiago and all the people from Açores that received us so well. Thanks to Carlos and good luck for your master’s degree.

 

<update>

The photos have not been touched other than the stitching. For that I’ve used:

Image Composite Editor - from Microsoft Research. Image Composite Editor is an advanced panoramic image stitcher. While Photo Gallery includes the same stitching "engine", this application provides a lot more fine control. The stitched panorama can be saved in a wide variety of formats, from common formats like JPEG and TIFF to multi-resolution tiled formats like HD View and Silverlight Deep Zoom.

</update>

 

<update II>

Photo hardware: a manual 16mm fish-eye mounted on my old Canon 10D

</update II>

Development Catharsis :: Copyright 2006 Mário Romano