Twenty(ish) years ago, I remember sitting in the main computer lab at my university with a book on the Django CMS↗ . I worked there as a printer paper refiller and lost memory stick returner (student IT team). We often didn’t have anything to do, so homework, Flash games, reading, and pet projects were how we passed our time. I had decided that I should learn how to make a website since I was finishing my degree in computer science. I made it maybe halfway through that book before I returned to Flash games. I don’t remember a thing about the experience other than it was the first time that I became frustrated with CSS.
Fast forward to my career after school. I never touched the web. The first job where I used a web communication protocol (HTTP) was somewhere in my second decade of work when microservices were taking over the industry. I remember when Node came out. I thought it looked neat, got it installed at home, and never did anything with it. At some point I got mildly taken with Ruby on Rails since we could use Ruby at work (beautiful language btw). I bought another book and never made it past the examples, though using Heroku↗ changed my outlook on how deployments should work. After working for years in the corporate world, I still had almost no knowledge about web programming.
I tried to explain this away in the usual, insecure ways: JavaScript sucks, wtf CSS (seriously), and real programmers don’t do web anyway. The reality was: I didn’t have a reason to learn the web. I’ve never been able to learn things effectively without intent, i.e. a reason to learn. Work was good at providing me intent, but that intent directed me towards their ends and away from the web. I would continue with my web blinders on until somthing changed.
Then came a couple of months ago. I was doing something seemingly awful yet really nice with MQTT configurations in Node-RED and thought to myself: this could be helpful for someone else. I looked around for a bit at article/website builders like Medium, Wix, and SquareSpace, but they all had enough sandboxing that I knew I would get annoyed. This meant that I had finally found a reason for learning how to make a website: knowledge sharing.
I can’t say that I had an amazing time learning how to make this website. I enjoyed creating a Nix language tokenizer in Elixir or figuring out how to program a Pi Pico in C far more. Both of these were tedious in their own right, but they still didn’t compare to the intricacies of the web. My main problem was: there are a million ways to do everything and I don’t know which ones I will like. Plus, with so many libraries and frameworks being used, it is often difficult to even figure out what is going on. This meant many long paths to dead end ideas. It got old, at times, developing something for hours then throwing it away because it ended up being a bad path.
But, I got through the pain. I am proud that I finally created a website that I am not ashamed to share. I have many things that I still want to change, and even more that I don’t know about yet. There is still plenty of work to do. I am sure that I have done at least one thing that would make the professional webdevs cringe, but that’s ok. I finally learned enough to make a website from the ground up.
Despite the demoralizing learning process, this was ultimately a worthwhile endevour that will hopefully pay dividends for years to come. My knowlege has been filled out in many ways and now I get more of the programming jokes. I would recommend learning the web to others who have put this off. It makes you a more literate engineer.