Lars Wirzenius: Oliotalo, 2003


Tuesday, November 18, 2003

Oliotalo: Remote debugging

The wonderful world of remote embedded development: I'm debugging a piece of code, written in Hedgehog Lisp, which works fine on the test box at the office and crashes on the production box somewhere in the middle of a forest. I have no access to the debugging logs the box writes to a serial port. I do have, however, access to the logs of the web server from where the box fetches its byte code. Also, I can (most of the time) make the box send me an SMS message.

I therefore try to pinpoint the exact place where the code crashes in the production box by watching differences between timestamps for when the byte code is fetched. If the difference is less than two minutes, the program crashed. If it is ten minutes, and I get an SMS, then it worked.

Sunday, November 16, 2003

Oliotalo: Long day

Spent over 24 hours at the office, starting on Thursday afternoon. One long hacking session, mostly, but towards the end it was mostly waiting for the customer to get the box installed and start testing. They had some trouble with it, so in the end they didn't get to test much. More to happen on Monday, if I don't feel too weak from the flu.

This was the first all-night hacking session since the bankruptcy of Wapit two and a half years ago. It felt pretty good, while it lasted. Combined with a flu it was rather heavier than I thought, and it's taken Friday and Saturday to recover. Not a good investment in general, I guess, though it was worth it this time.

Tuesday, October 28, 2003

Oliotalo: Non-sensical clients

Sometimes I suspect some of our clients aren't quite as sensible as we would like. Like today: it is their responsibility to provide translations for the user interface. We have thoughtfully put all the user interface text in a single file, to make it easy to translate. We have e-mailed it to them. What they did, instead, was take a screenshot of each page in the web application, print it out, write translations out by hand, and fax it in to us. Our fax ran out of paper after ten or fifteen meters. Luckily, the boss is the assigned diplomat, and gets to explain the wonders of e-mail and editing text files to the customer.

Friday, October 24, 2003

Oliotalo: Drilling machine

One of the things that makes embedded software development different from, say, development of network servers is that embedded programmers get to dress in coveralls and play with real hardware.

A drill.

We spent yesterday at the client hooking up to the machine above. It went like a charm. There was dirt, oil, and a noise so deafening ear protectors were mandatory. Not for us the calm, soothing whispers of computer fans or the serene tap-tap-tap of keyboards.

Sunday, October 12, 2003

Oliotalo: Moment of absurdity

I had a moment of absurdity in a meeting with a potential client on Friday. We were discussing whether Hedgehog would fit in the embedded device they were building themselves. They said something like "We have 256 of memory". Hedgehog has so far been running on machines with at least 512 kilobytes of memory, although a smaller memory shouldn't be a problem, we're not using all of the 512 kilobytes either. Only a bit later did it occur to me that they were talking about megabytes. It feels weird to have that much memory in an embedded device, but hey, they're the ones paying for it.

Friday, September 5, 2003

Oliotalo: I hate remote programming and debugging

If there is one thing I hate about my current job, it is when we do remote programming and debugging. The current situation is that our application listens on certain events in a vehicle, and reacts to them, and the reaction time is too slow. We've never seen the vehicle, and need to rely on telephoned reports from a customer representative. This is prone to errors, prone to misunderstandings, and quite slow. Extremely aggravating.

Monday, August 25, 2003

Oliotalo: Not fun after blackout

Some days at work are just not as fun as others.

Helsinki had a blackout on Saturday evening, and this affected Oliotalo's machines as well. I went to the office on Sunday to bring up our servers. Some of them had filesystems that needed tender loving care, and one graphics card gave no signal (so I had to do the fsck blindly). None of them got their network up, because the switch they were all connected was confused and needed to be rebooted. After that, the servers were fine.

When I came to work on Monday, I was informed that two of workstations also had broken graphics cards. The boss had rushed out and bought two replacements: new Radeon ones. Too bad XFree86 in Debian stable doesn't work with them. So this resulted in a need to upgrade things to unstable and experimental, which sucks, because now the machines are going to require much more attention than when they ran stable. I've shouted at the boss for being an idiot.

For the kinds of work we do, a basic 2D slightly accelerated card is fine: it performs plenty well enough to keep the user happy, is cheap, and is well supported. Something like, say, the Matrox G200 or G400. They don't even have fans, or require extra power connectors. Unfortunately, the computer store in the same building as Oliotalo doesn't believe in such cards. They think the Radeon's are low end and outmoded, even if the newer one came out only this year. That and the fact that they don't have a clue about Linux, or possibly anything, is why I told the boss never to buy anything from them again.

Saturday, July 12, 2003

Oliotalo: Going on vacation is not smooth

Yesterday was the last day of work before my two weeks' summer vacation. Everything did not go smoothly. We had a deadline yesterday and didn't quite meet it. In addition to the usual schedule slippages, we had trouble with the GPRS network. Either the operator was fucked up, the GPRS modem was fucked up, or there is a very mysterious software bug. Unfortunately, Oliotalo's part of the software is very simple, and I couldn't find any fault in it. Something to look forward to after the vacation.

If there's something to be learned from yesterday's experience, it is that trying to develop software for a vehicle remotely is unnecessarily difficult. I was sitting at the office, and writing code, and my colleague was in Järvenpää, at the client's factory, trying it out and seeing what was happening. He did not have a laptop with him (Oliotalo doesn't have any, yet), and that's why we did it this way. Not very comfortable, and quite annoying. We'll have to fix this procedure.

Monday, July 7, 2003

Oliotalo: Visiting the Netherlands

A potential client paid for my trip so that I could visit them in the Netherlands and test whether our system (hardware and software) would work with their vehicle. I flew there on Monday evening last week, and came back on Wednesday evening. We had two full work days for our tests and they went quite well: we did the critical primary target in about two hours. Both the hardware and the software were compatible and our biggest problem was that we did not know whether a two byte value was most or least significant byte first. My first guess was wrong so that my software measured the speed of the vehicle to be about 3500 kilometers per hour. This was a source of some amusement.

The second biggest problem was an external consultant that the IT department had forced on us. He seemed a bit clueless, asking questions such as "What is the difference between analog and digital signals". It seemed, actually, that the IT department and the rest of the people at our potential client were in a state of minor warfare. There was mentioning of people having to crack into their Windows machines in order to be able to install software essential for their jobs, since the IT department would refuse to do it. Not particularly professional, in my opinon.

The rest of the time we looked at other models of vehicles and experimented with ways to read information from them. The first one has a nice CAN bus, from which almost all information is available. The others may need analog and digital sensors. Ah well, it's just a small matter of programming, anyway.