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.
Happy coding! ʕ◔ϖ◔ʔ
Questions or feedback? Drop me a line. I'd love to hear from you.
Best from Munich, Christoph
Not a subscriber yet?
If you read this newsletter issue online, or if someone forwarded the newsletter to you, subscribe for regular updates to get every new issue earlier than the online version, and more reliable than an occasional forwarding.
Find the subscription form at the end of this page.
How I can help
If you're looking for more useful content around Go, here are some ways I can help you become a better Gopher (or a Gopher at all):
On AppliedGo.net, I blog about Go projects, algorithms and data structures in Go, and other fun stuff.
Or visit the AppliedGo.com blog and learn about language specifics, Go updates, and programming-related stuff.
My AppliedGo YouTube channel hosts quick tip and crash course videos that help you get more productive and creative with Go.
Enroll in my Go course for developers that stands out for its intense use of animated graphics for explaining abstract concepts in an intuitive way. Numerous short and concise lectures allow you to schedule your learning flow as you like.
Christoph Berger IT Products and Services
Dachauer Straße 29
Bergkirchen
Germany