Unfamiliar • The Applied Go Weekly Newsletter 2025-01-05
Your weekly source of Go news, tips, and projects
Unfamiliar
Happy New Year, !
I hope you had a great holiday season.
This is the third issue of the winter pause edition. The newsletter will be back in its full glory on January 12th. ⛄️❄️🌨️☀️
At the beginning of the new year, let me have one look back and another forth.
Looking back
Go exists since 2009 (or 2011, if v1.0 is the starting point). Go is known for its rather stable feature set, only disrupted by a bigger change once, when type parameters (a.k.a. generics) were added. Go primarily evolves through additions to the standard library and the toolchain. The only significant language changes in 2024 were two enhancements to loops: Go 1.22 eliminated the long-standing accidental sharing of loop variables between iterations, and Go 1.23 added functional iterators to range
loops.
Outside the core language, Go 1.22 enhanced net/http.ServeMux
's route pattern matching to accept methods and wildcards, for building much more flexible routing (and probably rendering a few 3rd-party HTTP routers obsolete). Go 1.23 added opt-in telemetry for continued improvement of the Go toolchain. (I opted in right when the option became available.) The most notable library improvement (probably) was the new unique
package that helps save memory by deduplicating values.
As a nice conclusion to the year, the Go Developer Survey 2024 H2 Results came in and, once again, confirmed that gophers are highly satisfied with Go. Two interesting takeaways: Gophers use LLMs for various tasks in their development processes, and SIMD (Single Instruction, Multiple Data) processing seems to become a field of interest, which could lead to native SIMD support in Go.
For my professional life, 2024 has been quite a standstill. I had many plans (too many, apparently!) but somehow, time slipped through my fingers, and before I realized, the year was over and my goals didn't come any closer. That's a great reason to rethink, refine, and reduce my goals for 2025. One thing I'm particularly proud of is that I have been sending out newsletter issues weekly. While preparing each issue consumes quite some time and effort, I love that work and am hell-bent to continue running this newsletter.
Looking forward
2025 is my year of focus. It has become easier than ever to get distracted by an accelerating stream of new inventions, products, services, and developments in the fields of IT any beyond. Time to weed out all that's not helping with progress and reclaim my time for the important things. It's an ongoing effort for sure, but knowing that is half the solution.
For Go, 2025 will certainly be another year of thoughtful growth, with Go 1.24 being only a few weeks away—intended to be released in February. Go 1.24 will support generic type aliases, track tool dependencies, have improved Cgo performance, provide vetting of tests, and much more. Release Candidate 1 is available for testing.
In 2025, Go continues to stand for simplicity and fun in software development. Do you work on a Go project worth sharing with the community? Let me know!
Spotlight: Unfamiliarity vs Complexity
Some food for thought while the new year still unfolds.
I think we all admire Go for its support of writing simple, clear code. Many of us have been burnt by unnecessarily complex projects that generated more technical debt than revenue. Complexity attracts bugs and slows down progress. Complex projects and product portfolios make it difficult to pivot if market demands change. Complexity is arguably a risk factor for any project.
And yet, it is too easy to slap the label "complex" on a system, project, or situation that is just unfamiliar. If you're new to a project, the complexity you perceive might vanish once you dig into the details and start understanding the background of design decisions or implementation rules. Sean Goedecke warns of changing parts of a legacy codebase without understanding, and adhering to, the style the legacy code is written in. While the legacy code might look overly complex and not implemented in the most sensible way, the point here is to maintain consistency. Once you get a feel for the project, writing code in the project's particular way will start feeling more natural.
A project that looks complex might just be unfamiliar.
Quote of the week: 3 hours or nothing.
Rule #1: don’t agree to anything “quick” unless you’re willing to spend 3+ hours on it.
– 3 Hours or Nothing - by Anu Atluru - Working Theorys
(Trust me, I know that the rule works. On the same day I learned about this rule, I immediately broke it by just "quickly" installing Open WebUI—and playing with it for the rest of the evening. Quod erat demonstrandum.)
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