Best of GolangJune 2025

  1. 1
    Article
    Avatar of webdevWebDev·49w

    I Built a Terminal-Based Portfolio You Can Access via SSH

    A developer created an innovative terminal-based portfolio accessible via SSH using React Ink for the UI and a custom Go SSH server. The project combines React components with terminal interfaces, allowing users to explore a portfolio directly from their command line without needing a browser. The setup runs on a VPS and demonstrates creative ways to showcase developer work by meeting developers in their native environment.

  2. 2
    Article
    Avatar of awegoAwesome Go·47w

    Best Programming Language for 2026

    Python remains the top choice for AI/ML and automation, while Rust gains momentum for systems programming and blockchain development. JavaScript/TypeScript continues dominating web development, Go excels for backend microservices, and Swift/Kotlin rule mobile development. The guide provides career-specific language recommendations and emphasizes choosing based on your goals rather than popularity alone.

  3. 3
    Article
    Avatar of awegoAwesome Go·48w

    MVC vs DDD: Go Language Architecture Deep Dive

    Compares MVC and DDD architectural patterns for Go applications, examining their structural differences, code organization approaches, and use cases. MVC organizes code by technical layers (Controller/Service/Repository) and suits smaller systems with stable requirements, while DDD structures code around business domains with four layers (Interface/Application/Domain/Infrastructure) and better handles complex business logic. The guide provides detailed directory structures, code examples, and implementation best practices for both patterns in Go, highlighting that MVC offers simplicity and rapid development while DDD provides better scalability and maintainability for complex systems.

  4. 4
    Article
    Avatar of awegoAwesome Go·49w

    Modern (Go) application design

    Explores modern Go application design principles emphasizing structure and composability. Discusses two key approaches: use case-driven structure (like CLI tools) and data model-first principles using repository patterns with generics. Demonstrates how to separate concerns through layered architecture with storage, business, and view layers. Shows practical examples of implementing CRUD operations, aggregates, and the MVC pattern while maintaining clean boundaries between components for better testability and maintainability.

  5. 5
    Article
    Avatar of devtoolsDev Tools·47w

    Chiko - TUI gRPC client

    Chiko is a Terminal User Interface client for gRPC that simplifies testing and interacting with gRPC services. Built with grpcurl and rivo's tview libraries, it provides an intuitive visual interface to overcome the complexity of remembering command-line flags and syntax when working with gRPC services.

  6. 6
    Article
    Avatar of dockerDocker·51w

    Learn how to make an AI chatbot from scratch

    Docker Model Runner simplifies AI chatbot development by integrating LLM execution into familiar Docker workflows. The tutorial demonstrates building a production-ready chatbot with React frontend, Go backend, and comprehensive observability using Prometheus, Grafana, and Jaeger. Key benefits include local model execution for privacy and cost control, streaming responses, real-time metrics collection, and simplified deployment through Docker Compose. The architecture treats AI models as first-class services, eliminating complex setup while providing detailed performance insights including tokens per second, memory usage, and response latency.

  7. 7
    Video
    Avatar of awesome-codingAwesome·50w

    I built my own Redis in Go and it was too easy...

    A developer builds a custom in-memory database in Go as an alternative to Redis, implementing core features like TCP server with goroutines, command parsing for basic operations (set, get, delete), data persistence through file logging, pub/sub messaging using Go channels, and key expiration with background cleanup routines. The project demonstrates how Go's concurrency features make building database-like systems surprisingly straightforward.

  8. 8
    Article
    Avatar of communityCommunity Picks·47w

    Caddy Guide / Cheatsheet

    A comprehensive guide covering Caddy web server configuration, including building custom modules with XCaddy, setting up SSL certificates with Let's Encrypt, configuring systemd services, and implementing various server configurations like reverse proxying and on-demand TLS.

  9. 9
    Article
    Avatar of antonzAnton Zhiyanov·48w

    JSON evolution in Go: from v1 to v2

    Go 1.25 introduces json/v2 package with significant changes from v1. Key improvements include new MarshalWrite/UnmarshalRead functions for direct I/O operations, streaming encode/decode via jsontext package, configurable options for formatting and behavior, enhanced field tags (inline, format, unknown), flexible custom marshalers with MarshalFunc/UnmarshalFunc, and changed default behaviors (nil slices/maps marshal to []/{}). Performance shows similar marshaling speed but 2.7x-10.2x faster unmarshaling. The package remains experimental requiring GOEXPERIMENT=jsonv2 flag.

  10. 10
    Article
    Avatar of netguruNetguru·47w

    Golang vs C#: Backend Battle - What Top Companies Choose

    Go and C# represent different philosophies for backend development. Go offers superior memory efficiency (25MB vs 162MB), faster initial response times, and simpler deployment with 6MB container images. C# provides a mature ecosystem, comprehensive tooling, and better enterprise integration. Go excels in microservices and cloud-native applications, while C# dominates desktop applications and enterprise systems. Performance differences narrow under sustained load, with both languages suitable for production workloads. The choice depends on team expertise, infrastructure, and specific project requirements rather than absolute performance metrics.

  11. 11
    Article
    Avatar of antonzAnton Zhiyanov·48w

    Go 1.25 interactive tour

    Go 1.25 introduces significant improvements including the synctest package for testing time-dependent code with fake clocks, a major json/v2 package with custom marshalers and performance improvements, container-aware GOMAXPROCS that respects CPU limits in Docker/Kubernetes, an experimental Green Tea garbage collector optimized for multi-core systems, built-in CSRF protection, WaitGroup.Go method for simplified goroutine management, flight recording for execution tracing, expanded os.Root methods for safer filesystem operations, and various testing enhancements.

  12. 12
    Video
    Avatar of youtubeYouTube·49w

    Go just got faster..

    Go 1.25, expected in August 2025, introduces several performance improvements including the experimental Green Tea garbage collector promising 10-40% reduction in GC overhead, a new JSON v2 package that's 2.7-21x faster than the current implementation, DWARF version 5 debug information for faster compilation, and enhanced address sanitizer with leak detection. These features are currently experimental and require build-time flags to enable.

  13. 13
    Article
    Avatar of lobstersLobsters·48w

    j3s.sh

    A developer shares their journey from struggling with traditional static site generators like Hugo and Jekyll to building their personal website as a single Go binary. They prioritize maintainability, reliability, and minimal dependencies, ultimately creating a dynamic website that serves content directly from a compiled binary. The approach offers simplicity in deployment, eliminates external dependencies, and enables dynamic features like IP address display and RSS feed generation. The author advocates for starting small with personal projects and building custom solutions rather than relying on complex frameworks.

  14. 14
    Article
    Avatar of awegoAwesome Go·47w

    HTTP/3 Series

    A hands-on series exploring HTTP/3 implementation in Go, covering protocol fundamentals, client-server streaming, and practical applications. The content focuses on building HTTP/3 clients and servers, with emphasis on streaming data efficiently for use cases like file uploads, telemetry, and real-time feeds without memory buffering.

  15. 15
    Article
    Avatar of communityCommunity Picks·51w

    Structured errors in Go

    Explores advanced error management patterns in Go applications, particularly HTTP APIs, by bridging structured logging with error handling. Demonstrates how to create ergonomic error management systems that carry contextual metadata through call trees using Go's context package. Introduces techniques for decorating errors with structured data that can be easily consumed by logging systems and monitoring tools, while maintaining simplicity and developer ergonomics. Includes practical implementation examples and introduces the author's fault library for production use.

  16. 16
    Article
    Avatar of awegoAwesome Go·49w

    Best Database Migration Tools for Golang

    A comprehensive guide comparing five database migration tools for Go applications: Goose (lightweight and SQL-focused), Migrate (CLI-first with broad database support), Gormigrate (GORM-integrated), SQLx (custom migration workflows), and Flyway (enterprise-grade). Each tool is explained with practical code examples, use cases, and a comparison table to help developers choose based on project size, team needs, and database requirements. The guide includes best practices for versioning, testing, and implementing transactional migrations.

  17. 17
    Article
    Avatar of golangGo·51w

    No ] syntactic support for error handling - The Go Programming Language

    The Go team has officially decided to stop pursuing syntactic language changes for error handling after years of failed proposals including check/handle, try builtin, and the ? operator. Despite error handling verbosity being the top complaint in user surveys, none of the proposed solutions gained sufficient community consensus. The team will focus on library-based solutions and tooling improvements instead, closing future syntax-focused error handling proposals without investigation.

  18. 18
    Article
    Avatar of golangnutsGo Developers·49w

    Building Real-World Go RESTful APIs with gorest: A Practical Approach for Modern Developers

    gorest is a production-ready Go starter kit that simplifies building secure RESTful APIs by providing multi-database support, flexible authentication (Basic Auth, JWT, 2FA), security features like CORS and rate limiting, and a modular architecture. It addresses common pain points in Go API development by offering comprehensive tooling beyond basic routing frameworks, including auto migrations, graceful shutdown, and practical examples for real-world CRUD operations.

  19. 19
    Article
    Avatar of datadogDatadog·50w

    Announcing Go tracer v2.0.0

    Datadog releases Go tracer v2.0.0 with a simplified API, enhanced security through modular dependencies, and improved developer experience. Key changes include new import URLs using github.com instead of gopkg.in, config structs for better performance, and independent modules for integrations. A transitional v1.74.0 version allows gradual migration for large codebases, while a migration tool simplifies the upgrade process.

  20. 20
    Article
    Avatar of communityCommunity Picks·47w

    kelindar/event: Simple internal event bus for Go applications

    kelindar/event is a high-performance, in-process event dispatcher library for Go that enables decoupling of modules through event-driven patterns. It processes millions of events per second with 4x to 10x better performance than channels, supports both synchronous and asynchronous processing, and works with any type implementing the Event interface. The library provides both a default global dispatcher and specific dispatcher instances, making it ideal for lightweight pub/sub patterns within single Go processes while being unsuitable for inter-service communication or event persistence scenarios.

  21. 21
    Article
    Avatar of golangnutsGo Developers·49w

    I built a terminal Git client in Go called Froggit 🐸 a beginner-friendly TUI to explore Git with ease

    A developer created Froggit, a beginner-friendly Git client with a text-based user interface built in Go. The tool aims to make Git more approachable for newcomers who find the command line intimidating, offering visual feedback for Git operations like staging, commits, and branch switching. While still in development, it serves as both a learning project and an alternative to more complex Git tools.

  22. 22
    Article
    Avatar of communityCommunity Picks·50w

    alvinunreal/tmuxai: AI-Powered, Non-Intrusive Terminal Assistant

    TmuxAI is an intelligent terminal assistant that integrates directly into tmux sessions, providing AI-powered help without disrupting existing workflows. It observes terminal content across multiple panes, offers contextual assistance through a dedicated chat interface, and can execute commands with user permission. The tool features multiple modes including observe mode for reactive assistance, prepare mode for enhanced shell integration, and watch mode for proactive monitoring. It supports various AI providers through OpenRouter API and includes context management features to optimize token usage.

  23. 23
    Article
    Avatar of communityCommunity Picks·49w

    uber/kraken: P2P Docker registry capable of distributing TBs of data in seconds

    Kraken is Uber's open-source P2P Docker registry that can distribute terabytes of data in seconds using a peer-to-peer network. It supports over 15,000 hosts per cluster and handles arbitrarily large container images without performance degradation. The system uses dedicated seeders, agents on each host, and trackers to orchestrate transfers. Kraken has been production-tested at Uber since 2018, distributing over 1 million blobs daily with pluggable storage backends like S3, GCS, and ECR.

  24. 24
    Article
    Avatar of antonzAnton Zhiyanov·49w

    Gist of Go: Race conditions

    Race conditions occur when unpredictable operation order leads to incorrect system state, different from data races which involve unsafe concurrent data access. The article demonstrates how to prevent race conditions using mutexes to protect entire operation sequences, compare-and-set operations for atomic updates, and shared-nothing architecture with channels. Key techniques include making operations idempotent and atomic, using TryLock for non-blocking access, and leveraging Go's sync.Locker interface for flexible locking mechanisms.

  25. 25
    Article
    Avatar of antonzAnton Zhiyanov·50w

    Gist of Go: Data races

    Data races occur when multiple goroutines access the same variable simultaneously with at least one modifying it, leading to unpredictable behavior. Go provides several solutions: the race detector flag to identify races, mutexes (sync.Mutex) to protect critical sections, read-write mutexes (sync.RWMutex) for single-writer multiple-reader scenarios, and channels as alternative synchronization primitives. The article demonstrates these concepts through practical examples of concurrent map modifications and word frequency counting.