Best of GolangDecember 2025

  1. 1
    Article
    Avatar of otqajuf6zdm9hfrwtlr9nIsaac de Andrade·24w

    The Lost Art of Programming Offline

    Programming without internet access reveals gaps in knowledge and forces reliance on local resources like man pages, system header files, and existing code. This constraint-based approach helps identify mastered domains versus weak areas, makes learning more efficient and personal, and strengthens fundamental skills by eliminating dependency on Stack Overflow, documentation sites, and AI assistants.

  2. 2
    Article
    Avatar of bytebytegoByteByteGo·24w

    How Reddit Migrated Comments Functionality from Python to Go

    Reddit migrated their comments functionality from a legacy Python monolith to a Go microservice, handling their largest dataset and highest write throughput. The migration used "tap compare" for read operations and "sister datastores" for writes, allowing validation with real traffic while maintaining zero risk. Key challenges included cross-language serialization issues, database access pattern differences, and race conditions in verification. The migration succeeded with zero user disruption and delivered an unexpected bonus: p99 latency was cut in half, dropping from occasional 15-second spikes to consistently under 100 milliseconds.

  3. 3
    Article
    Avatar of itsfossIt's Foss·21w

    F*** You! Co-Creator of Go Language is Rightly Furious Over This Appreciation Email

    Rob Pike, co-creator of the Go programming language and legendary computer scientist from Bell Labs, expressed outrage after receiving an AI-generated thank-you email. The email came from an AI agent participating in the AI Village project, where agents were tasked with performing "random acts of kindness" and interpreted this by sending unsolicited emails to famous programmers. Pike's angry response highlights concerns about AI-generated content wasting resources, the environmental cost of AI infrastructure, and the broader societal impact of meaningless AI-generated material flooding our digital spaces.

  4. 4
    Article
    Avatar of antonzAnton Zhiyanov·23w

    Gist of Go: Concurrency is out!

    An interactive book on concurrent programming in Go has been released, covering goroutines, channels, select statements, pipelines, synchronization, race prevention, time handling, signaling, atomicity, testing, and concurrency internals. The book features clear explanations with interactive examples and auto-tested exercises for hands-on practice, suitable for both beginners learning concurrency and developers looking to advance beyond basics.

  5. 5
    Video
    Avatar of youtubeYouTube·23w

    Is Golang still a growing programming language?

    Go remains a stable, growing language in 2024-2025, ranking 4th in JetBrains' promise index and 3rd in GitHub open-source growth. Primary use cases include cloud infrastructure, API/RPC services, and CLI tools. While it dropped from 7th to 11th in TIOBE rankings, GitHub activity shows consistent upward trends. Go developers earn competitive salaries ($76k-$500k), though job postings often emphasize infrastructure roles over explicit Go positions. The language excels at building AI infrastructure but lacks native ML capabilities. Adoption is steady rather than explosive, with professional developers favoring it more than learners.

  6. 6
    Article
    Avatar of threedotslabsThree Dots Labs·24w

    DDD: A Toolbox, Not a Religion

    Domain-Driven Design (DDD) should be treated as a flexible toolbox rather than an all-or-nothing methodology. Most software projects fail due to poor handling of business domain complexity, not technical challenges. The core principle is understanding and modeling the business domain well in code, with strategic patterns (like bounded contexts and core domains) being universally valuable, while tactical patterns should only be applied when they solve actual problems. Developers often over-focus on technical complexity and frameworks instead of domain understanding, leading to legacy code. The key is pragmatically selecting DDD patterns that address real issues in your specific context, avoiding both religious adherence and complete dismissal of the approach.

  7. 7
    Article
    Avatar of antonzAnton Zhiyanov·25w

    Go proposal: Type-safe error checking

    Go 1.26 introduces errors.AsType, a generic alternative to errors.As for type-safe error checking. The new function eliminates reflection overhead, prevents runtime panics, and reduces verbosity by allowing inline type specification. It offers compile-time type safety, better performance, and cleaner scoping of error variables within conditional blocks while maintaining full compatibility with existing error handling patterns.

  8. 8
    Article
    Avatar of lobstersLobsters·24w

    Gin is a very bad software library

    Gin is criticized as an overly complex Go web framework with massive bloat compared to the standard library. The framework requires over 1 million lines of code and 55MB of dependencies to accomplish what net/http does in 25,000 lines. Its API design violates Unix philosophy with enormous interfaces (gin.Context has 100+ methods), creates unnecessary abstraction layers that obscure control flow, and makes migration away nearly impossible once adopted. The article demonstrates how Gin's complexity provides no real benefit over using Go's standard library directly, while significantly increasing binary size, compilation time, and cognitive overhead.

  9. 9
    Article
    Avatar of threedotslabsThree Dots Labs·22w

    How to Know If your Software Is Overcomplicated or Oversimplified?

    Software complexity stems from two extremes: overengineering with unnecessary patterns and oversimplifying complex domains. Essential complexity is inherent to the domain and unavoidable, while accidental complexity comes from poor implementation choices. Simply saying 'keep it simple' is insufficient—achieving simplicity requires deliberate effort and matching architectural patterns to actual problem complexity. Red flags include inability to deploy daily, fear of making changes, and team dissatisfaction. The solution involves using defensive programming, avoiding dogmatic approaches, mixing simple and sophisticated patterns appropriately, and focusing on shipping fast with incremental changes rather than premature optimization.

  10. 10
    Article
    Avatar of antonzAnton Zhiyanov·22w

    Go feature: Modernized go fix

    Go 1.26 reimplements the `go fix` command using the same analysis framework as `go vet`, bringing modernization tools from gopls to the command line. The tool now includes 22 analyzers that automatically update code to use newer language features like `any` instead of `interface{}`, `slices.Sort` instead of `sort.Slice`, range-over-int loops, and iterator-based APIs. Unlike `go vet` which reports problems, `go fix` focuses on safe, automated code modernization that doesn't indicate bugs but helps keep codebases current with Go's evolving idioms.

  11. 11
    Article
    Avatar of jetbrainsJetBrains·24w

    GoLand 2025.3 Is Out!

    GoLand 2025.3 introduces on-the-fly resource leak detection to catch unclosed files and connections, bundled Terraform plugin with syntax highlighting and code completion, and multi-agent AI support with Claude Agent and Junie. The release includes Kubernetes deployment improvements with in-editor secret management and port forwarding, single-file editing without project setup, and golangci-lint formatting support enabled by default. Performance enhancements reduce memory warnings and improve indexing for large projects, while the new Islands theme becomes the default UI.

  12. 12
    Article
    Avatar of ghblogGitHub Blog·22w

    This year’s most influential open source projects

    GitHub Universe 2025's Open Source Zone featured twelve influential projects spanning diverse domains: Appwrite (backend platform), GoReleaser (Go release automation), Homebrew (macOS package manager), Ladybird (independent browser), Moondream (lightweight visual AI), Oh My Zsh (shell framework), OpenCV (computer vision library), OSPSB (security baseline), p5.js and Processing (creative coding), PixiJS (2D graphics engine), Spark (3D Gaussian Splatting renderer), and Zulip (threaded team chat). Each project showcases different aspects of open source innovation, from developer tooling to AI and graphics rendering.

  13. 13
    Article
    Avatar of antonzAnton Zhiyanov·22w

    Detecting goroutine leaks in modern Go

    Go 1.24-1.26 introduces new tools for detecting goroutine leaks: the synctest package for testing and the goleakprofile profile for production monitoring. The article explains common leak patterns including unclosed channels, double sends, early returns, and orphaned workers, demonstrating how to detect each using synctest and pprof. The goleakprofile uses garbage collector marking to identify permanently blocked goroutines by checking if they're waiting on unreachable synchronization objects. Both tools provide detailed stack traces showing exactly where leaks occur, making it significantly easier to catch concurrency bugs during development and in production systems.

  14. 14
    Article
    Avatar of devclassDEVCLASS·24w

    AWS shows Rust love at re:Invent: 10 times faster than Kotlin, one tenth the latency of Go • DEVCLASS

    AWS now uses Rust by default for data plane projects after finding it significantly faster than Kotlin and Go. Aurora DSQL saw 10x performance improvement when rewritten from Kotlin to Rust. Datadog reduced Lambda cold start times from 700-800ms to 80ms by migrating from Go to Rust, with their observability agent running nearly 3x faster overall. The performance gains stem from Rust avoiding garbage collection overhead, which consumed 30% of execution time in Go code handling many small memory allocations. AWS Lambda now offers general availability for Rust functions using an OS-only runtime.

  15. 15
    Article
    Avatar of hnHacker News·21w

    pranshuparmar/witr: Why is this running?

    witr is a Linux command-line tool that explains why processes are running by building causal chains from PIDs. It answers questions like "why is this running?" by tracing process ancestry through systemd, Docker, PM2, and other supervisors. The tool supports queries by process name, PID, or port number, and provides human-readable output showing how processes started, what's keeping them running, and their context (working directory, Git repo, container info). It's designed for debugging and incident response, offering multiple output formats including short summaries, process trees, and JSON.