Design principles for dylanirlbeck.com

As I’ve progressed throughout my brief career, one thing I’ve learned is the value of understanding the inner-workings of the tools I use every day. I’m currently a software engineer, so these tools include: Git, a version control system; Neovim, a terminal-based text editor; Ruby, a programming language, and Ruby on Rails (or Rails, for short), a web application framework; and many other tools that are less prominent as of writing.

These tools are designed to be used by engineers like myself to, most directly, build software “better.” Git makes it easier to collaborate with other developers; Neovim comes replete with quick commands for editing source code; Ruby and Rails provide useful abstractions over machine code and web machinery, respectively. But these tools’ benefits to me as an engineer are limited, in my view, by my understanding of how they work at a deeper level. For example, by understanding how Rails’ database query interface works under the hood, I can make better decisions as to when to write raw SQL in application code.

But mere “understanding” of a tool only gets you so far: there will always be more documentation to read, more blog posts to peruse, new source code to pore over. In my view, the ideal way for me to truly understand a tool — or any system, for that matter — is to build it myself. In most cases this is infeasible, however, both due to time and knowledge constraints. I accept this reality; I continue building software with a necessarily-incomplete understanding of my tools.

Building over understanding

When it comes to building my personal website, however, I’ve made a different decision: I want to build it from pseudo-scratch. (I want to minimize the use of platforms, libraries, design systems. And absolutely no static site generators — those things are inscrutable.)

Why focus my efforts on building a website, rather than the countless other tools I use every day? The Web strikes me as the most influential digital system of the past few decades. The work I do every day is on a web application; and the solutions to many pressing problems, in my view, will reside on the web — as websites, web applications, or some other web-based technology that’s yet to hit the mainstream.

As I see it, the only way I’ll gain a deeper understanding of this fundamental technology is by building directly on top of its most fundamental components: HTML, CSS, and JavaScript.

Design principles

For posterity, I want to define some design principles that I aim to hold myself to as I build. (Unfortunately, and as evidenced by this post’s existence on my website, these principles are coming a tad late — in retrospect, I would have written this post before I wrote any code! Anyway…) Namely, I will:

You can follow along with me on GitHub. I’m excited to see how this site — and my mental model of the World Wide Web — evolves.