On Software

Screen Terminal Emulator

Over the years I’ve spent thousands of hours working with devices connected via serial ports. Only recently did I learn that the wonderful GNU screen can be used as a terminal emulator. screen has long been popular in the world of systems administration but rarely do have I seen it used in the context of software development. Overview In the Windows world, years ago, TeraTerm was a popular choice among knowledgeable developers.

Continue reading

AE JSON - JSON with Flare

JSON is simple. It’s easy to read and easy to parse. It’s hierarchical. It has arrays, strings, objects, and more. It would be nice for configuration files but the official spec is lacking a few critical features. JSON doesn’t have comments. It doesn’t have a ‘heredoc’ syntax. You can’t do basic arithmetic either. I had some time on my hands and thus libaejson was born to add the features I wanted.

Continue reading

Find Alias

How many times have you executed find only to see copious error messages that drown out the meaningful output? Sure, you could redirect stderr to /dev/null but then you might miss an actual error. There is a solution. By adding an alias to your .bashrc you can filter out errors for non-readable files. f() { local start="$1" shift find $start ! -readable -prune -o $* -print } In English this alias uses the first argument as the search directory.

Continue reading

Git Cheat Sheet

Git is a wonderful tool but it isn’t always user friendly nor obvious. For certain tasks, like deleting a remote tag, I find myself turning to Google. It’s not obvious how to delete a remote tag and it’s not easy to remember either. Deleting remote tags is also something that isn’t done frequently. Instead of using Google every time this situation arises I added a “cheat” alias. Before you point out that I could create an alias with an easy to remember name that’s not necessarily true.

Continue reading

Semantic Versioning and Changelogs

For most of my career I’ve chosen version numbers for software in a moderately arbitrary manner. I would typically have four numbers: major, minor, patch, and build. For some projects the build number would increase every time I compiled. I quickly found that colleagues were scared by the large numbers and I started hiding the build number. My choices for major, minor, and patch were somewhat arbitrary. If it was a big change I’d bump the major number.

Continue reading

Hibernate Rescue

What do you do if your Linux machine hibernates and it isn’t able to wake up? I’m willing to bet that, at first, you panic and then you turn to Google and that’s probably why you are here.

Continue reading

Git Difftool

The ability to perform side-by-side comparisons of source code is an absolutely integral tool in software development. While many developers may have developed the skill to happily read diff output directly I have not. I prefer a graphical tool that lets me see a full context and to choose text blocks to include or exclude. It’s very easy to setup this up using git.

Continue reading