Miki Tebeka 📬 [email protected], 𝕏 @tebeka, 👨 mikitebeka, ✒️blog
- Advanced JSON
- Custom serialization
- Missing vs empty values
- Streaming JSON
- HTTP clients
- Request body
- Streaming
- Authentication
- HTTP servers
- Dependency injection
- Writing middleware
- Streaming responses
- Routing
-
cars - HTTP Server
-
value.go - Custom serialization
-
vm.go - Missing vs Zero values
-
logs.go - Streaming JSON
-
closure.go - Closure capture bug (Go 1.22)
-
client.go - Making HTTP calls
- The complete guide to Go net/http timeouts
- Server Side Events in Go
- httptest - Test your HTTP handlers
- How SQLite is Tested
- Managing Go Installations
- Web Frameworks
- How I write HTTP services in Go after 13 years
- Making & Using HTTP Middleware
- Dependency injection:
- Year 2038 problem
- golang.org/x/analysis - Write a linter
- mapstructure
- Validation
- NYC Taxi Dataset
- Email Address Regexp
- JSON Lines
- HTTP Status Cats
- Unicode Folding
- Fixing For Loops in Go 1.22
- JSON - The Fine Print
- HTTP cats
- Benchmarking & profiling
- tokenizer
- Performance tips & tricks
- Optimizing memory
- tokenizer - Optimizing algorithm & memory allocations
- slice.go - How slices work
- playground.go - Misc
- store - Cache & better serialization
- matrix.go - Getting friendly with the CPU cache
- Trie
- K-D tree
- lru-cache
- The Architecture of Open Source Applications - Including a book on performance
- Plain Text - Fun talk about Unicode
- Regular Expression Matching Can Be Simple And Fast
- Locality of Behaviour
- Rules of Optimization Club
- Computer Latency at Human Scale
- So you wanna go fast
- High Performance Go
- Miki's Optimization Overview
- A Benchmarking Checklist
- A Guide to the Go Garbage Collector
- hey
- Garbage Collection In Go : Part I - Semantics
- benchstat
- Channel semantics
- Goroutine pools
- The "sync" & "sync/atomic" packages
- Handling panics in goroutines
-
go_chan.go - Channel semantics, fan-out, goroutine pool
-
rtb.go - Context & cancellation
-
taxi.go - Convert serial code to concurrent
-
fan_in.go - Fan-in pattern
-
counter.go - race detector, sync.Mutex & atomic
-
token.go - Refresh token, sync.RWMutex
-
token_chan.go - Refresh token with channels
-
pmap.go - Parallel map
-
pool.go - Using buffered channel for pool
-
payment.go - sync.Once
- automaxprocs
- x/time/rate - Rate limiter
- The race detector
- errgroup
- Data Race Patterns in Go
- Go Concurrency Patterns: Pipelines and cancellation
- Go Concurrency Patterns: Context
- Curious Channels
- The Behavior of Channels
- Channel Semantics
- Why are there nil channels in Go?
- Amdahl's Law - Limits of concurrency
- Computer Latency at Human Scale
- Concurrency is not Parallelism by Rob Pike
- Scheduling in Go by Bill Kennedy
- conc: better structured concurrency for go
- xkcd Tar
- Profile-guided optimization
- Rubber Duck Debugging
- Feynman Algorithm
- conc
- Using Formal Reasoning to Build Concurrent Go Systems video
- TLA+
- golang.org/x/sync/semaphore
- goleak - Find goroutines leak
- htmx
- Ultimate Go Tour
- Pointer vs value semantics
- Embedding structs
- Interfaces in depth
- The empty interface and type assertions
- Iterators
-
inc.go - Value vs Pointer sematics
-
game.py - Structs, methods & interfaces
-
error.go - What's a nil interface
-
sha1.go - Calculate sha1, compose io.Reader & io.Writer
-
wc.go - Implement io.Writer for word count
-
empty.go - The empty interface (
any
) -
logger.go - Keeping interface small
-
client_test.go - Mocking HTTP transport
-
stats.go - Generics
-
iter.go - Iterators
- sort examples - Read and try to understand
- When to use generics
- Generics tutorial
- Generic Interfaces
- Generics can make your Go code slower
- Methods, interfaces & embedded types in Go
- Methods & Interfaces in the Go tour
- wc docs
- stringer command
- List of file signatures
- The Art of Unix Programming
- Method Sets
- lru_cache
- From Nand to Tetris
- bubbletea UI for the terminal (TUI)