coding

opinion

webdev

Originally published December 3rd, 2024.Updated December 3rd, 2024.*

Giving up on AuriServe after 4 Years

Adopting an industry standard CMS 8 years after
starting my Web Development career.

(Get it, because it's being sunset?)

My journey with web development has been … nontraditional. I'm a big proponent of self-taught programming, and for me, that usually takes the form of deciding I want to create something, and then figuring out how to make it work as I go along. That's how I'm building this new site now, using NextJS for the very first time (in 2024, haha), and that's how I built my first website as well, way back in 2016. And while I'll always support the self-taught mentality, it can sometimes cause me to make some… odd decisions.

The biggest problem with self-taught programming is the lack of guardrails locking you into the best practices, which for the web, is a very narrow lane in a vast field of deprecated nonsense. As an aside, I don't think formal education is much better for this either. This year, I've been tasked to create several assignments for a computer graphics course which uses OpenGL 2, Released in the grand old year of 2004. If the goal is to actually learn to do things right, I don't think you can beat having a mentor. Unfortunately, when growing up in a town of only about 12,000 people, your options are pretty slim.

And so, for the first time I ever wanted interactivity on one of my websites, I searched the net and found out about PHP. It was great! It integrated tightly with the syntax I was already used to with HTML, ran entirely on the server side, which I was quite taken by given the anti-javascript rhetoric at the time, and it was simple. No build systems to worry about, no runtime that I had to maintain on the server end, it just triggered when you hit a page, and the output got sent to the user. That was it.

Remember what I said about guardrails? If I was being taught by anyone worth their career, they would have told me to get as far away from PHP as I could. And to their credit, there were people at the time on StackOverflow comments and forum threads begging people to please, please not use PHP. But when it's just random folks on the internet, they all tend to have the same weight, and when searching "how to do X in PHP", there were a lot more posts solving my problems than posts telling me to in-god's-name please do anything else.

So I stuck with PHP for several years. Almost3, if I recall correctly. In that time, I started my very first real job, doing freelance web development and creating questionably designed websites for local businesses. And eventually, I had a little collection of real people's websites that I was maintaining entirely using my own hand-rolled PHP, which became far from maintainable as my portfolio grew. For the folks that aren't cursed with the knowledge of why PHP is a mess, it's the language that graced us with variable variables. And don't forget variable variable variables. (variable )+variables? Take care not to try using them with Superglobal arrays or $this, whatever that means.

Yeah, PHP is a walking disaster, the code equivalent of a house of cards in an earthquake, and around 2019 I had half a dozen sites for real business clients running on it, and it was getting increasingly time consuming fixing them when they fell apart. And so I had one of those ideas, the ones that seem great at the time until you look back and say oh, that's why my life ended up this way. I decided to build my own Content Management System. Think Wordpress, or Squarespace (sorta). A framework for building and running sites in a maintainable, scalable way.CMS. From scratch.

Creating From Scratch

You see, I have these brain-worms that don't let me take advantage of anything anyone else has made ever. Whenever I create anything I just get this insatiable urge to start from nothing, build up every piece, and know that everything in the system is mine. Look at my Voxel Engine, Zepha, which I've built from nothing in raw Vulkan, still incomplete after nearly 6 years. Or the videos I've made about it, where every animation you see was written in code, instead of just using After Effects like a normal freaking person.

To be fair, it's a bit of a dual-edged sword. Doing things from scratch strays so far off of the programming happy-path that you basically end up on a different planet, but it also makes you learn a lot, really fast. I can confidently attribute my skills in writing code, and the opportunities I've gotten because of it, to reinventing the wheel like this. You end up with such a wide breadth of knowledge that you never would've learned if you'd just used the pre-made tooling other folks made. But, it also ends up creating a lot of really janky code. Zepha has been rewritten over and over, and at this point, it's hardly got a line of code from the original version. But that's fine, because every time I refactor, I learn more things, and it's not like I'm on a deadline. The only person whose expectations I need to meet are my own. But when you have clients breathing down your neck about features you promised them a year ago which are still in the conceptualization stage, things get a little murky.

Client Expectations

AuriServe, my self-made CMS, had big shoes to fill. I was mostly working with a bunch of non-technical business folks who just wanted an interface like Wordpress that they could poke around in. Make that image 10px wider, or update their business hours, etc. And so that's what I promised them. I promised them a CMS that looked and felt like Wordpress. It would have an admin panel, user permissions, block-based page editing, automatic media management and optimization, analytics, the whole suite. And I was going to build it all from scratch. Did you guess that it didn't go to plan?

Now, you'll never hear me call AuriServe a failure, at least not on a personal level. It failed to meet the needs of my clients, absolutely, but I learned so much from its creation, and got to experiment with several novel web-development techniques in the persuit of creating the best CMS I could make. But that's not what anyone I was making it for cared about. The block-based page editing never came to fruition. Even today, when I make updates for my clients, I go into my own proprietary JSON page format shift blocks of code around. And it sucks. Media management similarly never got a functional UI, although I did implement some really interesting tech for font-subset-inlining which I need to make an article about at some point. Analytics & user permissions just never got going at all, and still to this day the only person who uses the admin panel is me.

The only credit I can really give it is that hey, it works. In some instances, an AuriServe server has run continuously for over a year without fail. It handles system reboots great, and very rarely do I actually have to go in and fix a stability issue with it. But it's basically just a big clunky version of PHP with a bit of asset management, and it's awful to work with.

Making Web Development Fun Again

I've been in denial about this for a while. I don't really do new web development projects for clients anymore, but when I have to load up an old client's site to make changes, I find myself filled with dread. It's just so frustrating to work with this system. Every bit of it fights me every time I want to do anything, it's too rigid. And on my own front, I haven't updated my own personal sites in years! The only live website for me at the time of writing still says I'm 17! (But thankfully, that'll be dealt with by the time this article is published.) I've avoided any sort of web-dev for myself for so long because I thought I'd just lost interest in the medium, but I've realized that that's not the case at all. No, I've just lost interest in the technology I'd boxed myself into.

I love the web. All of it's quirks, flaws, infuriating behaviours feel like mine to control. I feel like a wizard when I have to debug some rendering issue and I pull out the arcane knowledge of stacking contexts, nearest-scroll containers, scroll margins, and subgrids. When I just get to mess around with React and Tailwind I have the time of my life. But working with AuriServe isn't web development. It's appeasing an unwieldly machine that's constraining me to its mad designs. The difference in my outlook between working with it and working with anything else is shocking. When I make games in React in 48 hours for Ludum Dare I have the time of my life! Hell, even the horrible Lit-HTML stack I use at work is tolerable when I get to sit there and mess with elements and design something pretty with it. I just can't work with the constraints I've made for myself anymore. It removes all the joy from it.

So what now? What to do with this newfound understanding that I want to work with the web again? Well, make a new website, obviously. Yup. I'm going to build something beautiful again. Somewhere that makes me feel like I have a home on the net for the first time in 5 years. And I'm going to do that by adopting a tech stack that actually works. If you're reading this article, you're seeing the results of my efforts. This site your on is a turning of the page for me. A new beginning on the web. I want to experiment with new exciting technologies, and create quirky things, and I'm going to do it here. So please, take a look around and let me know what you think. I think I'm going to like it here.