The "lab" subdomain was always supposed to be a repository for my projects and experiments. More exactly, a simple wiki presenting them, plus users manual and techincal documentation where applicable. However, the site itself ended up getting the treatment many of my projects get, and saw many implementations, each taking a different approach to the problem at hand. Sometimes for the better, sometimes for the worse, but hey, that's how experience is accrued.
The dates listed for each version may not be completely accurate, as I do not have an accurate recording of the site's evolution. The dates are an approximation based on my own memory, the Wayback machine snapshots, and the file creation/modification dates in my backups. Some of them overlapped in development, and I'm not certain when they were exactly deployed. Screenshots may show dates newer than the indicated version publication dates, as I resurrected most of the versions from backups, and took fresh screenshots when writing this page.
This was a simple Apache-generated directory listing with a HEADER.html to describe the directories:
Recognizing the need to develop an actual website this time, I grabbed a quick template, wrote a quick engine in procedural PHP behind it, and filled it out:
By this time I mainly moved from the web to desktop, and a place to have links to all my projects was not enough anymore. I needed a more flexible content management system, but I felt the available selection were all too heavy and vulnerable.
As a result, I developed a "wiki engine" under about 2 days in procedural PHP with the default MySQL connector. It had its issues, mostly performance ones, that's why it was pretty short-lived. This time I created my own design...
Not liking the previous design, not its backend's performance issues, I set forth to redesign the frontend and rework the backend. This time, I chose to use flat files as databases.
Page entries are now Markdown files, an idea that later became popular with the rise of static websites (GitHub pages) and generators, such as Jekyll. However, at that time it was not common to do this, I just felt this was an easy and fast way for me to manage multiple pages while keeping overhead low.
Disregard the erroneous usage of the plural for the word "software", I was just a wee lad at the time.
It even had a "print view", which tried to render the Markdown file to look more like an Office 2007 document.
It also had the ability to perform full-text search on all the files, and had a separate source and file browser.
I revamped the color-changing foreground, light background design into a constant green/blue foreground and dark background.
On a boring afternoon, I decided the website was bound a full rewrite. To go alongside, I created my own Model-View-Controller engine. I decided using Markdown was a hassle, and I'll just write HTML code directly into the database.
The fronted received quite a lot of optimization as well, since my custom MVC engine had the ability to generate CSS sprites on-the-fly, and push them the CDN. This significantly helped my habit to overuse 16x16 icons. Another optimization I was proud of was the dynamic loading of assets, such as JS libraries for syntax highlighting and LATEX rendering.
The design was mine yet again. I really liked it back then, however, now, not that much of a fan.
For a brief period of time, I ported the whole website from PHP to Python/Django. Unfortunately, hosting it proved difficult, since the hosting provider I was with in the beginning would kill long-running processes to prevent resource exhaustion. As a result, I moved back to the PHP version of the site.
The fifth iteration of the website is the one you're currently visiting. I tried to keep the design simple and minimalistic this time. It is using the Bootstrap framework for the frontend, and PHP with a custom MVC engine on the backend. This time I've decided to run a technical blog as well, alongside the wiki on the site.
As with this version, I've returned to my roots, so to speak, as pages and posts are Markdown entries yet again.
The sprite generator is not implemented this time, since (1) I'm using font-based icons and (2) HTTP/2 can easily handle transferring a lot of images, should it come to that. The dynamic loading of JS libraries is also missing, mainly because the usage of said libraries is also missing: I render the Markdown content on the server-side with syntax highlighting and MathML (for ) included.
If you would like to get a feel for the custom MVC engine running behind the site, you can check out the sample restaurant MVC project, which is the very first version of the framework this site is running.