About
Ben Hoyt is a software engineer, engineering manager, and technical writer based in Christchurch, New Zealand, currently working at Canonical.
He is widely recognized for his high-impact contributions to systems programming and language tooling, including creating GoAWK—a full POSIX-compliant AWK interpreter written in Go—and inih, a ubiquitous minimalist C parser. In the Python ecosystem, he authored PEP 471 and contributed os.scandir(), which dramatically accelerated file system traversal in Python 3.5+.
On his technical blog benhoyt.com/writings, he writes lucid, deeply hands-on essays exploring interpreter and compiler design, performance benchmarking, Go and Python internals, dependency minimalism, and software craftsmanship.
You can also find Ben Hoyt on:
- Website: https://benhoyt.com/writings
- GitHub: benhoyt
Articles
- Updating a side project with AI in 275 commits
- Fun with an indecisive AI coding agent
- Every dependency you add is a supply chain attack waiting to happen
- Don't fear Python subprocess or Go codegen
- Go performance from version 1.0 to 1.22
- The One Billion Row Challenge in Go: from 1m45s to 3.4s in nine solutions
- Switching from S3 to Tigris on Fly.io
- Discussing Forth, C, CGI, Python, Go, and AWK on "Stray Pointers"
- "Stray Pointers" interview
- Using a Markov chain to generate readable nonsense with 20 lines of Python
- How (not) to apply for a software job
- The AWK book's 60-line version of Make
- Using the WordStar diamond in 2023
- Name before type: why 'age int' is better than 'int age'
- The proposal to enhance Go's HTTP router
- Scripting with Go: a 400-line Git client that can create a repo and push itself to GitHub
- Names should be as short as possible while still being clear
- Lookup Tables (Forth Dimensions XIX.3)
- For Python packages, file structure != API
- Designing Pythonic library APIs
- From Go on EC2 to Fly.io: +fun, −$9/mo
- Code coverage for your AWK programs
- I/O is no longer the bottleneck
- microPledge: our startup that (we wish) competed with Kickstarter
- Rob Pike's simple C regex matcher in Go
- Tools I use to build my website
- Modernizing AWK, a 45-year old language, by adding CSV support
- Prig: like AWK, but uses Go for "scripting"
- Go performance from version 1.2 to 1.18
- Optimizing GoAWK with a bytecode compiler and virtual machine
- AWKGo, an AWK-to-Go compiler
- Improving the code from the official Go RESTful API tutorial
- Simple Lists: a tiny to-do list app written the old-school way (server-side Go, no JS)
- Structural pattern matching in Python 3.10
- Mugo, a toy compiler for a subset of Go that can compile itself
- How to implement a hash table (in C)
- Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust
- The small web is beautiful
- Coming in Go 1.16: ReadDir and DirEntry
- Fuzzing in Go
- Searching code with Sourcegraph
- Different approaches to HTTP routing in Go
- Go filesystems and file embedding
- The sad, slow-motion death of Do Not Track
- What's new in Lua 5.4
- Hugo: a static-site generator
- Generics for Go
- More alternatives to Google Analytics
- Lightweight Google Analytics alternatives
- An intro to Go for non-Go developers
- ZZT in Go (using a Pascal-to-Go converter)
- Testing in Go: philosophy and tools
- The state of the AWK
- What's coming in Go 1.15
- Don't try to sanitize input. Escape output.
- SEO for Software Engineers