Detailing my approach to building this website
I've been thinking about rebuilding my personal website for months now, but it was a daunting project because I didn't know which route to take. I had a few goals in mind:
- Publish blog posts
- Share my photos
- Improve my existing web dev skills
- Learn something new
- Ensure the website is evergreen (I'll explain)
But before I get ahead of myself, I must ask (and answer): what inspired me?
Writing is important to my thought process, getting work done, and developing and understanding my emotions. I have notebooks filled with daily notes and TODOs since entering the workforce. However, I was never the journaling type, so this may be coming a bit later to me in life than it would to others: I've noticed the personal growth that has come from a change in habits and writing about personal observations more often. I've taken down thoughts I would've otherwise let float by in the past. Over the past few years, I've immensely enjoyed using Apple Notes to write and organize my thoughts, but there were also ideas and nuggets of wisdom that I wanted to share with others.
I decided I wanted a place to share my writing about 9 months ago. I've looked back through Apple Notes to find the earliest thing tagged #blog to see what I was thinking about sharing and sure enough it was early August 2024 when I entitled a Note: "The Art of Searching The Small Web". It's funny that I should start now as the idea has had enough time to gestate to birth this blog. My thought there was to spread the love for Kagi Search, which I am a happy paying user of. I've found that it's worth the price to me, and because I'm the paying customer rather than advertisers, their incentives are more aligned with mine. I'm happy to pay for a product that provides a good service. I'd rather not use Google Search for free and have my every move tracked so I can be targeted and my attention can be sold to the highest bidder. Ick. I digress. I'll save it for a future post.
I have a personal website but I'm not incredibly happy with it. It's a left over vestige from my time in a web dev bootcamp I started in 2022. One of our early assignments was building a personal website with HTML and CSS. One of our final assignments was creating another, but this time using a new skill we learned: React. It didn't make total sense to me to create a static website, such as a portfolio, using React. However, I wasn't going to argue with the point of the assignment. Once the bootcamp was over, I built out the HTML and CSS version of my website a bit more: I introduced TailwindCSS and DaisyUI because I wanted to try them out. I hosted that site at this domain, jpawel.com. This version of my website had remained mostly unchanged since 2023 besides minor tweaks to the copy to keep the About section current. I've decided it's time to throw it away and start from scratch.
Ok, so what approach am I taking?
I evaluated some static site generator solutions such as Hugo, Jekyll, and 11ty, but I felt these wouldn't scratch an itch I had. I knew these were great tools and many people use them for good reasons. They might serve me well in future projects. But I wanted to do more than easily publish blog posts to my website: I wanted to build my website. I wanted to spend the time on it. I wanted to improve my command of HTML and CSS so that I could hone some skills. I wanted to build a new website with minimal dependencies. No TailwindCSS, no DaisyUI, no node modules needed, just simple HTML and CSS to start. Enhancements may come later, but these have to be carefully considered: what's the maintenance burden, does it really save me time, does it bring me joy, etc. That fulfills the "ensure the website is evergreen" requirement. I want to cultivate my slice of the web and keep rot to a minimum.
When I conceptualized this new website, I started thinking about the workflow I would want: I want to use my preferred text editor, BBEdit, to do everything: build the site, write my blog posts, publish my website. I want to write blog posts in markdown and have some mechanism to parse and convert those to HTML pages. I intend to write some Ruby to handle this for me; that should cover the desire to "learn something new". I want to publish by simply copying files to my web server using SFTP and nothing fancier than that, which BBEdit can handle with its Deploy to server option, part of the BBEdit Projects feature. I love git, but I determined I don't need it, or any fancy deployment scheme, in this case. I figured I needed to start with creating a basic template page that had common elements from each page from which every new page would be built (header, nav, main content area, sidebar, footer). I compiled my plans into a TODO list.
Once I began to actually work on the website (create directories, arrange my files), I realized I couldn't follow my TODO list exactly as I prescribed. I started building out the main index.html
page to get a feel for how I wanted to structure the site. I got it open in a browser as quickly as I could. I was out of practice when it came to developing something with HTML and CSS and relying on browser dev tools—the bootcamp was a while ago—but it felt good to be back at it. I remembered what it felt like to actually build a website and my original intentions felt a bit naive at this point. I wasn't ready to script out a workflow until I fully understood how everything was going to work and look. Duh. I decided to cut down the scope and focus on building out each page, including each blog post, by hand with HTML. Writing Ruby scripts that would: start a new post as a markdown file, build an HTML page from that markdown including parsing metadata in the YAML frontmatter, and whatever else I'm not considering but I'll realize I need when I need it, will all come later. I'm sure it's not immensely difficult, but I'll save that for the next phase. I want to get this site published first and foremost; I want to ship it. I will script the publishing workflow when I need it and I won't let the absence of that get in the way of getting the site up. I've had a lot of fun just focusing on the basics here: HTML, CSS, and getting my web server working.
There's more work to come, but I'm happy with what I've got so far. I intend to introduce new things the moment I need them and do things the hard way for the sake of learning. That means I might learn some hard lessons about the downsides of my approach, but hey—I learned something and have the experience to reinforce it.