Welcome to, a site dedicated to all things coding. This site is intended to be more like a reference guide than a blog, and is aimed more or less at anyone, regardless of their experience with programming or their technical abilities.

On this site, I am writing posts on a variety of topics; I call these topics 'series'. I intend to write about the following topics:

  • Fundamental concepts related to programming, ranging from beginner to advanced
  • Writing good (ie readable and maintainable) code
  • Understanding and refactoring poorly written code
  • Good techniques for working on projects
  • Troubleshooting buggy code

A list of all active series, along with descriptions and links to see the posts in each series, can be found here.

If you aren't sure what programming is all about or are just getting into it, I would highly recommend that you start with this post, and follow the "suggested next reading" links at the bottom of each post; once you read through those posts, take a look at this page, which has lists of all "fundamental concepts" posts in the order they are best read in.

If you have any questions, comments, suggestions, notice any typoes, or just want to say hi, feel free to drop me a message on Twitter at @ninjattic, or shoot me an email at

If you wish to keep up with my posts, there are presently 3 ways to do so: you can visit this homepage and check for "New and updated posts", follow me on Twitter, or use my RSS feed. My goal is to write at least one post a week, though sometimes that won't happen, because I'd rather spend the time to make sure I'm publishing good content, than rush posts out the door just for the sake of publishing something every week.

Thanks for reading!

New and updated posts

How to effectively comment code

There are no hard and fast rules when it comes to commenting, but there are definitely some things that should and should not be done to help the reader understand the high level design and intent behind code.

Program modeling

Modeling a program is the process of coming up with a representation of a program that allows the reader to understand how it works. It's an important topic to understand, because it's applicable not just when trying to understand existing programs, but also when trying to design and create new programs.

Announcing 'Spark', my site generator

After I rewrote my site generator in C, I decided I should make it open source and share it with the world. Anyone is free to use it and modify it as they like. I present to you: Spark, the static blog site generator.

  • Written: 10:10PM CDT 6/4/2018
  • Series: The site

Version control

When you're working on something and you realize you made a mistake, it's really nice to be able to undo those changes. While the undo button is sufficient for a single file, what happens if you are changing multiple files at once? This is where version control systems come in, to allow you to manage the entire history of a project.

What is a program?

Computers are like small children -- they do what you say, not what you mean. In this post, I begin to talk about what programmers have at their disposal when creating programs for the computer to execute.