← Înapoi la Urmăritori

Cel mai recent articol

Ultima verificare

Urmăritori 1 urmăritor
Articole: 56
  1. Updating a side project with AI in 275 commits

    I used an AI agent to make a big update to my GiftyWeddings.com website, taking it from a gift registry to a full website builder in 275 commits.

  2. Fun with an indecisive AI coding agent

    In which I have some fun with Claude Opus 4.6, a seemingly indecisive AI coding agent.

  3. Dependencies are a huge supply chain security risk; the more of them you have, and the more often you update, the bigger the attack surface.

  4. Don't fear Python subprocess or Go codegen

    Discusses some design choices used in Jubilant: Python subprocess.run to wrap a CLI tool, a code generator to convert Go structs to Python dataclasses, and the use of uv with a simple Makefile to run commands.

  5. Go performance from version 1.0 to 1.22

    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.

  6. 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.

  7. Switching from S3 to Tigris on Fly.io

    How I switched my side project from using Amazon S3 for file hosting to using Tigris (which is built on Fly.io infrastructure).

  8. This is a transcription of Jim Lawless's interview with Ben Hoyt on his Stray Pointers podcast.

  9. "Stray Pointers" interview

    Not technical writing, but Jim Lawless interviewed me on his "Stray Pointers" podcast.

  10. 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.

  11. How (not) to apply for a software job

    Advice for how to (and how not to) apply for a software engineering job, particularly for the written parts of the interview process.

  12. The AWK book's 60-line version of Make

    A discussion of the minimal version of Make included in 'The AWK Programming Language', as well as a Python port of the AWK program.

  13. Using the WordStar diamond in 2023

    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.

  14. A variable's name is more important than its type, so the name should be more prominent and come first in declarations.

  15. The proposal to enhance Go's HTTP router

    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.

  16. In which I rewrite my toy pygit client in Go to see how suitable Go is for simple scripts.

  17. Short, meaningful names that take context into account are better than long, verbose names that don't.

  18. Lookup Tables (Forth Dimensions XIX.3)

    An article about lookup tables in Forth that I co-authored with Hans Bezemer (creator of 4tH) when I was 16.

  19. For Python packages, file structure != API

    When designing Python packages, decoupling the file structure from the package's API makes your package easier to import and use.

  20. Designing Pythonic library APIs

    Principles I've found useful for designing good Python library APIs, including structure, naming, error handling, and type annotations.

  21. From Go on EC2 to Fly.io: +fun, −$9/mo

    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.

  22. Code coverage for your AWK programs

    This article describes GoAWK's code coverage support, which was contributed by Volodymyr Gubarkov.

  23. I/O is no longer the bottleneck

    In 2022, disk I/O is very fast, and not usually the performance bottleneck in programs.

  24. What our crowdfunding startup microPledge was, why it failed, and what we learned from the process.

  25. Rob Pike's simple C regex matcher in Go

    Translating Rob Pike's simple and elegant C regex matcher to Go.

  26. Tools I use to build my website

    How I build my website benhoyt.com with GitHub Pages, Jekyll, a simple HTML+CSS layout, Sublime Text, and Sublime Merge.

  27. Why and how I added proper CSV support to GoAWK, my POSIX-compatible AWK interpreter.

  28. Prig: like AWK, but uses Go for "scripting"

    Describes Prig, which is for Processing Records In Go.

  29. Go performance from version 1.2 to 1.18

    Shows how much the performance of Go has improved from version 1.2 through to 1.18 -- in its compiler, runtime, and libraries.

  30. How I sped up GoAWK by switching from a tree-walking interpreter to a bytecode compiler and virtual machine interpreter.

  31. AWKGo, an AWK-to-Go compiler

    A discussion of AWKGo, a simple compiler that translates a useful subset of the AWK text processing language into Go source code.

  32. 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.

  33. Simple Lists is a tiny to-do list web application written in Go, with old school server-side rendering and no JavaScript.

  34. Structural pattern matching in Python 3.10

    A critical but informative look at the new structural pattern matching feature in Python 3.10, with real-world code examples.

  35. An overview of Mugo, a single-pass compiler for a tiny subset of the Go programming language -- just enough to compile itself.

  36. How to implement a hash table (in C)

    An explanation of how to implement a simple hash table data structure, with code and examples in the C programming language.

  37. Performance comparison of counting and sorting word frequencies in various languages (Python, Go, C++, C, AWK, Forth, Rust, and others).

  38. The small web is beautiful

    A vision for the "small web", small software, and small architectures.

  39. Coming in Go 1.16: ReadDir and DirEntry

    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.

  40. Fuzzing in Go

    An overview of fuzz testing and the go-fuzz tool, as well as a look at the recent draft design for including fuzz testing in the `go` tool (LWN.net).

  41. Searching code with Sourcegraph

    A look at Sourcegraph, a code search and code intelligence tool (LWN.net).

  42. Different approaches to HTTP routing in Go

    Compares routing techniques in Go, including five custom approaches and three using third-party routing libraries.

  43. Go filesystems and file embedding

    A presentation of the Go draft designs for a filesystem interface and a standard way to embed files in a Go binary (LWN.net).

  44. The sad, slow-motion death of Do Not Track

    Talks about the valiant but almost-dead 10-year effort to prevent tracking with the Do Not Track header.

  45. What's new in Lua 5.4

    An overview of the new features in Lua 5.4 (LWN.net).

  46. Hugo: a static-site generator

    An overview of Hugo, a flexible static website generator written in Go and optimized for speed (LWN.net).

  47. Generics for Go

    Gives some background, the current state, and potential timeline for including generics in the Go programming language (LWN.net).

  48. More alternatives to Google Analytics

    Looks at some heavier replacements for Google Analytics, as well as the GoAccess log-based analytics tool (LWN.net).

  49. Lightweight Google Analytics alternatives

    Discusses what Google Analytics tracks, and presents two lightweight alternatives: GoatCounter and Plausible (LWN.net).

  50. An intro to Go for non-Go developers

    A brief introduction to Go for programmers who haven't used Go before: Why use it?