Running Linux on an iPAQ

IBM has posted an article on its developer site about running Linux on an iPAQ.

I have had my iPaq, a 3835 model that I picked up cheap in an online auction, running Linux for a couple of years now. My installation is now a bit out of date, but it runs happily with my Linksys compact flash Wi-Fi card in the sleeve. It is a little bulky by comparison to the newer models (mostly because of the need for the sleeve to get the CF slot).

If you have an iPaq that you no longer use on a daily basis, either because you have moved on from the whole PDA scene, or simply because you have upgraded to a newer model, running Linux on them can be a fun experiment. Not something for the novice yet though.

If you want more information, check out the excellent resources at handhelds.org. You will find all the software you need there to save your PocketPC installation and install Linux, as well as detailed instructions for every supported model.

Cell Phone with Built-in Hard Disc

The folks over at Tech Digest report that Samsung has debuted a cell phone, the SPH-V5400, with a built-in 1.5 GB hard drive. As well as an integrated 1 megapixel digital camera, it also includes an MP3 player and an FM transmitter. Yes, transmitter! It can transmit those MP3 files over FM to a nearby receiver, such as the one in your car. This is a feature that other MP3 players could do with.

So, why buy a standalone MP3 player? Well, I can still see a couple of good reasons:

  1. It is still a very small hard drive; the iPod mini is 4GB and the new Creative MuVo2 is 5GB (it will also be shared with the camera, so it is going to fill up fast too if you use both features a lot)
  2. I don’t want to have to convince the aircrew on my next flight that the cell phone is off while I listen to MP3 tracks from it (even assuming it has a mode where the phone portion is off)

Engadget has pictures of the new phone for those interested.

Ping-o-Matic!

Ping-o-Matic! is a service that can be pinged when a new entry is added to your blog, and they will then ping a number of other aggregator services.

“So what?” you ask… well, they also have a list of the last 100 sites that pinged them. I spent a very long time just selecting a link, opening a new tab and going to the link. A few don’t work, a few are in foreign languages, but most are blogs to check out. Some personal, some small businesses. The only down side is that they are not clickable links at the moment.

For clickable links, you could try weblogs.com instead (Ping-O-Matic! pings weblogs.com).

Update: Seconds after posting this, I try to go back to weblogs.com and I am presented with a username/password box. I guess that they are having server troubles (it is an MS IIS that they are running on according to the error I got by not giving them a username/password).

Canon EOS 20D Digital SLR

Having my little Canon PowerShot S100 travelling without me, I was once again thinking about buying a digital SLR. My original thought was to get a Canon EOS Digital Rebel. While I was in Japan earlier in the year though I saw that they had a black version which I liked more. Why they don’t sell that in the US I will never know, but knowing it was available kind of put me off buying.

Anyway, I went looking again the other day and noticed that Canon had launched a replacement for the slightly higher-end EOS 10D in the form of the EOS 20D.

The US site is surprisingly lacking in detail at the moment; the Japanese site contains much more information, including a comparison with the Rebel (called Kiss in Japan) and even three sample images.

It is an 8.2 megapixel sensor (instead of the 6.3 megapixels in the 10D and Rebel models). That means images of 3520 x 2344. It also has next generation of the DiGiC image processor, and a USB 2.0 connection for higher speed uploading of your photos.

On the downside, they do not appear to be in stock anywhere at the moment, and it is not cheap at around $1500 without any lenses 🙁

Moved to WordPress

The blog spam finally annoyed me enough to switch from MoveableType to WordPress. It took a little while to get everything the way I wanted it.

I started by installing it in a separate directory that I could play in while I got the various things sorted out. Installation was trivial following the 5-minute install instructions. After that I spent a long time working on the style sheet to get it to look close to my old MT one, and a few moments working on the index.php file.

Finally, I had to import all the old entries from my MT weblog. This took a few attempts to get right, but with some patches for both MT and WordPress from DrBacchus’ Journal and a slightly modified version of the Apache re-write engine rules from the same site, I have all the old entries imported and hopefully all the magic in place to fixup old links.

For those, like me, that have to use the .htaccess approach to the URL fixing, here’s the content of the .htaccess file I placed in my blog’s home directory:

# Movable Type -> WordPress fu
RewriteEngine On
RewriteRule ^archives/([0-9]*).html index.php?p=$1 [PT]
RewriteRule ^archives/([0-9]*)_([0-9]*).html index.php?m=$1$2 [PT]
RewriteRule ^index.rdf$ wp-rss2.php [PT]

That seems to allow the links in search engines at least to find their way to the new home for my old entries (if you find any that are broken please send me the link). It also works for links using my sub-domain link mechanism.

Now it is all in place, and I hope working. WordPress has a number of options for dealing with the blog spam too (some of which are available in newer versions of MT too, but there were just too many hoops to jump through to get a newer version of MT).

SMS

Finally, the US is starting to catch up with the rest of the world. My girlfriend flew out of San Francisco to Malaysia (via Hong Kong) yesterday. She took her T-Mobile GSM cell phone with her, and actually managed to send me a text message from Hong Kong airport when she arrived there, and then later on another one from Kuala Lumpur confirming that she received my text messages.

Seven years ago I was lucky enough to take a cruise from Hong Kong to Singapore. Most of the Europeans on the ship at that time were checking their text messages, voice mail and even making calls on their GSM phones every time we docked. A year after that I arrived here in the US to find that GSM was still new technology, and that it operated on a different frequency making the handsets incompatible with the rest of the world. Doh!

At last the handsets are mostly multi-band, so American residents can start to discover the joys of taking their phone with them on trips. And slowly the networks are linking up so text messages can be sent to anyone from anywhere. Why send text messages? They are much, much cheaper than the international roaming per minute charges! You can let friends and family know you are safe, or ask them simple questions for just a few cents. The message also waits in their phone for when they wake up (handy when you are in a time zone 8 or 9 hours away from them).

I’d give it another year or so and the US will have finally caught up with the rest of the world. Now if only they’d get over the whole NIH syndrome thing around CDMA (you know, the phones that still need a mile long antenna to work) and accept that GSM is the technology that works we’d all be better off. Verizon’s network may be better in the US, but I guarantee my little Nokia GSM handset will work in more places in the world than any Verizon one will!

Sirius Radio

I was channel surfing on my Dish Network system the other day when I noticed that I a whole block of new radio channels all prefixed with the name Sirius. Some research on their website and I discovered that I now have 61 commercial free digital radio channels from the Sirius network. And they’re not bad (some of the DJs can get a tad annoying). Almost tempting me into getting a unit for my car.

Classes of Software Author

Why not start Saturday with a rant? Not an ordinary rant though – this one is about the way people write software, in particular the class of software that I come into contact with more than any other: embedded device software.

I have concluded that there are different classes of people writing this kind of software professionally. The three I most commonly encounter are:

  1. Software Engineers
  2. Computer Scientists
  3. Hardware Engineers

Each of the three has a place in the software food chain, but it is important to understand where that place is, and what limitations they have due to their background & training.

For example, a person trained as a computer scientist will tend to focus on the elegance of the algorithm. A software engineer will be looking more at how to take an algorithm (or more likely a number of them) and produce an efficient, reliable and maintainable application from it. Hardware engineers seem just throw something together with little care about the algorithm or the quality of the implementation (“as long as it works what’s the problem?”).

So, where do they all fit in the food chain of software? I would like to draw a parallel with other kinds of science & engineering here. In a research laboratory one would generally look to employ top notch scientists to concentrate on new ideas and concepts. I would expect computer scientists to end up in the same kind of role for software. Engineers, of whatever discipline, take the results of the research and apply some specific real-world experience to it to make products that people can rely on. Whether it is bridges, electronic devices or software, the same basic expectation is present: it must work, and keep working. Unlike a research lab. where failure is expected some of the time, in the real world that is usually unacceptable.

What about hardware engineers? Well, to be frank, they just don’t belong in the software food chain. That’s not to say that they shouldn’t be writing software, just that none of the software they write should ever leave the confines of their workspaces. It is odd that a group of people who are so precise and careful with hardware designs (they are engineers after all!), are generally so bad at writing software. I can only put it down to a lack of training.

How can one identify members of each class? Well, there are some tell-tale signs in the code they write (again, these are broad generalisations, so expect exceptions to show up from time to time):

  • Computer scientists seem to avoid comments, rely heavily on language and compiler features, and rarely worry about validation of parameters or error conditions (and when they do, they normally handle it by aborting everything). Alignment, endianess and other ‘hardware-specific’ aspects are just not on their list of concerns (“doesn’t the compiler handle that?”).
  • Hardware engineers might write comments, but not often. They may test for error conditions, but inconsistently, and they will probably abort rather than handling the error in the application. They also tend to ignore indentation, remove as much white space as possible, and will have a tendency to just throw something together first, then make it work afterwards, if possible.
  • A software engineer will tend to work out a design, at least in their head if not written down, will have a defined error handling mechanism for everything, and will avoid the use of ‘clever’ language features and compiler options that might not be understood by everyone, or portable to other systems. The better ones will write code defensively to prevent future maintainers from making mistakes as well (such as always using braces even when there’s only one line in the block, or using parentheses to make the order of expression evaluation clear). Comments will be everywhere, and whitespace will be used to improve readability. Expect to see support for endianess, and care taken with the likes of structure alignment and packing.

Is it really that black & white? No, of course not. There are numerous people who were trained in one of the three disciplines but have managed to cross over successfully. Unfortunately, there are just as many who think they have done so, but really just continue to write software the way they always have.

Many good software engineers studied Computer Science at university, so it is not as simple as looking at the title of the training course they followed. Depending on the university, CS may be a very ‘pure’ course (e.g. Cambridge in the UK) or perhaps a more practical one. There are also courses with names like Computer Systems Engineering, or just Computer Engineering, at many universities now.

How am I qualified to make this rant? Well, if I need to be qualified to rant about something, I think that my Bachelor of Engineering – BEng (Hons) – degree in Computer Systems Engineering from the University of Kent, at Canterbury, UK would be a good start. Then I am also a Member of the Institute of Electrical Engineers and a Chartered Engineer. Finally, I’ve been working with software for embedded systems (ranging from military systems that cannot crash, ever, to consumer devices that people do not see as computers, so do not expect to have to reboot) for over ten years now.