Posted 2022-08-17 ‐ 8 min read
Who am I?
That's a good question and one that invokes existential dread in me (thanks to Kurzgesagt).
I'm a middle-aged guy with a Wife, 4 children and a cat.
My main hobbies include:
- Video games!
- Motorcycling and Motorsports, I hold an FIA MSUK racing license.
- Cooking, it's just like programming but with food.
- Flying my drones, I hold an A2 Drone operator license.
- Retro Computing (what a surprise).
- Electronics / Smart Home tech.
- Fabrication using my 3D Printer and CNC machine.
- Radio-controlled vehicles.
TL;DR, here's a list of languages I know
These languages I've used extensively:
- Many flavours of BASIC in my childhood and early adolescent life
- VB6/VB.NET during my education years and for some years after
Languages I've used but certainly am not an expert in:
A deeper dive into my programming history
As the site name might suggest, I'm a bit of a tech enthusiast and have spent many years of my life, professionally and as a hobby in the world of computer programming (shocking right?)
Since I was born in the late 80's I had missed the start of what was to be the personal computer revolution but that wouldn't stop me, I got into programming sometime in the mid-90s after acquiring my first microcomputer, the Sinclair ZX Spectrum.
Before I started higher education it went something like this:
- BASIC/Z80 ASM on a Sinclair ZX Spectrum
- BASIC/6502 ASM on a Commodore 64
- Locomotive Basic 2
- Microsoft GWBASIC/QuickBASIC
- Liberty Basic
That's a lot of BASIC, but it taught me the fundamentals of all programming languages like conditional statements/branching, functions/subroutines, parameters, variables, data/file storage, I/O, math and string manipulation.
During my high school education, I was taught some Turbo Pascal, a few short modules on Fortan and COBOL but the bulk of it was VB6.
VB.NET which would've been a better language to learn (C# would've been even better) was introduced at the very end of my school years, I briefly looked at Python 2.4 but dismissed it, thinking it wasn't of much use (facepalm).
2006-2012, My first job
Shortly after leaving school and joining a software development company,
My first task was to port a pair of legacy applications.
One was written in GWBASIC and the other in VB6, my goal was to bring all the functionality into a new program written in VB.NET (because this is the language the company owner used).
Partway through the task, I ran into some data transfer routines used for synchronising with a central database over a modem, we decided the best action to take would be to remove this and replace it with a proper backend system consisting of an API and a real OLTP RDBMS database.
Since neither of us had any experience writing an API, it was left to me to build the solution. The first iteration used a PHP/MySQL backend which consumed and produced XML responses in a format that VB.NET could use through the DataTable classes but this proved to be a major headache and was scrapped.
The second iteration was an ASP.NET service written in C#, once again leveraging the DataTable classes but now the response format was WSDL/SOAP and the whole Serialising/Deserialising layer was managed completely by .NET instead of me having to generate it manually.
This system was reused for a bunch of other applications that we wrote and is still in use today by the company that I left some 10 or so years ago.
I like the C# syntax and also how easy it is to use the Task system to asynchronously run code. Microsoft is pushing C# hard now that they're trying to become more open and cross-platform by way of the .NET Core project. My only hope is that they create a consistent, cross-platform UI library of some sort. At the moment unless you want to lug around Qt or even Gtk, both of which are pretty old now and don't present a truly platform-native experience, there aren't many other choices.
After 6 years at a single company, I yearned for a change of scenery so I ended up in a couple of SysAdmin roles where I found myself needing a more powerful language that I could use for automating tasks that I had to perform pretty regularly and set out to find a suitable tool,
I circled back to Python after quickly dismissing it in the 90s due to several factors, mainly that I was in my early teens so I was a bit too impatient with it, the language itself was still kind of rough around the edges and it was going through some growing pains e.g. the BeOpen controversy, but by now it was already late into Python 2's lifecycle with the third incarnation on the horizon.
As I became more and more fond of Python, I found myself building much bigger things, professionally and as a hobby, Django and Flask became the main frameworks in my projects, and many of my hobby projects (e.g. GWP) were born from this.
2018 till Today, Programming wins me back
With this newfound love for Python, I was able to advance my career greatly and grabbed myself a position at a financial company as a lead engineer where I would build REST APIs using Flask or Starlette and data processing systems leveraging Apache Airflow among many other libraries like pandas.
I have since moved to pastures new, but to this very day, Python is still at the core (for now) of what I build, powering RESTful APIs that handle millions of requests per day.
Even though Python has been a great language to use for this type of work, we have started to find as a company that we are reaching the limits of what it can scale to and that parallelism and speed is by far its biggest weakness.
From my desire to build faster, more robust software, I turned to Rust and my passion for it burns brightly.
Nearly every new project I start is now written in Rust and I have been advocating the use of it (somewhat loudly) in the workplace and have been making huge inroads to the point where we now have built and deployed several new systems written in Rust yielding fantastic results.