Brian Downs


Software Engineer, Open Source Advocate, Outdoor Enthusiast


December 2014

December, 2014 was a very productive month. I got a lot done in regard to furthering my Go learning and contributing back to the Go community as well as development in general, a deeper understanding of cloud and data center networking, and exposure to a professional approach to asking inappropriate questions in a seeminly innocuous way. The latter I’ll leave for another entry as it’s interesting enough to stand on it’s own. The rest is a highlight of the fun and exiciting things that happened during December, 2014.

Spinner

Spinner is a Go (golang) package to easily provide a terminal spinner. Features and documentation can be found here. I started writing this Go package one day during my lunch break for more of a code kata than anything else. I had searched around for some inspiration and found some neat C code but it lacked the elegance that Go provides.

The spinner package comes with a number of examples so one can quickly get an idea for how it can be used in their application.

Simple installation:

$ go get github.com/briandowns/spinner

Without the sage wisdom of Naimix I wouldn’t have put this package on the Golang subreddit for peer feedback and review here. Since posting, the package has become, arguably, the most popular Go terminal spinner on Github. The package intially started trending on the Github Go Trending page and subsequently ended up Trending on the GitHub main page. Thank you to everyone that starred the repository.

I plan on incorporating nsf’s termbox-go package into the spinner package to provide even more functionality. I sadly don’t see this happening for a few months so if anyone wants to tackle that, feel free!

OpenWeatherMap

Openweathermap is a Go (golang) package for use with OpenWeatherMap’s API. It’s still a work in progress but the main functionality exists.

This library wouldn’t have some the functionality it currently has if not for the effort of a few contributors that I’m extremely greatful for. I can’t wait to see what else others can think of to add, enhance, or fix.

Features and documentation can be found here.

To install:

$ go get github.com/briandowns/openweathermap

I noticed recently that the repository had been forked again and I looked at a few of the commits that had been made. I’m eagerly awaiting a pull request by the, for now, unnamed developer.

In the next couple of months I plan on getting a few small weather stations. I’m hoping to get API’s built in Go for them and have those API’s use this package as a plugin for sending data up to the OpenWeatherMap API.

Please feel free to give suggestions or feedback.

Contributions

My first ever contribution to a large project was for a bug fix for Mitchell Hashimoto ’s Packer project. Finally, during the month of December, I was able to find a bit of time to sift through some of the projects I had previously starred on Github. I widdled the list down to a few I really liked and thought I’d love to contribute to.

The first was EventBus by Alex Saskevich. I didn’t contribute anything overly exciting, just some error handling for the Subscribe, SubscribeOnce, and Unsubscribe methods. This is a cool package that I hope I can continue to contribute to as well as incorporate into some upcoming applications.

The second was another project by Alex Saskevich named govalidator which is a really awesome string validation and sanitizer package for Go. This contribution was simply adding the ability to validate U.S. Social Security Numbers.

Lastly, I found a Go package for the Zabbix API. I’ve been using and loving Zabbix now for around 8 years so naturally, I jumped at the chance to work on the Zabbix package by Alexey Palazhchenko. Here, I simply updated all of the constant declarations to utilize Go’s iota idiom.

Phoenix-Chandler Go Meet-Up

I’ve never been one for meetups for a number of reasons but I’m glad I gave this one a shot. The Go Phoenix-Chandler Programmers meetups have been amazing. You can read my write-ups of the past 2 here: November December. These past two meetups were really great and informative with a great group of people too.

All things considered, I had a great December. A bit more Go focused than anticipated but that’s yielded no complaints from me. It’s now officially my favorite language to develop in as you can see from my contributions and personal repositories mentioned above. I have no expectation for January to present as grand a take-away as December, though I’m doing my best to see it does.