david Butler

Systems Software Engineer


Location

Remote, Central Time

WHO

am i...

I am a professional software engineer. On my own time, I am a technology enthusiast.

From a young age I always had to take things apart to figure out how they worked and how I could manipulate them to do different things.

These days, I have been doing various side projects live on twitch. I find this to be very rewarding as it is often to get live feedback on the projects that interest me, also people are curious about how to do the things that I am doing and I enjoy helping them figure things out. I tend to work on multiple projects at a time, often switching between then depending on what interests me at the time.

I work on a wide variety of projects, including hardware and systems programming, and graphics programming.

Personal Projects

for leisure

NOTE: The projects section has not have been updated in some time

CRO-100

A handmade TIS-100 Clone

This is the project that I am currently spending most of my free time on. The pictures below looks like a giant mess of wires, and well... it is. But it's also a work-in-progress implementation of a single node of a TIS-100 compatible computer. The TIS-100 is a fictional computer from a video game. All the game gave me is an Instruction Set Architecture (ISA), and I used that as a goal to design a CPU that would implement that ISA. I have learned a fair amount from CPU design as part of this project. You can find out more information on Github. There isn't much here now, but eventually, (hopefully) I'll have some blog posts out soon. I intend to eventually build a complete system.

 

Barclay

An experimental display server for Linux with an emphasis on simplicity

This is work-in-progress graphical display server for the Linux kernel. This is an attempt to create simpler alternatives to critical system services on Linux. At the current state, it's not as much a serious project but more of an exploration of what could be done different from existing solutions.

Latest binary release: barclay_alpha_3.tar.gz

Source on Github

 

Humbug

GDB Frontend

This is an unfinished GDB frontend implemented in OpenGL, SDL and DearIMGUI.

This was an exploration into GUI programming and an attempt to address a lack of development tools for Linux. Several alphas have been released. This project is currently on an extended hiatus

More info and various blog posts can be found on the handmade network site

Smaller project highlights

Snippets and gists
  • Rolled my own SHA2 implementation gist
  • Procedures on how to build a LLVM+Musl C++ toolchain for Linux that has no GNU Lib C or GCC dependencies gist
  • A tool to measure and output the current GPU utilization on the Raspberry PI gist
  • Example code for changes to multiple files on OSX/BSD gist
  • Example code for forking a process and capturing its output, as if it were an interactive terminal gist
  • Tutorials on low level programming for kids gist
  • Small tool to stop the Microsoft Visual Studio debugger from a batch file gist
  • Some example code for playing a video using LibVLC as a texture in OpenGL gist
  • An attempt at being artsy... Rotating, wire-mesh cubes on a grid gist
  • Calling Linux kernel VDSO functions from user code gist
  • Some example code on how to do some wire-frame 3D projection stuff in software with no 3D libraries, modeled after OpenGL gist
  • A brief foray into source-to-source meta programming gist
  • I needed a way to copy and paste into digital ocean's remote console, so I hacked together this JavaScript. They eventually integrated it into their official version. gist