Colophon

Me

Everything about me and my current works can be found on the homepage or within the menu. To reach me about potential work or other inquiries, feel free to send an email or reach out on Github or LinkedIn.

Site

This site is built by me as an experiment for testing a modern, circa-2020 JavaScript stack. Overall, I found the development experience quite enjoyable. The site is set up to allow for traditional Markdown to be blended in with React via MDX. And, with SSR from NextJS, the final build is a fast, near-static site that's trivial to deploy to Vercel. The complete stack can be found below.

Tech Stack

TypeScript ( https://www.typescriptlang.org )
  • Though this site is small and spans only a few core files, after using statically-typed JavaScript with Flow and now TypeScript, it's hard to go back. Types prevent silly mistakes, provide self-documenting code, and help immensely with large refactoring efforts.
    • Beyond types (and this site), TypeScript is actually turing complete. It's also possible to extend it to support more functional programming features like higher-kinded types using libraries like fp-ts. Through metaprogramming, it's even possible to implement parts of SQL in TypeScript. There's plenty of interesting things to explore beyond the day-to-day type safety.
NextJS ( https://nextjs.org )
  • Next claims to be 'the React Framework for Production' and lives up to that claim. React was always more of a library than a framework. This allowed for developers to bring in their own Routers, Navigators, Style systems, etc., and build up their stack piece by piece. However, this also leads to a ton of decision fatigue and tooling. Next abstracts all that away, much more so than the Create React App tool, and offers plenty of sensible defaults, automated routing, solid fast refresh, and amazing SSR generation. For simple sites like this one, it's a no-brainer. However, Next is a very opinionated framework and offers no easy eject option like the Create React App tool. Plus, when there is a build error, Next's error messages are often obscure and unhelpful.
TailwindCSS ( https://tailwindcss.com )
  • Composition and declarative programming has immensely changed how I build software. I try to stick to those methodologies by using libraries like React and now Tailwind. CSS has always been a declarative language; yet, it never led to composable style systems because it was too accepting.

    Much like how programming languages evolved, Tailwind adds constraints to CSS by providing small, composable utility clasees all defined from a well-documented design system. All of this sounds too restrictive at first, but with it scalable design became much easier and advanced optimizations like the Tailwind JIT compiler are now possible.
Vercel ( https://vercel.com )
  • The same folks that built Next also made Vercel, a simple, easy-to-configure hosting solution with a generous free-tier and a fast CDN network. I highly recommend it for small, mostly static sites like the ones NextJS produces.