Josh McArthur

Source controlling my toolkit

21 Nov 2013

This morning, I created a new repository on Github called toolkit. I’m using it to keep track of the tools I use every day, in order to benefit others who are interested in how I work, and for my own benefit, to be able to easily refer to documentation, source code and links for tools that may be useful for a particular situation.

I’ve tried to do this type of thing many times in the past - sometimes by writing a blog post, or forking or ‘starring’ a repository on Github. There are a few reason’s why I’ve started off with Git repository this time though:

  1. There is a history of the additions and changes that have been made to my toolkit over time.
  2. Github automatically provides a nice, friendly layout to view items in my toolkit.
  3. I can use Git submodules to track open source projects without needing to keep a full (and quickly outdated) copy of these projects in my toolkit.
  4. It’s easy for others to view my toolkit, and even contribute to it (for example, by sending a pull request or lodging an issue), or even to fork it and adapt it to their own needs.
  5. I can put absolutely any content in this repository - whatever works best for me - it could be an image, some markdown, a whole repository (as a submodule), or just a link - in all cases, Github tends to provide a nice friendly display for this content.

My toolkit is, in many ways, performing a similar function to blog post or ‘liking’ or ‘starring’ something, but I think that the semantics are important. Writing a post about something is all well and good, but it tends to get outdated, and buried amongst all the other things that I might blog about - it’s too much work to trawl through a bunch of posts looking for one particular link. Similarly with starring something - just because I star it, it doesn’t mean I use it - it just indicates that I find the project interesting and might follow up on it. My toolkit ONLY contains things that I have already found useful, or know that I’ll need, and doesn’t include any other extraneous material to get in the way when I need to find something.

I’ve made a start by adding a bunch of submodules to projects that I could think of off the top of my head, but I’m already coming up with ideas for more. If you like the concept, head over to Github and check it out - and feel free to contribute your favourite tools for me to try out!