You might be aware of the many options for static website generators and content management systems out there. It would be comical to claim the one I use to build this page is the best, but it is kept online for sentimental reasons. It’s a snapshot of a long learning process.
For better and for worse, I’ve been online since I was young. I have good friends, memories, and lessons from my time on the internet. Part of that was a deep curiosity about what it would take to put something of my own online. I remember setting up my first Google Site back in middle school, sometime around 2012. It was a simple collection of simple pages, but it sparked a desire to have my own site running in a way I fully understood. I started to learn about HTML to make things look better, and I started to read tutorials that mentioned domain names and hosting. I tried to learn what DNS entailed, but ultimately I wasn't able to get first-hand experience because I was too young to have a Visa or Mastercard.
A couple of years later, around 2014, I was older and had more opportunities to learn. I helped family and friends of family make websites with tools like Squarespace and WordPress. I was also able to take an IT course that taught me to write raw HTML. This was a big step up from just using links and styles on Google Sites. I looked into how WordPress worked, hoping I could run it myself, but the complexities of cloud hosting once again seemed out of reach. My first real "success" came when I found XAMPP, which allowed me to run a server on my own computer. I still remember the challenge of figuring out port forwarding and finding my own IP address. It all paid off seeing my site on another device than just my laptop, and returned dividends when I had my friend type my IP address while we were on a Skype call.
As I made more pages, I spent more time on repetitive tasks and started to see the value in template systems. The problem was, I didn't have strong programming skills yet. I had created some simple programs in Java and Lua, and read some guides on Python. I tried to learn Django, and later Flask, but found anything beyond rigidly following a tutorial to be beyond my abilities. I just did not have the experience with libraries, datastructures, or even the basics of the languages I was using to really make progress with real tools. Although it is foolish to reinvent the wheel, sometimes we need to reinvent things to make an opportunity and reason to learn. Since I couldn't understand what I was doing in the tutorials, I ended up slowly building something of my own. This helped me learn Python, a language I still use today.
Over the years, I would come back to my static site generator in fits and starts. This is probably the oldest project I still have. The biggest change came late in my undergrad when I got $100 of free Azure credit, bought a domain, and finally got my website properly online. Later, I set up a free CDN to get HTTPS working. Similarly, this project was a good excuse to practice using Git.
Recently, after Azure deprecated some of the SaaS tools I was using for hosting, I decided to move the website to GitHub Pages. It was remarkable how easy it was to get everything running compared to just four years ago. I believe that everything is difficult until you've done it. The first time you try anything, it will look daunting.
This website has been online in some form or another for at least a decade, and I didn't put much content up for a long time. I felt I didn't have anything worth sharing, and worse than that, I kept moving the goalposts. I told myself that maybe once I finished the next class, or worked another job, what I thought about writing would be worth sharing. But the truth, in the end, is that people don't get good by waiting. You just have to make something and see.
Fundamentally, engineering is just about choosing whats best. The hard part is just figuring out what is best. Getting caught up in my regrets used to feel like progress. After all, introspection is the first step to improvement. While important, intro...
How I learned to let go of small things like ‘value proposition’, ‘opportunity cost’ and ‘reason’ in order to embrace the transistor. In the later half of my internship at AMD in 2019, I was struck by the Muse. I had just seen the Monster 6502, which i...
Being clear about what you mean is a skill, but being clear while avoiding accountability for the consequences is a profession Everybody knows that lying is wrong. Or at the very least, that lying too much will get you in trouble. Everybody also knows ...
This is a simple tool that I made to strip HTML out of transcripts I was copying and pasting. I also ocasionally run into situations where there are many superscripts and it gets tedious to remove them all by hand. Just note that the tool is a little i...
A colleague sent me a link. Hours later, I was still deep in a rabbit hole of assembly, auto-vectorization, and benchmarking GCC vs. Clang. One of my long time colleagues Brendan sent me a link that you can view HERE. Naturally, I opened it as soon as ...