homearticlesdata policygithubrss

An imperfect blog

I have trouble finishing projects, my Projects/ directory is filled with half-finished parsers, barely working game engines, three slightly different versions of a web server and more than a dozen other side projects I started but never finished. This blog is no exception; I started considering having my own website two years ago, and in the meantime, the only things I built towards that goal are:

  1. A web server written in C that I gave up on while trying to handle multiple connections per thread
  2. A few CGI scripts to learn how CGI works (
  3. And a barely functioning templating system built around the C preprocessor

As you can see, I made zero progress on actually writing a blog. I thought about it and decided I should start finishing projects more often.

The average life cycle of a project

      Get a project idea
              ¦ <---------------.
              v                  \
 Try and build the "hard" part    \
        /             \            ¦
   [success]       [failure]       ¦
       v               v          /
Get bored and move   learn more  /
to another project   on the subject

    ??? -> Finished project

Whenever I start a new project, I tend to try to build what I consider the "hardest" part first. This means that when I made a 2.5D "engine" à la Wolfenstein, I only wrote the bare minimum to get to the code that renders a maze. This meant that I learned a lot about how to write a raycaster, and I even got it to "pan" the camera up and down. But once I got that working, I completely lost interest and started a new project to learn about some other concept I thought was interesting at the time.

Chasing perfection

Usually, when I work on a project, it is to learn about some concept I heard of recently. 99% of my projects are never indented to be shared, but it did not use to be the case. I used to put whatever I was working on, finished or not, in a public repo on my GitHub. As I learned more, I became critical of my code. It allowed me to improve my craft considerably, but it came at a cost: rereading a piece of code a few months after having written, makes me ashamed.

Getting myself to finish something

I don't want to push myself to finish every project I start; otherwise I'll end up not starting any new projects. I think I should prioritise certain projects, such as this blog, and get them released.

If you can read this, I managed to get something imperfect out the door.