Shows how much the performance of Go has improved from version 1.0 through to 1.22 (including PGO) -- in its compiler, runtime, and libraries.| Ben Hoyt's technical writing
Describes a simple Markov chain algorithm to generate reasonable-sounding but utterly nonsensical text, and presents some example outputs as well as a Python implementation.| Ben Hoyt's technical writing
Advice for how to (and how not to) apply for a software engineering job, particularly for the written parts of the interview process. As a bonus, some tips for your resume/CV.| Ben Hoyt's technical writing
A brief look at the proposed enhancements to the Go standard library HTTP request router, net/http.ServeMux: matching on HTTP method, and supporting wildcards in matched paths.| Ben Hoyt's technical writing
In which I rewrite my toy pygit client in Go to see how suitable Go is for simple scripts.| benhoyt.com
How I solved the One Billion Row Challenge (1BRC) in Go nine times, from a simple unoptimised version that takes 1 minute 45 seconds, to an optimised and parallelised version that takes 3.4 seconds.| benhoyt.com
How I switched my side project from using Amazon S3 for file hosting to using Tigris (which is built on Fly.io infrastructure). It was a good experience overall, but there were a few quirks.| benhoyt.com
This is a transcription of Jim Lawless's interview with me (Ben Hoyt) on his Stray Pointers podcast. We discuss Forth, C, CGI, Python, Go, and AWK.| benhoyt.com
Short, meaningful names that take context into account are better than long, verbose names that don't.| benhoyt.com
An article about lookup tables in Forth that I co-authored with Hans Bezemer (creator of 4tH) when I was 16.| benhoyt.com
When designing Python packages, decoupling the file structure from the package's API makes your package easier to import and use.| benhoyt.com
Principles I've found useful for designing good Python library APIs, including structure, naming, error handling, and type annotations.| benhoyt.com
How I switched hosting my Go-based side projects from Amazon EC2 to Fly.io, significantly simplified deployment, and saved a bit of cash while I was at it.| benhoyt.com
Why and how I added proper CSV support to GoAWK, my POSIX-compatible AWK interpreter.| benhoyt.com
A discussion of the minimal version of Make included in 'The AWK Programming Language', as well as a Python port of the AWK program.| benhoyt.com
Describes the WordStar diamond, a wonderful set of key bindings from the 1970s, and how you can use it in 2023 on Linux or Windows.| benhoyt.com
A variable's name is more important than its type, so the name should be more prominent and come first in declarations.| benhoyt.com
This article describes GoAWK's code coverage support, which was contributed by Volodymyr Gubarkov.| benhoyt.com
In 2022, disk I/O is very fast, and not usually the performance bottleneck in programs. This article digs into some numbers.| benhoyt.com
What our crowdfunding startup microPledge was, why it failed, and what we learned from the process.| benhoyt.com
Translating Rob Pike's simple and elegant C regex matcher to Go.| benhoyt.com
The tools I use to build my website: GitHub Pages for hosting, the Jekyll static site generator, a simple HTML+CSS layout, GoatCounter for analytics, Sublime Text to edit, and Sublime Merge to commit and push.| benhoyt.com
Describes Prig, which is for Processing Records In Go. It's a text processing tool like AWK, but it uses Go as the scripting language.| benhoyt.com
Shows how much the performance of Go has improved from version 1.2 through to 1.18 -- in its compiler, runtime, and libraries.| benhoyt.com
The basics of SEO (Search Engine Optimization), written by a software engineer for software engineers| benhoyt.com
Why you should escape output correctly, but generally not sanitize user input.| benhoyt.com
An (incomplete) port of Adrian Siekierka's 'Reconstruction of ZZT' to Go, done in a semi-automated way using a Pascal-to-Go converter.| benhoyt.com
A brief introduction to Go for programmers who haven't used Go before: Why use it? The standard library. And the language itself.| benhoyt.com
Compares various routing techniques in Go, including five custom approaches and three using third-party routing libraries.| benhoyt.com
A look at the new os.ReadDir function and os.DirEntry interface coming in Go 1.16, with a comparison to os.scandir in Python.| benhoyt.com
A vision for the "small web", small software, and small architectures.| benhoyt.com
Performance comparison of counting and sorting word frequencies in various languages (Python, Go, C++, C, AWK, Forth, and Rust)| benhoyt.com
An explanation of how to implement a simple hash table data structure, with code and examples in the C programming language.| benhoyt.com
Mugo is a single-pass compiler for a tiny subset of the Go programming language -- just enough to compile itself.| benhoyt.com
A critical but informative look at the new structural pattern matching feature in Python 3.10, with real-world code examples.| benhoyt.com
Simple Lists is a tiny to-do list web application written in Go, with old school server-side rendering and no JavaScript.| benhoyt.com
My re-implementation of the code from the official Go tutorial 'Developing a RESTful API with Go and Gin', using only the standard library, adding tests, and fixing issues.| benhoyt.com
A discussion of AWKGo, a simple compiler that translates a useful subset of the AWK text processing language into Go source code.| benhoyt.com
How I sped up GoAWK by switching from a tree-walking interpreter to a bytecode compiler and virtual machine interpreter.| benhoyt.com