Go Language Opinions

Go’s tooling is what stuck with me the most. gofmt is flawless, even on case statements, no matter how hard I try to trick it, it always formats the file correctly. Cross-compilation with GOOS/GOARCH is excellent, shipping a single self-contained binary is genuinely nice to hand off, and the command line tooling is great too. I like that the implementation stays transparent instead of hiding behind framework magic, and I prefer simple structs with methods over deep inheritance hierarchies. Head First Go gave me real confidence with the language, and Powerful Command-Line Applications in Go taught me a lot about building command-line apps, even in languages other than Go, like how easy it is to write a markdown previewer when the standard library gives you so much for free, and to always check out a new language’s argument-parsing frameworks early. Even // comments felt natural to me. ...

September 12, 2026 · 3 min · 429 words · Lewis Cawthorne

Powerful Command-Line Applications in Go

This was a good way to see a number of non-trivial applications in Go. It tackled real projects like a Markdown Previewer and a Port Scanner and used production-grade libraries like Cobra for command-line arguments and Viper for configuration settings. The Markdown Previewer was probably good enough for me to consider using it. Honestly, Cobra and Viper were good enough libraries that it makes me start looking at what my options are for command-line parsing libraries early when studying a new language now. A lot of the examples were big to type, but that is good since it made me feel more comfortable with the language. They were also complicated enough that I made mistakes and got to deal with error messages from the compiler. I will say I was disappointed multiple times that Go’s compiler points out the first error it finds and then stops, so when you fix it you might just be greeted by another error. It’s not like Java or Kotlin where the compiler spits out 10 errors and 5 are probably caused by the earlier errors but the other 5 need to be corrected. The pomodoro app was actually quite usable after I got past the fact that it wouldn’t display correctly in tmux. That was a hard debugging session wondering what was wrong with my output from typing up the code before I finally pinned the blame on running it in a tmux session though, since having a tmux session is just getting so normal to me. Not only did I learn a lot about using Go for small to intermediate-sized projects, but I learned a lot about writing good command-line apps that I can take with me to other languages. ...

August 28, 2026 · 2 min · 290 words · Lewis Cawthorne

Head First Go

Overall, it’s what I expect from a Head First book. It was a perfectly serviceable introduction to the Go programming language. Although it’s a Head First book, I feel like it treated me like an experienced programmer and didn’t waste a lot of time explaining how an if expression worked. Unlike Head First Kotlin which never got to a lot of things that it had to toss into Ten Brief Topics in the Appendix, it felt like it covered all the main topics that needed to be covered to understand Go. It even includes coverage of automated testing and a couple of chapters on web apps. ...

August 11, 2026 · 1 min · 109 words · Lewis Cawthorne