/egilh

Learning by doing

September 2004 Entries

What: I started translating but passed through managing external translation vendors before I ended up doing what I liked best; technical specialist. The way we translated Windows 95 was drastically different from the previous translation work; instead of editing include and resource files, we modified the resource sections in the final English version (i.e. directly in the .dll or .exe). Translating the resource files gave fast turn-around as the change was visible immediately. It was also a mess some times as some times the word "Desktop" should be translated, other times it’s the internal name in Windows for the desktop and everything boke if you translated ...

I organize my work (and a fair bit of my life) with the Outlook task list. In Outlook I have a customized view that shows all tasks due today, grouped by priority. This feature does not exist on the Pocket PC so I implemented a simple task manager with embedded VB which I used a lot on my old iPAQ. I didn't want to install the VB runtime on my new iPAQ 4150 so I decided to rewrite it in .NET CF. I didn't get far before I hit the first hurdle though: accessing Pocket Outlook with .NET CF. The problem is that Pocket Outlook is only available via the IPOutlookApp COM interface and .NET CF does not support calling COM components. The latest news I have from Microsoft ...

Writing Your Own GPS Applications has a good intro to GPS programming. It covers the basic GPS commands and explains the terms you need to know when working with GPS. Examples in VB.NET with plenty of comments. Not sure if I manage to resist the temptation of buying a Bluetooth Tom Tom much longer. Maybe I can integrate it with the SMS Bluetooth manager I wrote earlier this year? Or write a client on my laptop that automagically configures the IP depending on my location?

For a .NET CF 1.0 program I'm working I have to use a VB/OLE Automation DATE from C#. The .NET methods FromOADate and ToOADate are not available on .NET CF 1.0 so I ported the VB.NET implementation of FromOADate and ToOADate to C# public static System.DateTime OleDateToDateTime(double date) { const Int32 hex1 = 86400000; //0x5265c00 const Int64 hex2 = 59926435200000; //0x3680b5e1fc00 const Int64 hex3 = 315537897600000; //0x11efae44cb400 const Int32 hex4 = 10000; //0x2710 const double real1 = 86400000; const double real2 = 2958466; const double real3 = -657435; ...

What: DAO/RDO . Well, almost :-(I got the job and went back to Dublin to celebrate with a few pints with the lads only to discover that the lawyers couldn't get me a work permit. 6 months more work experience and the job would have been mine... When: mid 90s Lessons learned: I hate lawyers First time on a 10 hour flight (BA business class via London Heathrow, 3 movies and great food/junk) First time in the USA First time driving a car with automatic gear First jet lag First, but not last, time on Microsoft campus First time I had 7 job interviews for 1 job. (The future boss and 6 future colleagues) I had great fun during the interviews. Some issues ...

What: Started the translation work on Excel 95 but I quickly moved on to Windows 95 as I got the chance to work on technical issues instead of translations. One of the few things I accomplished was to improve the slow Excel macros. Version 1 first sorted the list and then used a binary lookup to make it many, many, times faster as the lists were large. The second version skipped macros altogether and used a binary tree in C to translate flat text files. When: mid 90s Lessons learned: Marketing people don't understand programmers. They insisted on translating Visual Basic for Applications. if then/else is a 'universal' language as far as I'm concerned. At least ...

The soft rain continued so we decided to go to Firenze. Long queues in front of the most famous museums like 'Galleria di Uffizi'. Or at least they looked long to me. I was told the can get many times longer during high season. Got a great view from piazza Michelangiolo, but all things considered I wasn't impressed with Firenze. It's a big town and the country side in Toscana has more to offer if you ask me. Guess I had too high expectations going there. Nice places attract tourists which in turn attract illegal parking attendants (don't pay anybody, use the automatic ticket machines) and pick pockets (one backpack opened but nothing important stolen as the valuables ...

PienzaWhen Pio II became pope, he reconstructed his home town Pienza to be like the ideal town according to the teories of Leon Battista Alberti. The town was nice but some of the shops really stank of their variety of 'pecorino' (sheep cheese). I can't stand 'normal' pecorino cheese, far less their variation. They pack the cheese in leaves from valnut trees and dig them down. So far so good. But then they make a major mistake and dig them up when they have started stinking like half digested milk. Why bother? It sounds very much like surströmning to me. So, needless to say, I avoided the gastromania shops and bought a nice Chianti Riserva instead. MontepulcianoLeft ...

OK, I know it's stupid to buy stuff in a turist place like San Gimignano but I couldn't help myself when I tried some of the wild boar ham and salami yesterday. This time I left my money at 'La Buca' Update: Don't forget to taste the ice cream if you visit the main square. The gelateria has won both national and international ice cream competitions and you can really taste the difference.

Arrived at a nice 'agriturismo' close to Siena on Monday afternoon. 3 Madonne (http://www.tremadonne.it/) opened last June and the house with the apartments has just been restored. A bit in the middle of nowhere but in a great position for going on day trips to Siena, San Gimignano, Firenze, Montepulciano etc. The Toscana region site also has some info: http://www.agriturismo.regione.toscana.it/cgi-bin/agriturismo/dbsearch2?code=5994 Went for a late evening walk in the old part of Colle di val d'Elsa. The newer, lower part, is nothing special but the old part on the hill is lovely. Loads of shops with crystal and a few displays with people making crystal and carving ...

What: Microsoft Excel 5. Translated parts of the software and the screenshots. Made daily builds on a 486 with OS/2. When: early 90s Lessons learned: Builders doesn't trust technical translators. The build kit I got, deleted all the intermediate files. As a result it took the best part of a day to make a build even if you just changed a string. Not the way I like working. I'm pretty much a feature driven development guy: add a feature or fix a bug, make a quick build and make sure it works instead of adding tons of stuff and hoping for the best. I changed the make files and brought the build time to minutes instead of hours. You can do anything with Excel! Through ...

I'm hitting the road for a week or so. I wasn't planning on posting anything until I got back but then I discovered Pocket Blog Writer Pocket Blog Writer has a very simple GUI but that's a feature, not a bug, on a Pocket PC. The important thing is that it works like a charm! A couple of important features like support for multiple blogs and editing posted items are under development. I'll post a few more items to the 100 programs/products I have worked on if I have GPRS coverage.

What: Translated the Dos 6.* retail boxes, screenshots and new software parts to Norwegain When: Early 90s Lessons learned: Don't go outside without an umbrella in Dublin Forget lesson #1: Don't go outside with an umbrella as the first real winds will tear it inside out. Wear a rain jacket instead Forget lesson #2: Do hide in a pub if it starts to rain

I subscribed to the SQL Server Performance newsletter earlier this year and I usually learn something for each issue. Did you for example know that: Calling a stored procedure sp_something is slower than usp_something? A very fast (but not 110% accurate way) of doing SELECT COUNT(*) from <table_name> is SELECT rows FROM sysindexes WHERE id = OBJECT_ID('<table_name>') AND indid < 2

A data entry and analysis DB implemented with Access 1.1. The operator could enter information about operations (open wound, day hospital etc), track infections and operations that had to be repeated (because of infections or other causes) When: early 90s Lessons learned: Don't get sick in August when the regular doctors go on vacation. The number of re-operations and infections raise drastically and drop just as fast when they come back Access is great for making data entry applications and prototypes. But, you can go crazy if you want your application to work in a slightly different way Don't use too much water when washing the stairs (I had an apartment ...

When: early 90s What: MS DOS disk device driverI had loads of fun with this project and learned even more. I sometimes used LapLink bit to move files between different machines but I never liked that I had to use a separate software for working on my local PC and a remote machine. I liked my file manager just fine thank you and I wanted to use it for managing files on the "remote" computer as well. LapLink worked via a serial cable so it was painfully slow as well. So in the end I manage to find someone who could sponsor my new project; a MS DOS device driver in assembler that mounted the HD on a remote machine in such a way that it looked like a local HD. A serial ...

When: late 80s What: IRC like multi user chat. The “GUI” was pretty similar as well. A lot more secure though as you could only send messages. Lessons learned: Curses :-) X Windows moves the input focus with the mouse so don't put the coffee cup too close to the mouse Scket handling under *nix

KC Lemson, Shrini Kulkarni and Ron Richardsonare are blogging 100 things about themselves. Neat idea so here goes; 100 programs/projects I have worked on. To much stuff for one post so I'll split them in smaller groups. Larry Osterman is in a nostalgic mood as well, so I guess it is contagious. egilh project #1: Simple CRM When: mid 80s What: Simple CRM solution implement in Turbo Pascal. Lessons learned: You can learn anything from reading the Borland online help and their examples. Pointers are VERY powerfull You run out of memory if you allocate memory… unless you release the memory when yo don't need it anymore The first version of the program ...