November 23, 2017 · General Philosophy

My Very First Inaugural Post

Hello world! I'm pretty excited, as this is my first real blog. I'm going to be writing about first principles in software development. What does that mean? Well, there are tons of blogs out there that cover programming. But most of them are tutorial-based. This is great if you just want something to, you know, work. But it's not so great if you want a deep-in-your-bones type of understanding of what you're doing.

As such, this blog is going to focus on understanding concepts. For instance, I'm not going to write about how to get a node.js app up and running. What I may do though, is write about what it means when people say:

Node.js uses an event-driven, non-blocking I/O model".

Unpacking that sentence will take us into the subject of threads and asynchrony. And the cool thing is that you'll see these concepts pop up over and over again in your programming career. They're first principles that will stay constant no matter what hot new technology comes out next.

The plan is to minimize the amount of code snippets in these posts. We'll see code when it makes sense to do so, but I'm going to be prioritizing diagrams and drawings over code. The reason for this is that oftentimes, the code in your text editor is not the best representation of the real live running application. Code on the screen is static and flat. But live applications are dynamic worlds in which entities pass messages to each other. Or they are worlds in which data gets pipelined through an assembly line of different transformations. As such, I'm going to use visual aids as much as possible in order to keep the focus on mental models.

Other Motives and Incentives

  1. Writing is freaking hard. But it's an incredible way to learn. It's up there for me, along with working on real projects and pair programming. Writing posts is going to cement these concepts into my own brain, and that's pretty sweet.

  2. Having your own blog can teach you a lot about basic server administration. I'm using Ghost and self-hosting it on my own Digital Ocean droplet. This means that instead of paying $20/month, I'm only paying $6/month to host this blog. It also means that I had to do more work upfront in order to get up and running. For instance, I had to ssh into the server, install and setup all of Ghost's dependencies, configure Nginx to return a 301 redirect for my other doman names, etc. If any of those things sound scary to you, starting a little blog project and going the self-hosted route can be super empowering. It's pretty powerful to know that you can control remote servers from your very own laptop!

That's it!

I encourage all of you to start blogging about your own learning experience. Don't even worry about how many people are going to read your posts. If nothing else, it will force you to go deeper into whatever you're learning at the moment. And it's fun! I mean, how crazy is it that this is on the real live internetz? See y'all next time!