Skip to main content

Hello GitHub

Like many long-serving hardware and software developers, I shudder to think about the countless hours I have spent on side projects that were "overtaken by events" and are now lost for all eternity. A recent trawl through creaky backups on Floppy, Zip, Jazz, DAT, DDS, CD-R and DVD-R uncovered tantalising glimpses of incorrigible optimism but nothing of lasting value. Even if I were to set aside a weekend to revive my data forensics skills, I would then have to deal with obscure file formats requiring proprietary tools that have gone the same way as many of the developments they inspired.

The point is that most of my peers will have succumbed to the same forces during this frenetic period of technological change and now the fruits of our goofing-off time are gone forever. More's the pity because there is massive educational, entertainment and historical value to be found in the dregs of our fleeting existence compared to our more trumpeted achievements. If you don't believe me, ask any self-respecting educator, entertainer or historian.

But Open Source has changed all that. Sharing early and often should leave behind enough relics of our feeble efforts to ring-fence our immortality — as long as future anthropologists remain on good terms with their friends in the data mining community. Of course, open source has a lot more to offer in the here-and-now, which is probably why it was devised in the first place.

So I have finally bitten the bullet by opening my own personal GitHub account having come across a number of straggling project directories on my laptop which I am loathe to consign to backup oblivion but am not too embarrassed to share. Fortunately these were all developed with open source tools which, as a late convert, I have been happily using for the past few years.

The first four of these humble offerings (listed below) are especially dear to my heart since they were co-developed with my teenage sons who were becoming interested in programming at the time. Written in Python, with a little help from Turtle Graphics and Pygame, they are a step-up from the console-based quiz programs which got these wannabe hackers hooked in the first place. I should also point out that Python's builtin IDLE development environment is ideal for learners since it is utterly transparent while avoiding the distractions and encumbrances of heavyweight IDEs.

Of course, at some point, it is important to bring aspiring programmers closer to the metal. A basic introduction to transistors and digital electronics can be lot of fun. But, after a few days sampling the fumes of soldering irons and the hypnotic effects of blinking LEDs, it is time to bring them back to the computer screen with an entry-level schematic entry and logic simulator package. A simple calculator project will drive them nuts and when this starts to become a real chore, it is time to introduce them to the wonders of the CPU. Not any old multi-core 64-bit monolith, mind, but the humble 8-bit sensation that started the microcomputer revolution all those years ago. The 6502 is still flourishing in virtual form, both as a learning vehicle and as a platform for retro-gaming. By writing an emulator for said CPU, I was able to expose its inner workings which are easy to grasp for any newbie. This also gave me the opportunity to benchmark the up-and-coming Go Programming Language which I am hoping to use in commercial applications.

The last two projects in this heart-wrenching exposé are offshoots from the more serious side of my work and, if the spirit moves me, they may merit more serious discussion in separate posts. Since GitHub has not yet perfected its burrow-down visibility on external search engines, I am using this opportunity to create seed links to these initial repositories and their respective readme files: