My journey through the tech world

Updated: July 14th, 2022Published: September 3rd, 2003
Time to read: 7 min

Article tags:

What I've previously worked with

In reverse chronological order as well as some reasonings why they aren't that relevant anymore.

While I still know some of these technologies very well, there is a separate blog post about the technologies that I primarily currently work with. As typical in the IT consulting world, some of these technologies I've worked with extensively while others I've only used for a few projects.

Gridsome

By the end of 2010s, as JAMStack was gaining popularity and processing was moving evermore from the server backend to the browser, Gridsome was a popular vue.js-based framework for building static websites. The lack of development activity made the framework quickly obsolete and was replaced by, among others, Nuxt framework's static output abilities.

Django, Docker, VPSs, monoliths

By the late 2000s, after over a decade of PHP programming, I made the shift towards Python 3, mainly due to the shortcomings of PHP detailed below, and because it fixed many of the inconveniences of Python version 2. Python had indeed already existed for quite some time at this point, but the advent of Python frameworks such as Django made web application development a delight. At this time, nginx was also rapidly conquering market share from Apache and I made a shift towards working with that instead, mainly due to the convoluted design choices of Apache 2 and XML-based SOAP, and the raw speed benefit that nginx offered and which the now popular REST-based microservices craved.

While Django is still maintained and supported to this day, by 2020 the design philosophies had shifted away from monolithic application structures, where the presentation of the web application is generated on-the-fly on the backend. This makes some of Django's main selling points, such as the templating system, obsolete. While you could run Django headless, the lack of a built-in REST API framework is also a weakness, which albeit can be remedied e.g. with DRF or Tastypie.

Still, the media and static file serving for modern cloud purposes is also quite lacking without any extensions, all of which leads to the situation that frameworks like FastAPI, where also async operations are a first-class feature, are better suited for modern web app development.

For source code management, Subversion was already mostly replaced by the advanced features of Git by 2010.

The typical deployment of Django in a VPS with the uWSGI application server has largely been superseded by containerized workloads and serverless deployments. With the uWSGI development stopped in 2023, I primarily use gunicorn when WSGI is still needed. I still do work a fair bit with VPSs as well, but mainly for Kubernetes deployments and workloads that cannot be containerized.

The first wave of containerization with Docker as the forerunner has largely been replaced by OCI-compatible tools like containerd.io.

PHP, Zend Framework, jQuery, SOAP, SVN

At the turn of the century, when the rewritten PHP 4 powered by Zend Engine offered a reasonably stable development platform, the web in general as well as the companies I worked for made a shift towards that. I became quite familiar with frameworks such as Zend Framework and also architectural design patterns such as OOP and MVC, which were essential for developing softwares at a large scale. MySQL was a popular choice, but clients in growing numbers started to adopt MariaDB and PostgreSQL due to the concerns they had over MySQL's licensing model.

During this period, due to the ever-increasing team sizes of software developers, I also became acquainted with software development methodologies such as Scrum and Kanban, which remain popular to this day. Atlassian tools like Jira and Confluence also gained popularity in many of the companies and clients that I worked for.

Frontend development saw some advancements with frameworks such as jQuery becoming popular. While offering major improvements at the time, jQuery is very limited compared to modern frameworks like vue.js and is very seldom used anymore.

Advancements in SCM technology lead to the adaption of Subversion (SVN) instead of CVS, which suffers among other things from the inefficient per-directory repository storage.

While PHP is still today very much alive and kicking, it suffers from some inherent issues that in my opinion make Python a better choice overall and why I've shifted towards that. Mainly the poor support for serverless deployment, the inconsistencies of the language itself, troubling history of security flaws, the heavy reliance on frameworks as well as the lacking capabilities for developing anything other than web applications, e.g. CLI and IoT applications, simply make other programming languages more attractive.

The main reasons why I deal with PHP these days is for the odd Wordpress project or for porting PHP applications to Python.

Exim, Dovecot, MyDNS, Funambol

Exim and Dovecot can be paired to form an e-mail delivery system using SMTP, POP and IMAP. At the turn of the century e-mail was very popular, and I maintained several clusters of e-mail servers with various application integrations. These clusters were often paired with Funambol or Baikal for CalDAV and WebDAV support, enabling the clusters to work as groupware.

Since both e-mail and websites need DNS to work, I was tasked with maintaining DNS servers built on top of MyDNS. These were phased out by the 2010s as hosting your own DNS server makes very little sense nowadays, and you're better off simply using a cloud offering such as AWS Route53 or Cloudflare, since these make it easy to e.g. set up DKIM, SPF and DMARC records or even e-mail forwarding.

E-mail delivery solutions have become highly centralized and in most cases it does no longer bring any value to run self-hosted mail servers, at least ones that are external-facing. Quite the opposite, the maintenance burden often outweighs any potential savings since feature-wise there is little to gain.

That being said, e.g. some requirements on at-rest encryption might warrant the use of solutions like EteSync.

Perl, Apache, MySQL, BSDs, CVS, physical servers

I started my professional career in the mid- to late 1990s as an IT consultant, as that was all the rage at the time. PHP did in fact exist at that time, but was not yet mature enough, so most of the server side development took place using Perl/CGI or even SSI for simpler use cases. At that time, Apache version 1 was the de facto web server and the choices for relational database servers are pretty much the same as today - PostgreSQL and MySQL. Linux and FreeBSD were obvious choices for deploying this stack on. The BSD-based distros are still around, but with Linux being so much more popular and portable I've focused my efforts on Linux.

The frontend side of the web was very limited at this point; HTML3, basic JavaScript and basic CSS.

Physical and dedicated servers were also popular as the cloud was still not that developed and processing power was limited by hardware constraints. I no longer work on physical server hardware due to the fact that the cloud has almost entirely replaced it for the kinds of software deployments that I do.

Years down the road, I had a client reach out to me and I stumbled upon some old Perl 5 code written by myself, that had been happily chugging along for 17 years in production without incidents and probably would have kept going, if it weren't for the EOL version of Perl that they were running. Nevertheless, a testament to what good software design and regular infrastructure maintenance is capable of.

That is also the last time I've seen or touched upon Perl and CVS in production, i.e. around 2012. The unintuitive syntax and the seemingly endless development cycle of the next version of Perl - Perl 6 - made other languages such as PHP more usable and developer-friendly.

Borland Delphi, C, DOS

Before my professional career, in the mid 1990s, I studied Borland Delphi 2, a general-purpose dialect of Object Pascal for creating Windows 95 applications and Borland C for creating DOS applications. This was still a time when web browsers and the related technologies were not yet readily available. I switched over to web development in 1996, when Netscape Navigator 3.0 was released.

The first MS-DOS I used was version 6.22 accompanied by Windows 3.1, around 1993, having made the switch to PC from a Commodore 64.


About the author
I'm a millennial digital nomad and a seasoned IT professional with over 20 years of cross-industry experience, ready to help you with supercharging your business. Drop me a note or read more about what I can do for you!

MY FULL CV

This website is only intended to provide a quick overview of what I do. Please drop me a line if you'd like me to send you my full CV, references, certifications or any additional information.

NEWSLETTER

Subscribe now to get notified of blog updates (no more than one email/month). No spam, promise!

Unsubscribe at any time. Signing up implies that you agree to the Terms.
This blog contains affiliate links to third parties. By using this site you agree to the Terms.