Follow the adventures of Captain Seuros and the crew of the RMNS Atlas Monkey as they navigate the treacherous waters of software engineering across the cosmos.| Seuros Blog
South Dakota is full of surprises, from wide-open prairies and […] The post Midwest Road Trip: South Dakota Family Adventure appeared first on Indy with Kids.| Indy with Kids
When most families start dreaming up Midwest road trips, destinations […] The post Nebraska with Kids: Where the Wild West Meets White Sand Beaches appeared first on Indy with Kids.| Indy with Kids
Bevor bei Sparfuchs Mike Schilli ein neues Gadget in den Haushalt kommt, überwacht er dessen Stromverbrauch mit einem Go-Programm und entscheidet mittels aufschlussreicher Graphen, ob es bleiben…| Linux-Magazin
What Is the Principle Behind Go's GMP Scheduler| en.smallyu.net
In an attempt to use Go in the context of AWS, I wanted to see how Go would work with AWS Lambda. I decided to create a small project where the function would take an image and convert it to an ASCII art. Using Go for serverless functions Using Go for serverless functions makes a lot of sense. Speed of execution keeps the costs down and delivers the results quickly. When you are getting charged by the amount of resources you consume and the time it takes to complete your function, using a tec...| Evgenii Pendragon
本文永久链接 – https://tonybai.com/2025/08/31/the-simplest-thing-that-could-possibly-work 大家好,我是Tony Bai。 在我们解读了Github工程师Sean Goedecke关于“无聊即可靠”的系统设计和API设计理念之后,他再次带来了一篇精彩的的文章——《Do the simplest thing that could possibly work》。这既是对前两篇文章思想的延续,更是将其核心哲学提炼为一条终极黄金法则:在软件设计的每一个环节,都应“...| Tony Bai
本文永久链接 – https://tonybai.com/2025/08/30/python-an-origin-story 大家好,我是Tony Bai。 在编程语言的星空中,很少有哪颗星像Python一样,以如此温和而坚定的姿态,从一个不起眼的个人项目,成长为照亮地球未来的科技灯塔。如今,当我们谈论数据科学、人工智能时,Python几乎是绕不开的默认选项。但这一切的起点,竟源于一位程序员在阿姆斯特丹的圣诞假期里,为了“打发时间...| Tony Bai
本文永久链接 – https://tonybai.com/2025/08/29/good-api-design 大家好,我是Tony Bai。 在解读《Everything I know about good system design》一文时,我们曾提炼出一个核心观点:“无聊即可靠”。这个看似反直觉的法则,在追求创新与复杂的软件工程世界里,如同一股清流。现在,这个“无聊”哲学将从宏观的系统设计,延伸至微观但至关重要的领域——API设计。 Sean Goedecke在其后续力作《Every...| Tony Bai
本文永久链接 – https://tonybai.com/2025/08/28/go-primer-published 大家好,我是Tony Bai。 前不久,在知乎上看到一个关于 Go 社区的帖子,其中一条评论让我感慨良多: “GopherChina 都没了,国内还有几人坚持?Tony Bai好像还在更新” 短短一句话,道尽了社区的变迁与坚持的不易。这句来自读者的回答,让我内心欣慰,也让我有机会停下来,审视自己在这条路上走了多远,以及为什么还...| Tony Bai
本文永久链接 – https://tonybai.com/2025/08/27/go-interface-embrace-data 大家好,我是Tony Bai。 在 Go 语言的世界里,接口(interface)一直被视为其设计哲学的基石之一——它只关心一个类型能做什么(行为),而不关心它是什么(结构)。这种基于方法集的鸭子类型,赋予了 Go 独一无二的灵活性和解耦能力。然而,随着 Go 1.18 泛型的到来,一个深刻的问题被摆上了台面:当我们需要编...| Tony Bai
本文永久链接 – https://tonybai.com/2025/08/26/good-system-design 大家好,我是Tony Bai。 在技术圈,我们常常被各种“炫技式”的系统设计建议所包围。从入门级的“你一定没听说过队列吧?”到专家级的“在数据库里存布尔值简直是灾难”,这些建议要么过于肤浅,要么过于精巧,往往脱离了大多数工程实践的真实上下文。就连《设计数据密集型应用》这样的经典之作,虽然深刻,...| Tony Bai
本文永久链接 – https://tonybai.com/2025/08/25/go-is-still-not-good 大家好,我是Tony Bai。 在技术圈,平静的湖面下往往暗流涌动。对于Go语言社区而言,这股潜藏已久的暗流,被近期的一篇名为《Go is still not good》的博文彻底引爆。作者Thomas Habets,一位自称拥有超过十年Go使用经验的资深开发者,在他的这篇文章中系统性地列举了他眼中Go语言的“七宗罪”。这篇文章迅速登上Hacker News...| Tony Bai
A discussion of testing asyncronous code and an exploration of the `testing/synctest` package. Based on the GopherCon Europe 2025 talk with the same title.| go.dev
August 26, 2025 at 20:38| eli.thegreenplace.net
"I have two news for you, bad and worse," said the mechanic. "The battery is dead and I won't get a new one until Monday. Forget about your annual inspection today," he continued. "But..." you started. "There is no but." he cut short. No setup, no testing. Just like in your Go program.| Jakub Jarosz
This morning a one line change had several of us tearing up the fabric of reality trying to understand why a failing test wasn’t failing, or, in fact, being run at all. Increasingly frantic efforts to upgrade/downgrade Go, run the tests on another machine, run the tests in CI, all served to only unnerve us […]| Dave Cheney
Today’s post comes from a recent Go pop quiz. Consider this benchmark fragment. A convenience wrapper around sort.Sort(sort.StringSlice(s)), sort.Strings sorts the input in place, so it isn’t expected to allocate (or at least that’s what 43% of the tweeps who responded thought). However it turns out that, at least in recent versions of Go, each […]| Dave Cheney
The Go compiler’s SSA backend contains a facility to produce HTML debugging output of the compilation phases. This post covers how to print the SSA output for function and methods. Let’s start with a sample program which contains a function, a value method, and a pointer method: Control of the SSA debugging output is via […]| Dave Cheney
Per the overlapping interfaces proposal, Go 1.14 now permits embedding of interfaces with overlapping method sets. This is a brief post explain what this change means: Let’s start with the definition of the three key interfaces from the io package; io.Reader, io.Writer, and io.Closer: Just as embedding a type inside a struct allows the embedded type’s […]| Dave Cheney
A few days ago Fatih posted this question on twitter. I’m going to attempt to give my answer, however to do that I need to apply some simplifications as my previous attempts to answer it involved a lot of phrases like a pointer to a pointer, and other unhelpful waffling. Hopefully my simplified answer can […]| Dave Cheney
Conventional wisdom dictates that the larger the number of types declared in a Go program, the larger the resulting binary. Intuitively this makes sense, after all, what’s the point in defining a bunch of types if you’re not going to write code that operates on them. However, part of the job of a linker is […]| Dave Cheney
Programmers have a tendency to be superstitious. Particularly, when a programmer hears that copies are expensive, they start to see them everywhere, especially when they learn that, in Go, every assignment is a copy. Consider this code; x is three orders of magnitude larger than y, is the assignment of x to a more expensive […]| Dave Cheney
This article was derived from my GopherCon Israel 2020 presentation. It’s also quite long. If you’d prefer a shorter version, head over to the-zen-of-go.netlify.com. A recording of the presentation is available on YouTube. How should I write good code? Something that I’ve been thinking about a lot recently, when reflecting on the body of my […]| Dave Cheney
This is a thought experiment in API design. It starts with the classic Go unit testing idiom: func TestOpenFile(t *testing.T) { f, err := os.Open("notfound") if err != nil { t.Fatal(err) } // ... } What’s the problem with this code? The assertion. if err != nil { ... } is repetitive and in the […]| Dave Cheney
APIs should be easy to use and hard to misuse. — Josh Bloch A good example of a simple looking, but hard to use correctly, API is one which takes two or more parameters of the same type. Let’s compare two function signatures: What’s the difference between these functions? Obviously one returns the maximum of […]| Dave Cheney
This is a post about performance. Most of the time when worrying about the performance of a piece of code the overwhelming advice should be (with apologies to Brendan Gregg) don’t worry about it, yet. However there is one area where I counsel developers to think about the performance implications of a design, and that is API design.| Dave Cheney
A few weeks ago Anton Zhiyanov published the blog post Expressive tests without testify/assert. It's a good and well thought-out post, and I recommend giving it a read if you haven't already. In the post, Anton makes the argument for not using packages like testify/assert for your test assertions, and instead creating your own minimal set of assertion helpers to use in your tests. In fact, so minimal that there are only 3 helpers he uses: AssertEqual, AssertErr and AssertTrue.| www.alexedwards.net
Goroutines Are Cheap, but Not Free| Fillmore Labs Blog
Understanding Go Error Types: Pointer vs. Value| Fillmore Labs Blog
New GOMAXPROCS defaults in Go 1.25 improve behavior in containers.| go.dev
Filippo Valsorda founded Geomys last year as an "organization of professional open source maintainers", providing maintenance and support for critical packages in the Go language ecosystem backed by clients in …| Simon Willison’s Weblog
You’re in the middle of a Teams call with your DevOps crew when a service starts throwing alerts. Requests are piling up, some users are getting errors, and the backend logs look like they’ve been hit by a firehose. You could spin up more servers, but| Hexmos Journal
If you’ve ever worked with Rust, you’d know it feels like talking straight to your computer’s core. It’s a system programming language known for its direct line to hardware—no middleman required. And why does this matter? Well, the programming language you pick can set the course for your entire project. Deciding which language to use […] The post Rust vs Alternative Programming Languages: How Do They Compare? appeared first on K&C. The post Rust vs Alternative Programming Languag...| K&C
I used to use the go log package, then I switched to the slog package, and it’s been a bumpy ride.| flak.tedunangst.com
Perl has a regex option /o, which pretends to optimize your code, but actually introduces bugs. Go has been missing out. Until now.| flak.tedunangst.com
The go module proxy caches requests from users, so everyone has a consistent and reliable experience regardless of upstream host. But what if the go proxy is contributing to the instability of the upstream host? There have been other complaints about the go proxy, that’s just the way it works, but I collected a few minutes of logs to examine that may be interesting.| flak.tedunangst.com
本文永久链接 - https://tonybai.com/2025/08/06/go-new-engine-of-old-languages 大家好,我是Tony Bai。 我先来描述一种编程语言生态,请你猜猜它是谁: 它诞生于 1995 年,旨在为当时一个叫“万维网”的新| tonybai.com
Vendoring. Generics. These are seen as big issues in the Go community but there’s another issue that’s rarely mentioned — application package layout. Every Go application I’ve ever worked on appears to have a different answer to the question, how should I organize my code? Some applications push| Go Beyond
Using eBPF to record your programs dying breathes| Discover the Performance Engineer in you. | Polar Signals
After years of comfortable cruising through the Ruby nebula, I discovered something that changed everything. This is the story of why a die-hard Rubyist decided to learn Go—and what I found on the other side.| Seuros Blog - Navigation Logs from the Ruby Nebula
Why Go is a compelling choice for building CLI tooling| Kartones' Blog
Viewstamped replication(VR) is a replication technique that takes care of failures when one or more nodes end up crashing in a cluster. It works as a wrapper on top of a non-distributed system & allows the underlying business logic to be applied independently while the protocol itself takes care of replication. The protocol was introduced in the paper and then was revised with a set of optimizations under a new paper known as Viewstamped replication revisited. | Distributed Computing Musings
Have you ever wondered what happens with the variables you define in your Golang (Go) programs? Do they exist forever, or are they recycled at some point? Where do they live in memory and how are they managed?| blog.allegro.tech
Faced with a data-ingestion challenge at a massive scale, Cloudflare's Business Intelligence team built a new framework called Jetflow.| The Cloudflare Blog
本文永久链接 - https://tonybai.com/2025/07/25/go-vs-rust-vs-cpp-in-complexity) 大家好,我是Tony Bai。 最近,一张关于编程语言规范词数统计的图表,在技术圈广为流传。它以一种极其直观、甚至有些残酷的方| tonybai.com
rqlite is a lightweight, user-friendly, open-source, distributed relational database. It’s written in Go and uses SQLite as its storage engine. Recent versions—8.38.0 through 8.42.0—introduce several notable improvements, including Google Cloud Storage support, new HTTP APIs for cluster control, and improvements to Backup support. New Features and Enhancements Leader Stepdown API and CLI SupportVersions 8.40.0 through…| Vallified
Test coverage of delicate Go cryptographic assembly through a new mutation testing framework.| words.filippo.io
Мабуть, всі користувались операторами в Kubernetes, наприклад – PostgreSQL operator, VictoriaMetircs Operator. Але що там відбувається “під капотом”? Як і до чого застосовуються CustomResourceDefinition (CRD), і що таке, власне “оператор”? І, врешті решт – в чому різниця між “Kubernetes Operator” та “Kubernetes Controller”? В п...| RTFM: Linux, DevOps та системне адміністрування
Operating systems expose a wall clock that can leap or slew with NTP and a monotonic clock that never runs backward. In Go, only time.Now (might) carries both readings, while values from time.Parse, time.Date, etc., are wall-clock-only—so naïve equality checks or time.Since on those can mislead when the system clock shifts.| VictoriaMetrics
Perhaps everyone has used operators in Kubernetes, for example, PostgreSQL operator, VictoriaMetrics Operator. But what’s going on under the hood? How and to what are CustomResourceDefinition (CRD) applied, and what is an “operator”? And finally, what is the difference between a Kubernetes Operator and a Kubernetes Controller? In the previous part – Kubernetes: Kubernetes APIs,… Read More » The post Kubernetes: what are the Kubernetes Operator and CustomResourceDefinition first app...| RTFM: Linux, DevOps, and system administration
Jacob_Ray_Pehringer| Jacob_Ray_Pehringer
Memory safety is all the rage these days. But what does the term even mean? That turns out to be harder to nail down than you may think. Typically, people use this term to refer to language...| www.ralfj.de
本文永久链接 - https://tonybai.com/2025/07/22/cedardb-choose-cpp-rather-than-rust 大家好,我是Tony Bai。 近年来,Rust 语言无疑是技术圈最炙手可热的明星。它以“内存安全”的核心承诺,向统治了系统编程领| tonybai.com
本文永久链接 - https://tonybai.com/2025/07/19/go-understand-the-zen-of-python-better-than-python 大家好,我是Tony Bai。 最近,在国外的 Go 语言社区(Reddit r/golang)上,一个帖子引发了热烈的讨论。| tonybai.com
I wanted to learn more about blockchain and how it works for a while now. Like many others, I have heard plenty about the applications of blockchain from cryptocurrency to NFT to healthcare ledgers. In this post, we will explore a simple blockchain application which will showcase one the main features of blockchain - the chaining itself. This application builds a chain of blocks that contain some simple transaction data which comprise a simple ledger application.| Evgenii Pendragon
Go 1.24's Swiss Tables cut our map memory usage by up to 70% in high-traffic workloads. Here's how we profiled the savings and improved performance.| Datadog
Discover GORM's powerful features for seamless database management in Go with practical examples and advanced techniques.| DEV Community
Historically I have worked on many projects related to high-performance Protobuf, be that on the C++ runtime, on the Rust runtime, or on integrating UPB, the fastest Protobuf runtime, written by my colleague Josh Haberman. I generally don’t post directly about my current job, but my most recent toy-turned-product is something I’m very excited to write about: hyperpb.| mcyoung.xyz
Hello, there! 👋 Creating content I decided to start a blog to write on topics that are interesting to me or something that I would like to explore. The topics in this blog should cover tech, software development, cybersecurity, AI, business, recent news, and occasional book reviews. Hopefully the learnings that will be discovered in this blog will be useful to many more people. Building a brand Building a personal or a professional brand is important these days. Brand is associated with tr...| Evgenii Pendragon
Learn how to build your first Model Context Protocol (MCP) server by connecting a local LLM to the Google Maps API step by step.| workingsoftware.dev
TL;DR:| Plakar - Effortless backup
tl:dr star is a python(ish) programming environment that lets you call Go library functions. click down to the repl if you’d just like to play around Starlark is Google’s custom subset of Python that it uses as a configuration language with Bazel. I started looking into it a little because it has some interesting characteristics. It’s not turing complete (no unbounded loops), it doesn’t have classes or higher level abstractions, it’s also deterministic and is somewhat safe to run un...| Max McDonnell
本文永久链接 - https://tonybai.com/2025/07/10/mcp-official-go-sdk 大家好,我是Tony Bai。 随着大型语言模型(LLM)的能力边界不断扩展,“function calling”或“tool use”已成为释放其潜力的关键。MCP(Model| tonybai.com
Monitoring my Homelab, Simply| b.tuxes.uk
Most people don’t know that Go has special syntax for directives. Unfortunately, it’s not real syntax, it’s just a comment. For example, //go:noinline causes the next function declaration to never get inlined, which is useful for changing the inlining cost of functions that call it.| mcyoung.xyz
I’ve had a few conversations about async code recently (and not so recently) and seen some code that seems to make wrong assumptions about async, so I figured out it was time to have a serious chat about async, what it’s for, what it guarantees and what it doesn’t.| Il y a du thé renversé au bord de la table !
本文永久链接 - https://tonybai.com/2025/07/08/typed-struct-tags 大家好,我是Tony Bai。 Go 语言的结构体标签(Struct Tag)自诞生以来,一直是其强大反射能力的重要组成部分,广泛应用于 encoding/json、OR| tonybai.com
How we used WASM and some Go runtime modifications to run deterministic simulation tests against FrostDB| Discover the Performance Engineer in you. | Polar Signals
Adding type parameters to interface types is surprisingly powerful| go.dev
本文永久链接 - https://tonybai.com/2025/07/05/go-is-8020-language 大家好,我是Tony Bai。 如果你写了一段时间的 Go,你可能会有一种独特的感觉。一方面,它简洁、高效、可靠;另一方面,你又会时常觉得它“| tonybai.com
本文永久链接 - https://tonybai.com/2025/06/26/non-deterministic-abstraction 大家好,我是Tony Bai。 在软件开发领域,Martin Fowler 的名字几乎等同于思想的灯塔。他的每一篇文章、每一次演讲,都能为我们| tonybai.com
I had the idea to write a little shell in go. Called gosh, of course. There’s a few people playing with the same theme, but nothing exactly the same.| flak.tedunangst.com
When I'm building a web application in Go, I prefer to use command-line flags to pass configuration settings to the application at runtime. But sometimes, the client I'm working with wants to use environment variables to store configuration settings, or the nature of the project means that storing settings in a TOML, YAML or JSON file is a better fit. And of course that's OK — it makes sense to be flexible and vary how configuration is managed based on the specific needs of a project and/or...| www.alexedwards.net
Go is the most hated programming language. Compared to other languages, it provides 80% of utility with 20% of complexity. The hate comes from people who want 81% of utility, or 85% or 97%.| blog.kowalczyk.info
Building a Lua interpreter in Go| www.zombiezen.com
Junji Watanabe| groups.google.com
The standard Go toolchain comes with an assembler out of the box. Said assembler is highly idiosyncratic, using syntax inherited from Plan 9 and choosing its own names for platform-specific instructions and registers. But it's great to have it readily available. More mundanely, Go comes with a garbage collector. This post explains how to make these two components play nice, if we want to manipulate Go pointers from our assembly.| mazzo.li
One of the perks of being a Google Developer Expert is the incredible opportunities it provides.| eltonminetto.dev
Comparing gzip, brotli and zstd compression in Go.| blog.kowalczyk.info
An introduction to Wirego, a tool for Wireshark plugin development| Quarkslab's blog
In this blog, we'll explore the TiDB Runtime Dashboard and dissect its practical value in diagnosing runtime issues.| TiDB
Version 1.0.0 of python-starlark-go is now available on PyPI.| Jordan Webb's blog
Navigating Google Cloud Platform, or any cloud platform for that matter, can be draining, primarily when you work with cloud services every day. If you manage multiple projects, just accessing the right resource can feel like a nightmare because of the number of clicks involved.| dineshgowda
Deploy Go/Gin apps on Heroku easily! This guide covers setup, deployment, and best practices for high-performance web services.| Heroku
Go team plans around error handling support| go.dev
Go言語におけるFunctional Options Patternを簡単に整理します。 はじめに Go言語でFunctional Options Pattern おわりに 参考 はじめに あるGo製ライブラリを使っていたところ、Functional Options Patternに遭遇しました。 Go言語におけるFunctional Options Patternとは何か、メモします。 The English translation of this post is here. Go言語でFunctional Options Pattern Functional Options Pattern…| BioErrorLog Tech Blog
Go言語でMCPサーバーを実装する方法の備忘録です。 はじめに 前提: Go言語の公式MCP SDKはあるのか? MCPサーバーをGoで実装する 実装するMCPサーバー GoでのMCPサーバー実装 Toolの実装 Resourceの実装 Promptの実装 MCP InspectorでMCPサーバーをテスト実行する おわりに 参考 はじめに MCPサーバーをGoで実装したくなりました。 やり方のメモを残します。 # 作業環境 $ go version go version ...| BioErrorLog Tech Blog
Exponential backoff with jitter is de rigeur for making service calls. This code, or something like it, probably looks really familiar: func do(ctx context.Context) error { const ( maxAttempts = 10 baseDelay = 1 * time.Second maxDelay = 60 * time.Second ) delay := baseDelay for attempt := range maxAttempts { err := request(ctx) if err == nil { return nil } delay *= 2 delay = min(delay, maxDelay) jitter := multiplyDuration(delay, rand.| commaok.xyz
Today, driven by annoyance, I refactor-extracted a small set of test helper code found in various private personal projects around the topic of golden file management into a dedicated Go module: github.com/matttproud/goldentest (API documentation). I’m happy to finally have a canonical solution that I am happy with. I’ll freely admit it: I use change detector tests1 for some things, as a slew of these personal projects use reference data defined in the testdata directory as canonical want...| matttproud.com (blog)
本文永久链接 - https://tonybai.com/2025/05/15/go-json-v2 大家好,我是Tony Bai。 Go 语言标准库中的 encoding/json 包,无疑是我们日常开发中使用频率最高的包之一。它为 Go 社区服务了十多年,几乎无处不在| tonybai.com
Use the new IANA-registered tag to preserve JSON numbers represented as strings when encoding in Concise Binary Object Representation.| Just a Theory
While full Pact specification v3 support is still a while off, you can now verify pacts that use multiple provider states and provider state params from the v3 compliant implementations (eg. JVM and Rust)| Pact Docs Blog
Hello, friends! I’ve been doing software development professionally for a few years now, and I’m noticing a trend in newer languages that I’m really liking: putting errors front a…| Shaffan's Blog
The 30th annual Amelia Concours d’Elegance, held on March 8, 2025, at the Ritz-Carlton, Amelia Island, was a spectacle of automotive history and design, drawing collectors, enthusiasts, and industry leaders from around the world. Showcasing over 240 historically significant automobiles across 35 meticulously curated classes, this year’s event continued its legacy as one of the premier concours in the world....| South Magazine
I’ve left Google after working there for 19 years.| Airs - Ian Lance Taylor