Anton Zhiyanov's Avatar

Anton Zhiyanov

@antonz.org.bsky.social

Open source maintainer. Writing interactive technical books at https://antonz.org

91 Followers  |  5 Following  |  29 Posts  |  Joined: 07.02.2024  |  1.9285

Latest posts by antonz.org on Bluesky

Nope.

11.08.2025 13:31 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Building blocks for idiomatic Go pipelines Unopinionated and composable channel operations.

I think third-party Go concurrency packages are often too opinionated and try to hide too much complexity.

That's why I created `chans`: a package with generic channel operations that's unopinionated, composable, and doesn't take control away from the developer.

antonz.org/chans

11.08.2025 12:46 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
GitHub - nalgeon/azor: Promises and async/await in Go Promises and async/await in Go. Contribute to nalgeon/azor development by creating an account on GitHub.

All jokes aside, I've implemented promises and async/await in Go. Just make sure you NEVER use them.

github.com/nalgeon/azor

27.07.2025 15:30 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Gist of Go: Signaling Sending events between goroutines.

The new chapter of my interactive Go Concurrency book covers signaling, one-time execution, and object pools.

If you think channels are the only way for goroutines to communicate, check it out!

antonz.org/go-concurren...

21.07.2025 10:27 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Thanks James, glad you like it!

19.07.2025 14:17 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Go features by version Which major features appeared in which versions of Go.

I've updated the list of Go features by version.

Now, each feature has βž€ a link to the documentation, ➁ a link to the proposal, and βž‚ a link to the commits.

It's fascinating to see how Go has changed over the years.

antonz.org/which-go

19.07.2025 11:11 β€” πŸ‘ 8    πŸ” 3    πŸ’¬ 1    πŸ“Œ 0
Preview
On deep modules Make smaller interfaces. Seriously.

Make smaller interfaces. Stay deep. antonz.org/deep-modules

17.07.2025 12:46 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
You don't need testify/assert To have expressive test assertions.

You don't need testify/assert to write clear and expressive Go tests.

antonz.org/do-not-testify

16.07.2025 10:32 β€” πŸ‘ 4    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Preview
GitHub - nalgeon/redka: Redis re-implemented with SQL Redis re-implemented with SQL. Contribute to nalgeon/redka development by creating an account on GitHub.

Okay, I did it again. I reimplemented Redis using Postgres.

Key/value, expiration, maps, lists, sets, and sorted sets β€” everything in your favorite database. With a Redis-compatible API and wire protocol.

github.com/nalgeon/redka

14.07.2025 10:02 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
GitHub - nalgeon/be: Minimal test assertions in Go Minimal test assertions in Go. Contribute to nalgeon/be development by creating an account on GitHub.

How about a micro test assertions Go package with flexible error checking?

Only 100 loc. I've named it "be" :)

github.com/nalgeon/be

07.07.2025 17:29 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Gist of Go: Semaphores Limiting the concurrency and waiting for the peers.

The new chapter in my interactive Go Concurrency book is about Semaphores.

You'll have a Rendezvous with some helpful synchronization tools and even overcome a few Barriers.

If you know what I mean πŸ˜‰

antonz.org/go-concurren...

01.07.2025 16:16 β€” πŸ‘ 4    πŸ” 2    πŸ’¬ 0    πŸ“Œ 1
Preview
Redis playground Embeddable Redis playground for education, documentation, and fun.

Given how much I love Redis, it's strange that I haven't made a playground for it β€” until today.

Now I (and everyone else) can finally write interactive Redis docs!

codapi.org/redis

29.06.2025 10:14 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Go 1.25 interactive tour Fake clock, new GC, flight recorder and more.

Go 1.25 is coming soon, and the official release notes are pretty dry.

So I prepared an interactive version with lots of examples.

antonz.org/go-1-25

26.06.2025 12:18 β€” πŸ‘ 18    πŸ” 4    πŸ’¬ 1    πŸ“Œ 0

Thanks, Arman! They take a lot of time to make, so I'm really glad you read them :)

22.06.2025 19:46 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

It's considered experimental, so it requires a feature flag, and the API might change. But it's already pretty usable!

22.06.2025 18:24 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
JSON evolution in Go: from v1 to v2 Reviewing the key changes in json/v2.

I'm working on an interactive Go 1.25 tour, but there are so many changes in json/v2 that I decided to cover them in a separate blog post.

Plenty of interactive examples ahead!

antonz.org/go-json-v2

22.06.2025 13:54 β€” πŸ‘ 29    πŸ” 16    πŸ’¬ 2    πŸ“Œ 0
Preview
Gist of Go: Race conditions Keep the system state correct by any means necessary.

Using mutexes to avoid data races might seem simple, but dealing with race conditions is a whole other matter. Let's learn how to handle these beasts β€”Β in the new chapter of my Go Concurrency book!

antonz.org/go-concurren...

16.06.2025 10:48 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Gist of Go: Data races Two goroutines racing for the same data is a recipe for disaster.

I'm back to working on the Go Concurrency book! The new chapter is all about data races and how to avoid them: antonz.org/go-concurren...

09.06.2025 11:07 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
AI-free writing I never use AI-generated content in my writing, and I never will.

My rule of thumb: writing is an AI-free zone.

antonz.org/ai-free

07.06.2025 10:22 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Sad story of http.DefaultTransport A tale of false flexibility and leaking abstractions.

If you're into Go, I have a sad story for you. It's a tale of false flexibility, leaking abstractions, and http . DefaultTransport.

antonz.org/default-tran...

24.05.2025 08:05 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Thank you! I wonder how many of these URLs are out there :)

15.05.2025 21:33 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Thanks!

15.05.2025 17:06 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Am I online? Checking internet connectivity with 'generate 204' endpoints.

Recently, I was working on an application that needed to know if it was connected to the internet.

I didn't want to use ping (ICMP), and wanted to exercise the full stack used by real HTTP clients: DNS, TCP, and HTTP.

So I did some digging, and here are the results: antonz.org/is-online/

15.05.2025 11:59 β€” πŸ‘ 6    πŸ” 4    πŸ’¬ 1    πŸ“Œ 0
Preview
SQLite Extension Hub Easily find and manage SQLite extensions.

See the full list of extensions (known to me) in the extension hub: sqlpkg.org

07.05.2025 09:18 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

Did you know that there are SQLite extensions for:

β€” Creating pivot tables.
β€” Storing tables in S3.
β€” Querying Excel files.
β€” Reading Protobuf messages.
β€” Fuzzy string matching.

And many, many others!

07.05.2025 09:18 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
GitHub - orbitinghail/graft: Graft is an open-source transactional storage engine optimized for lazy, partial, and strongly consistent replicationβ€”perfect for edge, offline-first, and distributed appl... Graft is an open-source transactional storage engine optimized for lazy, partial, and strongly consistent replicationβ€”perfect for edge, offline-first, and distributed applications. - orbitinghail/g...

See the details at github.com/orbitinghail...

You can even install Graft using the SQLite package manager:

sqlpkg install orbitinghail/graft

04.05.2025 14:47 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

Graft by @f0a.org implements strongly consistent replication between SQLite and object storage like S3/R2.

Implemented as a SQLite virtual file system. Interesting!

04.05.2025 14:47 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Thanks man :)

03.05.2025 20:09 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Grep by example: Interactive guide Interactive introduction to grep with real-world use cases.

Grep is one of the most useful cli tools I use every day.

If you use it often, I encourage you to take a look at the interactive mini-book I wrote β€” you might learn a thing or two even if you are an experienced grep user.

antonz.org/grep-by-exam...

02.05.2025 12:29 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

@antonz.org is following 5 prominent accounts