It is really long overdue I updated this site to be a little more friendly to Hi-DPI screens, as a first step towards this I thought I would replace the icons on the site with SVG versions. These should scale with the site once I update it to scale correctly with the screen size/DPI. Having had one of my rare flights of artistic fancy, it occurred I might as well share the icons explicitly on my site.
Initially I started out using Inkscape to draw my icons but the outputed SVG wasn't really coming out as clean and simple as I had hoped, so I decided to hand code the icons given they are all pretty simple.
I am placing these icons under a Creative Commons Attribution 4.0 International License, which basically means you can do what you want with them as long as you give me credit for making them.
Finally, although the versions here on the site are likely to remain relatively up to date, they have also had some miniaturisation done on them. I am adding the full untouched versions a repository on my Github, which is probably a better bet if you want to modify the images.
I have been playing quite a few smaller indie games lately and have found that whilst the style of these games often lends itself to using a gamepad, joystick support under Linux on these games is often quite poor. So I wrote a small program to fake keyboard events based on joystick events, thus circumventing any poor joystick support.
If you do any work in the embedded world you have no doubt come across Intel HEX files. Intel HEX files provide a text representation of binary data and are often used for programming of Flash and EEPROM parts. Each line of the file contains a checksum at the end, when manually editing the file updating the checksums is very annoying. To fix this I have written a small bit of vim script to automatically correct said checksum.
Recently my HTC Hero has developed a few faults and with it being out of warranty I though I would have a crack a fixing them myself. Quite a while a go one of the directions on my phones trackball ceased to function, now given that you don't use the trackball very often I mostly ignored this. However the touch screen then went completely nuts. The bottom 10% of the screen would often be completely unresponsive and sometimes it would imagine additional fingers poking the screen causing all sorts of weird behaviour. This, it turns out, is caused by the screen digitizer giving up the ghost; that's the bit of the phone that senses your finger poking the screen. This youtube video gives a good sense of what this issue looks and feels like if you are trying to diagnose it yourself. Anyway this made the phone rather infuriating to use, so a fix was required and whilst at it I might as well fix that pesky trackball as well.
The term embedded system is rather vague, so it is perhaps prudent to narrow our field a little. Primarily, we are focusing on very small devices, that is development on small DSP and microcontroller based systems running primarily out of the CPU's internal memory. We shall discuss this scale of system mainly because use of C++ on a 32-bit ARM processor running linux is hardly contentious. These systems are about as small as you get and often bytes/clock cycles will count. Conventional wisdom generally dictates that we should avoid the use of C++ in such systems entirely, and stick to C and assembly. Personally I don't agree, but certainly C++ must be used with care and we will not build such a program using the same style and idioms we would for a desktop application.