I’m Joseph Kain and I’ve been working as a user space system programmer in the Silicon Valley since 1995 primarily writing GPU device drivers. But along the way I’ve build a myriad of different tools and low level software.

I’ve recently started “A System Programming Blog” where I plan to

  • Explore the Rust language
  • Demonstrate how to build interesting, low-level, projects in C
  • Explore new technologies
  • Write long series developing larger projects
  • Write one-off posts on smaller topics

There are already a handful of posts here on “A System Programming Blog” most of which are part of my first series in which I will write a debugger in C and in Rust. As I go I will compare and contrast the two implementations. If you’re intersted, take a look at the debugger project page.

My intention with all of this is to to both further my knowledge as well as to teach others. My goal is to do this by writing two posts a month of about 2000-4000 words each.

Most posts will be written as I develop a project. This means they will include mistakes I make as I go and descriptions of problems I encounter. I hope you and I will both learn from these. Not only will we learn what to avoid but you as a reader can see my thought process and approach to solving the problems that I encoutner. I hope this will be helpful And, at some points in these posts I may stop and look back and reflect and draw lessons from what has been done so far.

These posts are also an experiment in note taking. Over the years I’ve tried different ways of taking notes whil developing or debugging. Early on my notes helped me keep my thoughts focused but were unusable if I ever went back to read them later. More recently I used emacs org-mode to outline notes and I used a question and answer format to organize the notes. I would write questions to keep my investigation focused and once I had an answer I would write the answer as a headline in the outline. Then, at any level the headlines would look like a list of statements about the problem. With this blog, I’m experimenting with using the narative blog post format as development notes. This should increase the readability and usefulness of the notes when I or others come back to read them later.

I hope you’re intersted in exploring these topics with me. If so, take a look at the posts available so far.