I went to a housewarming party this last weekend and found an echo of the past. One of the guests was wearing a Project Lifesaver tracking bracelet — I immediately recognized it and asked about it. A decade earlier, I wrote the code for the transmitters. He has Alzheimer’s and had gotten lost after HandiDart dropped him off one afternoon.
So how did something I wrote in 2005 end up around the wrist of someone at a party in 2014?
This was from the first job I had after graduating from the University of Victoria. The company was HABIT Research, later rebranded to Locator Systems, now bankrupt. I was hired to get the software under control as it had organically grown over the years and was a mess. I put in a repository — CVSNT — and showed the other engineers how to use TortoiseCVS. (I’ve said for many years that if you’re not using a repository, it’s not code, it’s just a pile of text.)
I did get the code under control. I wrote new modular libraries for the GPS, RTC, VHF, and SEEPROM modules. Yes, SEEPROM. This was when it was unclear if Flash or SEEPROM would be the world’s choice for storage. (Luckily, as a module, it was easy to change to a Flash-friendly package.) When I told production there was now a version of the code named “GPS_STANDARD”, the manager said “I really like the sound of that!) It was later renamed to reflect the board.
Anyway, eventually the sales department landed a HUGE contract with Project Lifesaver. PL wanted to replace their old bulky equipment with something smaller, lighter, and easier to use. This removed the need for data storage, GPS location, and a lot of other parts.
Interestingly enough, they have a red LED that blinks on when the VHF is on. It was $0.15 for an LED and $1.50 for the voltage regulator. So when you see the blinking lights on trackers on TV, that’s actually real. They do it to make it look exciting, but that’s how you build thousands of transmitters.
My supervisor wrote code for the newer 10F102 chips from Microchip. He was writing one version for each of 256 ID numbers, each of 10 pulse rates, and an option to change the pulse rate if the chip went underwater. He’d made about 50 of them, and wanted me to fill in the rest of the code modules.
“Aaah,” I said, “aaah. That’s going to be a nightmare to fix. Let me work on it”
The code got changed to two versions, one of which was deprecated when we moved away from having saltwater switches. So, we went down from 256 * 2 * 10 = 5,120 versions of the code to one version. A few global variables meant that the compiler always put the variables in the same place, and adding a companion HEX editor meant that production could make the transmitter have any ID number at any given pulse rate.
It turned out that Project Lifesaver only really needed one pulse rate, 60ppm, and that the manufacturer was happy to program the chips themselves for $0.37 each when you buy a reel. That was a lot cheaper than having a Software Engineer on staff, so I was laid off.
That code has remained unchanged since April of 2006. It still runs perfectly! Three thousand rescues with no failures.