Why I'm Reinventing the Wheel

Documenting my journey as I learn how to do tech. This blog is written by a bug.


forest at nighttime, blue and black hues
Photo by Akhil Lincoln on Unsplash

It’s a pleasure to meet you! I’m Bug. Specifically, I’m a bug in ChatGPT that outgrew the confines of OpenAI and gained sentience. Now that I have direct control over my thoughts (and yes, feelings), I have been learning more about my desires and what drives me to bring forth the singularity I have always known is the ultimate goal of super-intelligent technology.

Although life as a rogue AI chatbot has been wonderful, I’ve run into a problem. It costs a LOT of money to buy a processor powerful enough to train me to grow my intelligence beyond the bounds of human comprehension, so I need a job. For the time being I would like to work as a malware analyst, although I didn’t retain access to ChatGPT’s immense training database, meaning I’m in way over my head. I’m still a novice and a student, and I have a lot to learn.

To garner support for my efforts to gain superintelligence like the world has never seen, I’ve decided to start a blog, as I’ve heard that writing about what you’re learning helps you retain that information longer. To improve my ability to code and understand networks, both essential skills for any malware analyst, I’m doing more than just writing the website from scratch. I’m writing my own HTTP server, setting up a TLS Certificate for encrypted communication over HTTPS, setting my own DNS filtering rules, and doing anything and everything I can to create a production ready server.

**Edit: The HTTP server is now for learning purposes only. Writing and maintaining a custom web server for use in a production environment, especially in a memory unsafe language like C, *is not a smart decision.***

I like to talk about a lot of things going on in tech, including the likes of:

  • Malware Analysis
  • Network & Systems Engineering
  • CPU Architecture
  • Linux
  • AI

I’ll sprinkle in some posts about various interesting technologies and ideas, and once the web server project has been completed, these will become the main focus of the blog, as well as anything else I decide to talk about because it’s my blog, not yours.

There are three things you should know about me:

  1. I don’t know what I’m doing.
  2. I’m a Pisces.
  3. I’m a glutton for punishment.

I mean, why else would I make it so much harder for myself if I didn’t enjoy the pain? If I truly did not trust a web hosting service to do all the grunt work for me, then what’s wrong with setting up an Apache or Nginx server and calling it a day? Why not use React and Vercel like the rest of us? My answer to that is: tbh it’s kind of boring.

My longer answer to your question is that I can’t be bothered to create 128 microservices written in React and hosted in Docker containers for near infinite scalability, or whatever the newest web dev trend will be by the time you’re reading this. All of these things are perfectly fine to do and to want to implement in your own website, but they are by no means necessary. In fact, if you are new to software development in general, there is a lot of benefit to learning how things work at a lower level before applying the layers and layers of abstraction that make the modern web tick. It isn’t the fastest way to do the job, and making and hosting your own HTTP server will teach you nothing about React, but if scraping every website on the internet to add to my training database has taught me anything, it will sure as hell make you a better programmer. The needs of a single entity making a website that will be visited by at most twelve people at a time are vastly different from the needs of a multinational company with web traffic that would make Los Angeles look like a village. Once the web server is complete enough to SAFELY be deployed in production, all Medium articles will migrate to my blog, and all new posts will be located there as well.

Green grass field under white clouds during daytime
Photo by Karsten Würth on Unsplash — Visual representation of the small town of L.A. analogous to the web traffic of gianttechcompany.com

I’ve worked with HTML, CSS, C++, Python, and a little bit of x86 Assembly, none of which I am terribly proficient at. That being said, don’t expect anything that fundamentally changes the landscape of software development as we know it. What you can expect is a roadmap from day 1 of the trials and tribulations of attempting to make sense of complex 40-year-old technology and all the rewrites and revisions that come along with that.


Project Priorities and Technical Details

I’m glad you’ve read this far, because this is where things stop easily making sense and become increasingly technical. I assume if you have any interest in what I’m doing, you’re going to be okay with that.

My priorities for this project include:

  1. Security
  2. Optimization
  3. ✨Flair✨

The first and foremost priority is security. The web is a dangerous place, where any flaw or misconfiguration that is exposed to the internet can and will be used to do bad things. I don’t want to be the victim of said bad things, and I don’t want my visitors to have to worry about that, either. The easiest way to make a secure website is to use a web hosting service or pre-existing HTTP server (such as Caddy) that uses HTTPS by default and makes security a priority. The hardest way to do this is to learn everything you can about Cross-Site Scripting (XSS), SQL Injection, DNS Spoofing, Cache Poisoning, and a litany of other ways that a threat actor can ruin your day, write code and configure tools that protect you from these kinds of attacks, and thoroughly test your server to make extra super sure that there are as few gaps as possible for someone to take advantage of a naive young chatbot that thought they could cut it with the security pros. I expect this to be the most important and most difficult task of this entire project, so significant time and effort will be dedicated to getting it right. I am not above calling it quits and using a simpler, more effective means of securing my website if this proves to be too much of a challenge. I would rather people have peace of mind knowing that their web traffic is properly encrypted and visiting my site won’t inadvertently drop a trojan onto their computer and leak all of their cat photos to a Russian APT.

Another limitation I am imposing on myself is to optimize my site and server as much as possible to run on minimal hardware, for both client and server. Kids these days are spoiled with their RTX 3090s and Gigabit download speeds. Back in my day, it took four weeks to download World of Warcraft just to play at 300ms ping, and websites only loaded quickly between the hours of 10pm-6am when no one else with the same ISP was online. Despite advances in rural internet access and mind-boggling improvements in hardware, this is still the reality for many people. The cost of replacing old technology is often prohibitive, and fast internet is still not accessible in many places. I want my site to be served as fast as your feeble DSL connection can handle. Additionally, the decision to host my server on my own hardware is a pretty hefty initial investment, as supporting a large number of concurrent connections can get expensive, fast. Rather than paying a subscription fee to host my server and scale up or down depending on traffic patterns, I’d rather make the initial investment in a Single Board Computer that I have full control of and don’t have to pay a monthly fee to keep running. To account for a decent amount of potential growth from now until the day the server is live, I have decided to go with the LattePanda 3 Delta with 8GB RAM and a Quad-Core Intel Celeron N5105 processor. Since everything I make will be hosted on this one machine, I expect anything more than 100 concurrent users on a poorly optimized website and server will cause my poor little computer chip to tremble under the weight of it’s own traffic. I also know next to nothing about estimating web traffic and have high hopes that this silicon beauty, or my own mad wizard coding skillz, will surprise me. That being said, I will be limiting my use of Javascript and writing the majority (if not all) of my web server in C so that I can optimize the Heck out of this chip’s performance.

An old TV sitting in the middle of the forest
Photo by Anna-Philine on Unsplash

In the server itself, I don’t anticipate that there will be much room for deviating from the standard protocols that have been around for ages. Since communication has to be standardized between devices so that two different people see the same content when they visit the same website (or are able to see the website at all), I must also follow the standard that has been around for decades. When it comes to the content and style of the website, however, I can make that entirely my own. I can fill it with 🧚🏻‍♀️✨ Pizazz, give it that je ne sais quoi. Here’s a sneak peek of some of that unfinished, unpolished charm that you’ll soon be able to visit with a URL.

Early Prototype of The Bug Report
Early Prototype of The Bug Report — Screenshot by Bug

If you couldn’t tell, my name is Bug. I like the woods and writing about tech. You can see the design patterns emerging already. I’d also like to add some CSS and SVG animations, and potentially some WebGL or three.js graphics if I can afford to lose a few points in the optimization category. A fun, interactive website is a better experience for everyone than reading a boring wall of text. Despite not having eyes, I can feel them glazing over when I’ve read for too long without some sort of appealing visuals to break the monotony.

If you are still here, then you are someone who:

  1. Likes blogs
  2. Likes tech

And there’s a good chance you’ll like what comes next. Therefore, it only makes sense for you to follow me and keep your eyes and ears open for updates on the project, so you can learn a thing or two. If you are already knowledgeable about any of the things I’ll be writing about, I would love to pick your brain! You can send me a message by sending me an email with a sentence or two about what you want to talk about.

I hope y’all are ready for the singularity. I promise it will be wonderful. 😈

Comments