Six repos • The Applied Go Weekly Newsletter 2024-07-14

Your weekly source of Go news, tips, and projects
When it's rainy outside, or sunny, cloudy, hot, or cold—weather doesn't matter that much, honestly—, I sometimes think about the future of Go. Will AI code generation make programming skills and language mastery irrelevant? Or will Go rather play an increasingly important role in AI? Will the language stay mean and lean, or will it finally go down the path of all software and become bloated and an unrecognizable caricature of its former self? Will Go become the language of choice for short-time, low-effort production of robust, fast, and maintainable software?
Sure, there are a few aspects that are beyond our (or anyone's) control. Apart from this, it's on us to take advantage of this simple, efficient, developer-friendly, and future-proof language and make the world a better place.
👉 This is the second of three summer break issues and the first one I really prepared in advance because I was AFK for the whole week. 👈
Featured Articles
Testing a WebSocket that could hang open for hours | nicole@web
Why does a WebSocket stay open for hours despite a one-second timeout? Nicole Tietz investigates.
Locally patching dependencies in Go - Eli Bendersky's website
What can you do if you need to change the behavior of an external dependency for, say, testing your code or hunting down a bug? Eli Bendersky presents three options. (I prefer #2, Go workspaces.)
Sqlc: 2024 check in — brandur.org
What to use for accessing a relational database? Plain SQL, an ORM, or a SQL-first code generator like sqlc? Why not asking someone who uses the technique in question for years.
Realtime diagnostic logging, or how to really spy on your Go web apps—Martian Chronicles, Evil Martians’ team blog
Evil Martians Vladimir Dementyev and Travis Turner explore options of temporarily enabling verbose logging (without restarts) and creating a real-time "spy" logger.
Go tip of the week: 6 repos that help you get better in Go
When learning a language (or striving to get better in it), there is no way around getting your hands dirty. Diving right into large production-level projects, however, might not be the best approach. Such projects aren't always the most clean and idiomatic ones. Better start with small examples that you can explore, tweak, and expand.
To help you with this step, I dug deep into my archive to present you six repositories that contain coding examples, algorithms, data structures, and more. Next time you have bad weather, use the indoor time and these repos for playful learning.
inancgumus/learngo: ❤️ 1000+ Hand-Crafted Go Examples, Exercises, and Quizzes. 🚀 Learn Go by fixing 1000+ tiny programs.
Inanc Gumus' insanely large repository of Go code to play with and learn from. (Switching to nitpick mode: The correct spelling of his name is
İnanç Gümüş.)
TheAlgorithms/Go: Algorithms and Data Structures implemented in Go for beginners, following best practices.
Algorithms galore, from AhoCorsarick to XOR.
emirpasic/gods: GoDS (Go Data Structures) - Sets, Lists, Stacks, Maps, Trees, Queues, and much more
Canonical data sets, implemented in Go.
Workiva/go-datastructures: A collection of useful, performant, and threadsafe Go datastructures.
If you are looking for a particular tree type, chances are you find it here. Plus queues, skiplists, and other data structures.
teivah/100-go-mistakes: 📖 100 Go Mistakes and How to Avoid Them
No, the tagline is not stolen. This repository belongs to the book of the same name.
qor/qor: QOR is a set of libraries written in Go that abstracts common features needed for business applications, CMSs, and E-commerce systems.
This is not an average set of algorithms and/or data structures. And, notably, this is not a framework. Instead, QOR provides modules you'd typically need in a business application, like access control, media libraries, admin interfaces, or batch processing.
Quote of the week: Love programming again
I did C# dev for over a decade before becoming a data engineer after I got bored of writing anything that wasn't SQL. I picked up Go last year and it made me love programming again.
Completely unrelated to Go
Setting up Gitea on Kubernetes from scratch - Xe Iaso
"I set up Gitea on Kubernetes with only the documentation, a dream, and existential suffering."
Hot tip: If a project shall be good, always start with existential suffering.
With Nothing to Do - by Thorsten Ball - Register Spill
Nightmare on Dev Street: You go to work, day by day, knowing that you have nothing to do.
