Tuesday, June 27, 2006

Windows Update on Steroïds

This is not new stuff but I learned about it only very recently: Windows Update can do more than simply update your Windows. It can update your Office as well. Plus server stuff such as Exchange Server or SQL Server if applicable.

Since it's no longer about updating Windows only, it even received a new name: Microsoft Update.

Microsoft Update is Windows Update v6 actually.

Get started here:

Once you've used Microsoft Update from your browser, your computer's Automatic Updates will use it in lieu of the older v4 (aka Windows Update).

For more info, click the FAQ link in the page above.

Thanks to Jean VanDooren for the link.

Monday, June 26, 2006

Coolest birthday card ever

Last week, I received what is most likely the coolest birthday card of my life from my friend Chantal Darquenne, who is a NASA researcher and adjunct professor at UCSD (San Diego, CA).

Chantal's work involves lots of zero-gravity experiments. While some of these experiments were conducted by John Glenn himself during his 1998 space shuttle mission, most are performed through huge series of parabolic flights in a specially equipped NASA plane (A 707 if I remember correctly).

She was above Florida in her giant roller coaster again last week when her colleague took this great picture :


In case you don't believe she's floating, read the gravity indicator on the ceiling ;-)
So cool! Thanks so much, Chandechan!

Friday, June 23, 2006

MapDialogRect() is a b...

What a family! Even Microsofties confess that GetDialogBaseUnits() is a crock and we should use its sister MapDialogRect(). But Raymond forgets to tell us that MapDialogRect() is a... bad girl!
Earlier today, appTranslator user Karl E. reported a problem with the Dialog Layout Mode:

Sometimes when I move a control left or right (using the arrow keys), it also moves one pixel up or down the first time I hit the key.
You probably know that dialog templates coordinates use Dialog Units (DLUs), which are converted to pixels at runtime according to the font used by the dialog. The reason is to keep consistent dialog layouts for visually-impaired people who use a larger font: The dialog automatically grows or shrinks when you modify the font size.

After investigation, it appeared that the guilty is MapDialogRect(), the Windows API used to convert DLUs to pixels. Consider this example: A static (label) control at pos 7,7 size 156x10 (DLUs). Its rectangle is then (7,7,17,163). Convert it to pixels with, say, font MS Sans Serif 8 and you get pixels rectangle (11,11,28,234).
But the dialog created by Windows initially sets the control at (11,11,27,234).
Where does this 1 px height difference come from ? Obviously, there is a rounding effect in the conversion that leads to different results. Does it mean that the Dialog Manager doesn't use MapDialogRect() ? Hmmm... Strange!

I scratched my head for a while until I realized that the same rectangle at a different position works fine: MapDialogRect() and the Dialog manager yield the same pixels result.

Consistent size, please...

Her's my guess to explain the difference: We don't want the same 156x10 DLUs rectangle to have different sizes according to its position, right? (the difference would come from rounding). Here's how Windows solves the problem (again, it's my guess):

1. Compute the size in pixels independantly of the position :
PixelsSize= MapDialogRect( 0,0, DluRect.Height, DluRect.Width );
2. Compute the position in pixels :
PixelsPos= MapDialogRect( DluRect.top, DluRect.left, whatever );
3. Combine the converted pos and size:
PixelsRect= Rect( PixelsPos, PixelsSize );

Oh, Miracle! No more unwanted 1px glitches. It's smart. But why does the dialog layout manager does it on its own ? Why isn't it implemented right into MapDialogRect() ? Oh my...

Now, please excuse me while I go write my own MapDialogRectangle().

Thursday, June 22, 2006

Working with Professional Translators

Hi All,

It's been a long time without post. For those who care, I'm still alive :-) It's simply that I didn't feel like writing that much anymore. But I'm back...

New in appTranslator: XLIFF

One of the things I've been adding to appTranslator lately is XLIFF support. XLIFF's full name does a pretty goof job at describing itself: XML Localisation Interchange File Format. iow, a standard format to exchange translation data between different tool vendors.

What's the purpose, you ask ? Well, the idea is that professional translators often have their own toolbox of translation tools. So when you call a translation agency and tell them about appTranslator, they often reply appTransWHAT ? You know, they are used to translating documents. But they're not used to translating GUIs _at all_. Their tools are very good at doing generic translation. But when it comes to extracting resources or fixing dialog layouts (to name only a few specific issues), these tools are nowhere. But no matter what, these translators are often not going to switch tools just for you.

XLIFF vs appTranslator Translator Edition

So how do you work with people who don't want to hear about appTranslator TE ? XLIFF is the answer. Just export the appTranslator project to an XLIFF file and send them the file. When you receive the file back (translated), just import it back into appTranslator. It's exactly the same process as working with appTranslator Translator Edition (TE). Except that translators use their own tools instead of appTranslator TE.
Of course, this means a little more work for you: Their tools don't do GUIs-specific checks such as dialog layouts. So you'll have to do these checks yourself. But OTOH, you may expect better productivity from your translators since they use their own tools.

Oh! By the way, XLIFF is not a take-it-or-leave-it: You can decide to use XLIFF with one translator and appTranslator TE with another translator. It's really up to you and the requirements of each translator.

Getting a translation quote

Another interesting use of XLIFF is to get a quote from these translation agencies: Their tools include powerful word and sentences counters that help them quote the work more accurately.


XLIFF support in appTranslator Professional Edition is currently in beta. Feel free to drop me a line if you want to give it a try.

For the ones who care, here is more info about XLIFF.