Going Go Programming Recent Posts

Using XSLT With Go

I am working on a project that requires pulling and processing different XML feeds from the web and storing the data into MongoDB as JSON. Since new feeds come up everyday, changing the Go program to process and publish new feeds is out of the question. A second constraint is that processing has to work in Iron.io or any other linux cloud based environment. What I needed was a Go program that could take an XML document and XSLT stylesheet at runtime, transform the XML into JSON and then store the JSON to MongoDB.

Manage Dependencies With GODEP

Introduction If you are using 3rd party packages, (packages that you don’t own or control), you will want a way to create a reproducible build every time you build your projects. If you use 3rd party packages directly and the package authors change things, your projects could break. Even if things don’t break, code changes could create inconsistent behavior and bugs. Keith Rarick’s tool godep is a great step in the right direction for managing 3rd party dependencies and creating reproducible builds.

Cross Compile Your Go Programs

Introduction In my post about building and running programs in Iron.Io, I needed to switched over to my Ubuntu VM to build linux versions of my test programs locally. I love the ability to have Ubuntu available to me for building and testing my code. However, if I can stay on the Mac side it is better. I have wanted to learn how to cross compile my Go programs for the two platforms I use, darwin/amd64 and linux/amd64.

Go Package Management Call To Action

Nathan Youngman, with the help of others, has produced this document outlining months of research and discovery. I would appreciate everyone to honestly read it before continuing with my post.

Detecting Race Conditions With Go

I always find it interesting when I realize that something I have been practicing or dealing with for a long time has a name. This time it happens to be race conditions. This is something you can’t avoid thinking about as soon as you have more than one routine sharing any kind of resource. If you’re not thinking about race conditions in your code, now is the time. A race condition is when two or more routines have access to the same resource, such as a variable or data structure and attempt to read and write to that resource without any regard to the other routines.

Recursion And Tail Calls In Go

This article was written for and published by Gopher Academy I was looking at a code sample that showed a recursive function in Go and the writer was very quick to state how Go does not optimize for recursion, even if tail calls are explicit. I had no idea what a tail call was and I really wanted to understand what he meant by Go was not optimized for recursion. I didn’t know recursion could be optimized.

Pool Go Routines To Process Task Oriented Work

After working in Go for some time now, I learned how to use an unbuffered channel to build a pool of goroutines. I like this implementation better than what is implemented in this post.  That being said, this post still has value in what it describes. https://github.com/goinggo/work On more than one occasion I have been asked why I use the Work Pool pattern. Why not just start as many Go routines as needed at any given time to get the work done?

Ultimate Go Schedule

Location Start Date End Date Class Enrollment
Atlanta, Georgia Thursday, March 9th, 2017 at 9:00 AM Friday, March 10th, 2017 at 5:00 PM Ultimate Enroll Now
San Francisco, CA Tuesday, April 4th, 2017 at 9:00 AM Wednesday, April 5th, 2017 at 5:00 PM Ultimate Enroll Now
San Francisco, CA Tuesday, April 27th, 2017 at 9:00 AM Wednesday, April 28th, 2017 at 5:00 PM Data Enroll Now
Miami, FL Saturday, May 20th, 2017 at 9:00 AM Sunday, May 21st, 2017 at 5:00 PM Ultimate Enroll Now
Utrecht, Netherlands Friday, June 2nd, 2017 at 9:00 AM Sunday, June 4th, 2017 at 5:00 PM Ultimate Enroll Now
New York, NY Saturday, June 10th, 2017 at 9:00 AM Sunday, June 11th, 2017 at 6:00 PM Data Enroll Now