If this was a vlog instead of a blog post then it’d start with the opening scene of 2001: A Space Odyssey with the apes shuffling around the Monolith until finally touching it and sparking their development into tool makers and users. Obviously, broadly speaking, most of my tool making doesn’t involve turning bones into weapons although I did a solid line in improvised explosives in my early teens. I think I was the only kid in junior high who had his own mortar. Well at least in the 3207 area code. Possibly.
This post was inspired by a question, possibly snarky, about why I bothered to publish things to GitHub. I publish a lot of little tools, plug-ins, add-ons and even small applications. The questioner’s sentiment was “why bother?”. Write the code, solve the problem, move on. Posting the code means writing documentation, maybe tests, cleaning it up. Then having people actually using it means you get bugs logged and people want help. All of which consumes time and is a “pain in the arse” to manage.
So why bother indeed? Well I’ll front up and say part of it is ego. I like showing off and publishing solutions, neat tricks or cool tools is the ultimate show-off material in the technical world. It’s also excellent career material. I rarely see a job advertised (at least ones I am interested in) that doesn’t ask for your GitHub user name. In some cases your GitHub account is as good as a cover letter AND a CV.
It’s also a personal development opportunity as well as a career enhancer. I love learning new languages, new frameworks and puzzling out how to make things work. Ironically often using snippets of code other people have puzzled out. Turtles all the way down.
Some part of it also overlaps with why I am involved in open source. If you write code that could help others then it just makes sense to apply an open source license to it and publish it. This is not just because other people should suffer through my code but because good open source citizens share.
Lastly, sysadmins spend their lives solving problems. Often painful and un-fun problems that occur at inopportune moments that mess with your life. Being a sysadmin is an awesome job but it can also be a job that sucks when things go wrong or when you have an annoying or labour intensive task. The way I solved a lot of those problems, automated a lot of those tasks or just generally made things better was by steali^H^H using other people’s code and tools. If others hadn’t made their cool solutions and tools available then my life as a sysadmin would have sucked a whole lot more. The fact that others went to the trouble of making things that made my life easier matters to me. So in turn helping solve other people’s problems or making their lives easier matters to me too. And that’s why I make tools.