About Me

My name is Chris Wellons, though I sometimes use the handle skeeto. I am a professional software engineer with a passion for software development. In my day job I regularly develop internal data processing and data reduction tools, optimize software performance, mentor students, and do cybersecurity research. Occasionally I also do web development and data visualization.

However, this blog — ongoing for more than a decade — is largely about what I do outside of my day job. Here I explain topics that I’ve recently learned, share software development techniques I’ve discovered or even invented, showcase cool demos, and discuss my contributions to open source.

In general, each of my articles should be unique on the internet at the time they’re published. I will not write a tutorial on some topic if there already exist good, reliable tutorials. If I notice a gap on a topic when learning it myself, then later, once I get the hang of it, I’ll fill that gap by publishing an article or two.

This blog is 100% transparent. Its complete source is in a Git repository. From there you can see every single correction and update I make.

Open Source Projects

Here are some of the more well known open source projects I’ve started.

I have hundreds more open source projects, but these are the most popular ones.

Licensing

I’m a strong believer in the public domain. A healthy society needs a rich and growing public domain.

Software licenses annoy me and cause significant, unnecessary friction. Whenever possible, I put public domain dedications on all my open source projects, generally via the Unlicense. This very blog has a public domain dedication notice at the bottom of each page. Even my personal dotfiles are in the public domain.

If you use my work I do appreciate getting credit, but I do not legally mandate it.

These are my ten most visited articles. Some of these articles are popular enough to have been translated.

  1. Raw Linux Threads via System Calls
  2. Interactive Programming in C
  3. A GPU Approach to Path Finding
  4. A GPU Approach to Particle Physics
  5. C11 Lock-free Stack
  6. Switching to the Mutt Email Client
  7. Minimalist C Libraries
  8. Small, Freestanding Windows Executables
  9. Leaving Gmail Behind
  10. A Basic Just-In-Time Compiler

These are not necessarily my personal favorites, but they do seem to be what others find most useful.

I also have a published paper: ROP Gadget Prevalence and Survival under Compiler-based Binary Diversification Schemes

Software Preferences

In general I stick to smaller, simpler tools — especially those I can modify and compile for myself. Sometimes this isn’t possible (e.g. web browsers), so I just use what’s popular despite it being neither.

My preferred operating system is Debian. It has a great philosophy and rock solid package ecosystem. Since I don’t like software changing underneath me, I strictly run the stable distribution. Of course I can still be productive on other Linux distributions or even any of the various BSDs. My dotfiles are quite portable and mostly work across all of them.

Despite all my articles about Emacs over the years, I actually do most of my work in Vim, including writing blog articles and email. Like a vice, I pretty much only use Emacs for writing Emacs extensions.

I use Openbox as my window manager, and without any extra adornments (panels, taskbar, etc.).

My favorite programming language is C. It’s fast, simple, and compiles very quickly. Unlike many other languages, it’s quite reasonable for an individual to have a comprehensive understanding of the entire language. C is my default choice unless something else is particularly better suited (Python, shell script, etc.). There’s also a special place in my heart for Emacs Lisp, a venerable goofball language that’s so much fun to discuss.

My preferred build tool is plain old POSIX make. If this sounds strange, then it’s probably cleaner and more capable than you realize. There’s little need for GNU Autoconf and friends when you write portable code.

I use Mutt for reading email. It’s not perfect, but it’s close enough. OpenPGP and email encryption are a technological dead end, so I don’t bother with it. I’ve never needed end-to-end encrypted communication with strangers, so I haven’t investigated the alternatives.

For consuming multimedia, I use mpv. I love how I can drive it completely and precisely from the keyboard. If anything, its minimal interface is still too cluttered for my tastes. Combined with youtube-dl (and my front-end), I watch more (ad-free) YouTube than is probably healthy.

In years past I may have proudly listed my favorite source control tool, but these days you have to be a little nutty not to have already surrendered to Git’s dominance.

Contact

My email should be listed at the top of this page. If not, you can probably figure it out anyway. Don’t be afraid to shoot me an email if you like. I don’t get so much that random mail from strangers is an issue.

null program

Chris Wellons