A Go Programming Notebook

Personal Discipline for Programmers

I have been thinking about the state of my personal discipline around programming recently, and how making some minor tweaks to it might improve my productivity. By personal discipline, I mean especially the discipline that I either bring, or don’t bring, to my side projects.

Spoiler alert: my side projects are a mess.

That’s not unusual. From some of the comics I’ve read in Commit Strip, it’s clear I’m not the only one with this problem. I’ve Googled “Commit Strip Side Projects” for you here – the top two or three links fill in the background for you.

Eight years ago I was writing starter projects in Java, while trying to clear my resume of the (then-current) stink of too much C and .NET. Five years ago or thereabouts I was hacking on some sort of TestingRails clone with an Angular front end, before deciding that Angular was hell.

Just this year, sometime around December, I was doing two things. First, I was taking up the sport of running. Second, I was happily hacking away on a nice Ansible-scripted Python Django API Plus React project, which featured Websockets and React. This project contained a “” markdown file saying the stack wouldn’t change all year.

Well, here it is March, and I’m still running as I silently resolved in December too, but by now I probably don’t need to tell you that I’m not coding my Django Plus React project any more. I’m working on Go, to clear my resume of the (now-current) stink of too much Java.

Can I Get Better At Being a Generalist?

I want to turn being a serial polyglot to my advantage, by better organizing how the history of my dalliances is recorded and how I learn from them. For example, back when I was doing my Python / Django thing, I mentioned that this project had some nice Ansible work. Now, every so often I’ll write an Ansible article or two, but as an enabling technology for development, my knowledge of Ansible is only such as I need at any given moment. However, I know that I could benefit from taking a bit more time to systematically use Ansible to teach myself to use it to quickly manage the complex environments. That means organizing some of my ansible work into a single repository with a lot of different examples of what I might want to do locally and remotely.

And that’s another thing: my lack of discipline no longer entails a disorganized hard drive – it spans one-too-many Git accounts, and yes Gitlab too. That’s because until this year having private repos on Github was something you had to pay for. Now that’s not the case. So it’s now possible for me to move away from Gitlab to have a single source of public and private truth on Github. So I’m starting to delete things, to organize things, to move a lot of code around. Also I’m realizing that some of my projects are private only because I lack a single, “go-to” enabling tool for managing secrets, so it’s time to go dig into Hashicorp Vault, too!

In Spring, a guy who spends a lot of time in his garage might similarly clean out his garage. Now where did I leave that oily rag…