On a recent episode of Linux Dev Time, the hosts talked about some of the past coding projects, oldest, most elegant, most popular, most important, and so on. That got me thinking about some of the things I've written, and I even remembered something I'd forgotten about (dynmenu) that I think is ace. So here are some of my past projects:

getcddb

Written in Blitz Basic for the Amiga, this is the most exotic program I have on my list here.

Between around 1995 and 1998 the CDDB service offered a free way of getting a track listing for a CD by reading track length information from the CD. There was GPL code available and it was community oriented.

Sometime during that three year period I wrote a command line tool getcddb which would query the CDDB database for your track information and used it with my sloooooow 2x speed CD drive. I submitted it to Aminet, so it's still available today, although it doesn't work because the original service is offline. Amazingly, I found a reference to someone trying it in 2008.

Scorpion cards

screenshot of a card game

Written in Visual Basic 6 on Windows, this is a patience card game. I don't think I've got the source for it any more, but it still runs! I've packaged it as a snap. Type computer in to the window and it will play games for you.

DynMenu

dynmenu context menu

On Windows (ignore Windows 11), if you right click a file it brings up a menu. Depending on the file type, there can be extra entries - like extracting a zip file. DynMenu lets you add your own extra menu items for when you right click on a .dym file.

It always adds an "Edit Menu" menu item, which brings up the gui to edit the .dym file. The really great bit is that it knows which file you're right clicking on, so it parses that file and then adds extra menu items based on the contents of the file - hence "dynamic menu". The editor lets you add extra menu items in a tree and assign actions to the menu items. You can also add your menu to the system tray.

I still think this is a genius idea.

ralcalc

This is a proper "scratch your own itch" program. I wanted a calculator that I could use at the command line, and that supported SI prefixes. That's ralcalc! I have it set up with a symlink = pointing to ralcalc so that it's easy to run:

$ = 1/1M
1/1M = 1u

I use this almost daily. Not packaged as a snap because they don't allow = as an executable name, for shame.

gds2pov

3d render of a pixel chip layout

gds2pov is a tool I wrote during my chip design research days at the University of Nottingham. It converts the chip layout gds2 file format into a 3D renderable POV-Ray file. The image is a render of part of a pixel layout. It saw a bit of interest in a niche community and occasionally pops up in various places like research papers, and one time on the cover of some training manuals on a course I went to.

The IC Design Group at the University of Twente took this code and made it into a 3D viewer application which is much more usable. There is a youtube video demoing it.

failgrind

Failgrind is a tool for Valgrind that simulates memory and syscall failures in a deterministic fashion, by keeping track of the call stack and only failing a particular allocation/syscall the first time it sees it. It's quite a lot of effort to use, because it can take a lot of runs to get to an interesting part of the program, and allocation failures anyway often cause the program you are testing to exit safely. You want to find the cases where there is a crash out of all that.

The documentation states:

As an example, testing the ssh command connecting successfully to a remote server took approximately 400 runs of Failgrind, saving nearly 3000 call stacks in the process, and making 10000 allocations in the final run.

I'm particularly pleased with it, despite this, because it's a contribution to an external project and I think I've done a good job - it has an extensive set of options, integration with the Valgrind gdbserver, Failgrind specific client requests for integrating into tests and the documentation is complete.

It's available for current versions of Valgrind by installing the snap version.

Oldest

I've remembered the oldest bit of code that was something vaguely worthwhile, although it was just for me for fun - a brownian motion simulator in Turbo Pascal for Dos. This jiggled around a load of o characters at random in the x and y direction, and simulated them moving up and down in the z direction by changing the grey scale. Kind of pointless, but it went hand in hand with the physics I was learning at college, so this would have been around 1995.