Side projects, I've had a few.
A retrospective look back on some of the side-projects I've worked on throughout my career.
Table of Contents
Working within the software development industry can be stressful. A culture exists within industry that expects developers to work on side projects to continually developer their skills. In some interviews, developers are incorrectly judged by the quality or quantity of their side projects published on GitHub.
Those programmers who don’t have a body of work publicly available on GitHub seem to get overlooked in job interviews. Professionals who don’t contribute to open source projects are considered less worthy. This culture can lead to some highly proficient developers experiencing imposter syndrome.
Working in the health care sector, I’m not allowed to share the code I’m currently working on. Does this make me a less worthwhile potential employee?. I should hope not.
However, over the last thirty-five years, I’ve worked on a few side projects. None of them are public on GitHub though. I’ve been lucky in that some of my side projects earned me a small second income. I’ve listed some of the projects below to reminisce on the fundamentals each project taught me.
For the last ten years or so, I’ve focused on being a good parent, and for the last four, I’ve been learning to play the cornet, so I’ve had little time to work on side projects. So besides not having the time, I also haven’t been inspired to work on anything in particular.
However, I’ve recently started writing Go applications for serverless software solutions, and this has given me some ideas for web developer tools I could create and publish via API’s. Watch this space; maybe my GitHub account will see some action in 2022.
Onto my older projects…
↑XTree Clone
1995–1996
My XTree file manager clone was the first side project I developed. The program was a DOS file manager designed using Turbo Pascal. I worked in a small engineering company as an AutoCAD draughtsman, and we had several CAD workstations. I initially developed a command-line tool that accepted a project number, and the software would list all the drawings associated with that project. The user could scroll through the list of drawings to see which draughtsman had last updated them. Selecting a drawing file from the list would launch AutoCAD and load the chosen file.
I’d spend 3–4 hours two or three times a week working on this side project from home, taking revisions into work to test the following day. I had a basic 286 computer with a mono screen at home. I remember the frustrations I had coding the colour rendering routines, which I could only test at work on a colour monitor. That back and forth taught me patience and how to keep accurate notes on what I’d tried and discarded as unworkable.
Over time the software became polished and professional looking. The software mimicked the classic XTree screen layout and its use of menu options along the bottom of the screen. However, my clone had additional project related information displayed in the file listings, making it valuable.
The project taught me how to interact with the DOS operating system to perform functions like copying and renaming files. I also learned how to sort large lists of files and optimize my code for speed.
After about a year of development, my manager noticed me using the software and was impressed with how quickly I found and loaded a specific drawing document. I remember him asking what software I was using; and listened intently while I explained how and why I’d developed it. After an hour of me explaining the project, he could see my passion and allowed it to become the official frontend that all the AutoCAD operators would use in the office. The sofware was used in production for several years.
↑Availability Calendar
2000–2015
Early in 2000, I started getting into web development using PHP.
Someone I knew owned a villa they rented out during the holiday season, and they wanted a calendar function that showed when the villa was available or booked.
I developed a simple PHP solution which allowed the owner to flag which dates had been booked, thus making the villa unavailable. The availability status for each day was saved in a MySQL database. A separate PHP script then rendered the calendar to the owners’ website. The script colour coding the available dates. It turned out pretty well, so much so that within a couple of months, I had five referrals to install the software onto other villa owners web sites.
Shortly after this, I decided to package the software and sell it directly to villa owners. However, to sell the software required a certain level of polish. First, I had to write an installation script to simplify the database creation for villa owners. Second, I had to write documentation and provide a level of support.
The software started to sell quite well, and this is how I learned that not all hosting providers offered the same level of control over their services. Some even provided very insecure services. In the end, I wrote a compatibility script which owners could run against their hosting providers’ setup to ensure that the software would run correctly on their platform before they purchased the software.
Feature requests started to come in from paying customers, so I had to plan a road map for the software and develop upgrade scripts. One of the things I liked was the multilingual feature. Changing a setting in the configuration file would change the output for days and month names for several languages.
Around 2004 I was approached by a large villa agency that managed hundreds of villas on behalf of their owners. They wanted to manage hundreds of calendars from a secure login and have an availability search feature that would search the availability across all their properties. As the database schema was well designed it was pretty easy to modify the software to allow this working mode.
I was now able to advertise to larger agencies and thus charge more money. However, they wanted to try the software before purchasing it. Which was fair, as they wanted to ensure it would fit into their existing processes. So I developed an option that allowed them to evaluate the software beforehand.
In 2015 I released my final upgrade script, which extended clients’ calendars to 2020 and gave them five years to find a replacement. Unfortunately, after that, I didn’t have the time to develop the software further while holding down a full-time job.
↑k9directory
2000–2013
k9directly was probably my most successful side project generating over a quarter of a million pounds of bookings per year for the British tourist industry. I’ll write a comprehensive retrospective about this project another time.
↑Find Nearest
I was commissioned to develop a find nearest search facility for a small company. The company provided a list of stores that stocked their products, and based on the store postcodes; I’d calculate and index their geographical location. Then, a user visiting the company’s website could enter their postcode, and the search would list the stores in distance order, nearest first.
After completing the initial version, it became clear that companies wanted this feature on their websites. After the lessons learnt developing and selling the availability calendar software, I knew I was not too fond of the support overhead of installation onto a wide range of hosting platforms. I decided to make this product software as a service, running on a dedicated server I controlled.
I learnt how to manage and maintain a server which needed to be up 24x7x365 as companies were paying a yearly fee. I developed a backup solution to ensure the company’s data was kept safe. I learned a lot about Dev Ops during this time. I was learning how to patch and upgrade servers within minimal maintenance windows.
I ran this project for five years and had around fifty paying businesses using the service. The product developed to show the driving directions to the nearest store during those five years plotting the closest results onto Google maps.