I’ve been developing since 1995 — Amiga games and early websites — and continue to explore the digital frontier.
- Web sites : Company, personal and community sites
- DevOps : Docker/cluster/cloud -setups, infrastructure design, old-school monolith servers
- Back-end : Analytics, Tracking, Warehouse, Booking, CMS
- Front-end : Presentation, SPAs, Fora, Mobile Hybrids
I’m a big fan of modular design, the UNIX philosophy, and I’m generally fond of higher-level languages where design and functionality are given more weight than system sitting.
In my spare time, I get excited about sci-fi, horror and philosophical/psychological fiction, I love art that breaks with established norms and I’m still waiting for the internet to change government structure.
My life with computers
ZX81
My history with computers started with the Sinclair ZX81. One of the first home computers on the market, it boasted a 3.25MHz processor, 24 lines by 32 character graphics and 1KB of RAM, which I upgraded to a whopping 16KB. Personally, I didn’t find it the most useful computer as I didn’t have the external tape recorder to store programs on. Still, it fascinated me, and by forcing me to type in any program I wanted to run first, it introduced me to BASIC programming.
It was quickly replaced by my favourite computer of all time: The Amiga 500.
Amiga
I got my Amiga in 1994 and would continue to use it exclusively until 1998. In that time span, the Amiga introduced me to and taught me to create 2D and 3D graphics, which ended up getting me my first tech job as a 3D modeller. The Amiga got me into computer music and sampling through its incredible trackers, which later made me get my audio engineering degree. It let me develop shoot-em-ups and simple platformers in AMOS and Blitz Basic, and finally, it let me create my first couple of websites using CygnusEd and Deluxe Paint IV, which got me into web development. Having tried Quake on a friend’s computer (which also led to me picking “Cybolic” as my in-game nickname), I did begin to consider getting a PC and finally got one in 1998.
Linux
My switch to a Windows-based PC in 1998 didn’t last long. The advent of MP3s and DivX files meant I was quickly dissatisfied with the performance of Windows 98. After all, what use is switching to the evil Intels if you can’t play with the latest media types? I purchased a disc with Red Hat, then tried Suse and Mandrake and eventually settled on Debian. At that point had gotten comfortable with Linux to the point where - despite the PC not being powerful enough to play an MP3 in Windows 98 - I could play all my media files in Linux without them skipping (even if it was only from the terminal in SVGA), causing me to erase my Windows partition in 2000 and run Linux exclusively from then on. These days, my main PC runs Arch, but I change distribution on my laptop every so often.
My software history
After switching to Linux, my first personal piece of software was Gryphon.
In those days - before streaming and library media players - I wanted to be reminded of the cover art of the CD I was listening to. Since cover art images weren’t a thing yet, I wrote a CD player application with built-in styling support. This enabled me to write pseudo-HTML code for the tracks and the album in general so the track listing could be similar to how it looked on the CD cover.
Gryphon also spawned the first (and still only) 100% Python CDDA access library, CDLow; though Gryphon is largely deprecated these days, CDLow is still in use in other projects.
I’m a bit of a film fanatic, and around 2005 I had several hundred films on DVD and VHS and desperately needed a way to track them. Who I had lent them to, which were getting unplayable (physical media…) and especially something to help me pick what to watch! So, I created CeeMedia, a catalogue application specifically for films, with automatic info and cover retrieval from IMDB, Amazon and other sources; physical media tracking and per-media content descriptions; related film lookup and a nifty film suggestion feature. Eventually, I migrated to digital backups and Plex, but CeeMedia still has its users.
My next project was again a personal itch I wanted to scratch. I love music and audio engineering, and having fallen for Cockos’ Reaper, I wanted to work with the program as if it was a native Linux program, so LinReaper was born.
I built LinReaper as an automated installer, a wrapper and general XDG desktop integration using Wine and Python, quite similar to Google’s early Picassa “ports” for Linux. Even though it hasn’t seen any significant development in years, it’s feature complete, I still use it, and it’s being used to run Reaper in several professional studios worldwide.
After getting used to how nicely Windows programs could integrate into Linux using Wine and a bit of programming, I wanted to extend the ease of use of LinReaper to all Wine’s uses. In 2009 I started working on integrating Wine better in the Gnome/Ubuntu desktop so that Windows executables could be easily managed through the file manager (Nautilus); the system would recognise auto-install executables on CD-ROMs; Wine could be configured from System Settings, etc.
This work soon became the foundation for Ubuntu’s own Wine integration plans, but unfortunately - despite getting some media interest - it was never completed as license politics got in the way, and Wine couldn’t be required or suggested by a main package.
Not wanting to let the work on the Ubuntu Wine integration go to waste, I reconsidered my plans and started working on Vineyard as a general-purpose Wine configuration and management tool, similar to TransGaming’s Cedega/WineX or CodeWeavers CrossOver. Vineyard soon supported all configuration options available in WineCfg and later added the most common registry hacks, support for WineTricks and Wine process management. To help let the various Wine utilities work with the same data, I got together with Dan Kegel and started the Converged Frontend standard. This was completed with the help of Austin English, Quentin Pâris and Pavel Zinin (Павел Зинин). This discussion also led to the Unified Prefix standard, a standard for writing Wine prefix data. Currently, only Vineyard uses the full spec, while Winetricks and PlayOnLinux use a subset.