On This Blog

A technical breakdown of halfmatthalfcat.com
Feb 9, 2023
4 min read
tech

I've never been much of a blogger. The most I've ever written online was probably via my Xenga back in the early 2000s, which was, looking back, as cringy as you could imagine an early teen's nerd blog to be.

After that I never did much of any longform work aside from what use to be blog.couchmate.com (now defunct). I tested out Ghost and for the most part, it worked as I needed it to but the self-hosting aspect was a chore. I realized whatever the next thing was must be much lighter.

Typescript

I cut my teeth programming in High School learning Java, so I'm always looking through things in a strongly typed lens. After Java came PHP and Javascript though, so I waded through dynamic typing land for a while until Typescript came around. I eventually found and fell in love with Scala too, but that's for another day.

Typescript brings sanity to Javascript. Religious discussions on strongly vs dynamically typed languages aside, I've worked in enough vanilla Javascript codebases to know that even the most seasoned Javascript developers make the simplest errors or have to work within egregiously poor projects that abuse the type system.

Typescript offloads so much cognitive load onto the compiler for the small price of typing your code. At a certain point it just becomes second nature. Typescript and by extension, Microsoft, have done such a great job advocating for features that have or will eventually make it into TC39/ECMA as well.

React

My professional career is primarily frontend focused. Not necessarily on purpose, but I tended to gravitate toward the frontend due to job availability and familiarly with Javascript.

My first and a large majority of frontend devs who have been around for a longer(ish) time started with jQuery, then probably Backbone, then either Angular 1.x or Ember and then React.

For those of you who had the (mis)fortune of Angular 1.x, I'm sorry. For those who graduate to Angular 2+, I'm also sorry, but not because it was bad but because it gets such a bad wrap. I was one of those Angular 1.x to 2 people and because of it's tight integration with Typescript, sensible Dependency Injection and build tooling, it was actually really fun.

But this isn't about Angular, it's about React. Love it or hate it, it's the king of the roost and for good reason. Being a "rendering library" has its advantages versus other "frameworks", primarily because it's choose-your-own-adventure. Instead of being locked into certain patterns, React lets you describe your view, and you tack on state, side effects, ect at your leisure.

That does have its drawbacks, as you now have a multitude of options with no clear happy path on implementation, even though standard libraries have become established (Redux, for instance).

Next.js

Currently the clear winner of the SSR Wars, Next has been a part of my default arsenal for a couple of years now. After having built too many SPAs to remember, Server Side Rendering not only boasts performance improvements and user experience but having the ability to hide rendering logic on the backend while letting React do its thing on the frontend has proven extremely useful. These things are necessarily unique to Next, but they've created a pattern of implementation that is very easy to reason about.

I've dabbled in some alternatives, namely Remix, which introduces some interesting concepts, they're still somewhat early, and it looks like Vercel will adopt these features eventually into Next itself over time.

I've also fallen in love with the simplicity of the Vercel Cloud product. Dead simple.

MDX

Markdown, similar to HTML, is a pseudo-language that describes how to render text (and other things). It's the defacto-standard in various text editors and its pretty easy to use once you learn the grammar.

Taking that a step farther, MDX is Markdown + JSX, where you can embed JSX into Markdown and have it render as you'd expect. Next has a pretty nice integration with MDX via @next/mdx which includes the ability to plug in various Remark and Rehype plugins to customize the render.

Another good thing about MDX is that since posts are essentially Markdown, I can leverage git and version/branch various posts as I work on them all within the repo, making things very light and easy to work with.


There's a couple other notable mentions like including an RSS feed or being able to filter posts by tag that were fun to implement.

For now, halfmatthalfcat.com is a nice little slice of the internet to post some thoughts and display my projects.