Webdev Misadventures
Web development is a mess. Here's how I made this website.
What I want from a website
Web development is a mess. In my previous attempts at a portfolio and/or blogging site, I’ve always spent more time fighting the “features” of some template rather than writing actual content. Here are some examples of such “features:”
-
A comments section, e.g. Giscus or Disqus. For most blogs, this is a moderation liability.
-
Content management systems (CMS). Good file management and naming conventions are enough for me. I don’t want to be forced into any CMS idiosyncracies either.
-
Share buttons. I have never used these.
-
Analytics like Umami. This is just overkill.
-
Newsletter integrations. RSS is enough.
-
Too many prebuilt components, e.g. twenty different carousels. It’s just overchoice. If I need a component someday, I can make or look for one then.
-
Multi-author management systems. Git and pull requests suffice.
-
Too many libraries. Why do you need shadcn, MUI, DaisyUI, and RadixUI?
On the other hand, there are some features I consider essential to any website:
-
constantsfile(s). Both for styling, e.g. a single.cssfor all colors, and component data. More on this later. -
Open Graph metadata, and other basic SEO features. Its good for searchability.
-
Affordable navigation stuff, e.g. a navbar, table of contents, etc.
For blogs in particular, I consider these features essential:
-
Math equation support, e.g. via KaTeX.
-
Code blocks with syntax highlighting, e.g. via Shiki.
-
Mobile support. That is, everything resizes without losing functionality.
-
A table of contents that’s always accessible. These should not just be at the start and end, even on mobile.
-
Separation of content and style. I should not be styling components in the same file as my post text data.
What this website has
This site is built off Erudite. It satisfies every requirement above, with only minor modifications. Its design document significantly overlaps this one. I strongly recommend this template.
Let me show off this site’s features using a continuous article series. Each part is rendered on this page when you follow any of these links: