Top all-time · #1009
Ben Hoyt
Personal blog · benhoyt.com/writings · on HN as benhoytprogrammingsystems
Ben Hoyt's personal blog at benhoyt.com covers programming and systems. Since 2007, 65 different Hacker News readers have linked it 189 times, most often “Performance comparison: counting words in Python, Go, C++, C, Awk, Forth, Rust”. No feed was found, so read it on the site itself.
Too few sampled comments (29) to say how often HN recommends it.?
Why HN links it
HN readers link Ben Hoyt's posts on the small web, escaping output rather than sanitizing input, and small programming projects such as word counting, hash tables, AWK make and WordStar.
- Recommended for · 6 comments
- Called helpful, interesting and excellent; praised as an effective way to teach escaping output.
Summarised by Claude from a sample of 29 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Ben Hoyt is an experienced software engineer at Canonical. He and his wife and three daughters live in Christchurch, New Zealand.
Most-linked posts?
- Performance comparison: counting words in Python, Go, C++, C, Awk, Forth, Rust9 people · 9 mentions · first linked 2021-03-15
- Don’t try to sanitize input – escape output5 people · 8 mentions · first linked 2020-02-27
- The small web is beautiful5 people · 7 mentions · first linked 2021-03-01
- GoAWK: an AWK interpreter written in Go5 people · 6 mentions · first linked 2018-11-17
- Every dependency you add is a supply chain attack waiting to happen5 people · 5 mentions · first linked 2026-04-02
- Designing Pythonic Library APIs5 people · 5 mentions · first linked 2023-06-18
- Show HN: I use the WordStar Diamond in 20234 people · 7 mentions · first linked 2023-08-17
- Structural pattern matching in Python 3.104 people · 5 mentions · first linked 2021-09-20
- Using a Markov chain to generate readable nonsense with 20 lines of Python4 people · 4 mentions · first linked 2023-11-11
- Learning Elm by porting a medium-sized web frontend from React (2019)4 people · 4 mentions · first linked 2019-10-02
What Hacker News says?
Google is your friend: https://benhoyt.com/writings/the-small-web-is-beautiful/ https://ar.al/2020/08/07/what-is-the-small-web/ https://blog.kagi.com/small-web Another related term: https://en.wikipedia.org/wiki/IndieWeb see also: https://en.wikipedia.org/wiki/Gemini_(protocol) (NOT web, but similar in spirit - an extended "Gopher"-like protocol)
Comment linking /writings/the-small-web-is-beautiful/
on “ICQ will stop working from June 26”Submitted The One Billion Row Challenge in Go: from 1m45s to 4s in nine solutions as a story · 499 points
HN discussionCover topics around software development, math, programming languages, and academia: http://stuffwithstuff.com/ https://ericlippert.com/ http://thume.ca/archive.html https://medium.com/@mdwdotla https://faculty.washington.edu/ajko/posts https://computinged.wordpress.com/ https://blog.acolyer.org/ https://blog.sigplan.org/blog/ https://blog.paranoidcoding.com/ https://blog.regehr.org/ https://eli.thegreenplace.net/ h…
Comment linking /writings/
on “Ask HN: Favorite Blogs by Individuals?”Submitted Show HN: I replaced Google Analytics with simple log-based analytics as a story · 475 points
HN discussionI actually use GoAccess on my personal site, which runs on GitHub Pages. Obviously you don't get the actual web server logs (only GitHub has those), but I have a few lines of JavaScript that hits a 1x1 image on CloudFront with the page and referrer information, and then I download the CloudFront logs and use those with GoAccess. Read more here: https://benhoyt.com/writings/replacing-google-analytics/
Comment linking /writings/replacing-google-analytics/
on “Lightweight Alternatives to Google Analytics”Submitted Performance comparison: counting words in Python, Go, C++, C, Awk, Forth, Rust as a story · 441 points
HN discussionhttps://benhoyt.com/ - mainly a place to share my Go and Python technical writing and open source projects (also has my CV/resume). Basic GitHub Pages static website with custom template. Uses GoatCounter for analytics.
Comment linking /
on “Ask HN: Share your personal site”Submitted Performance comparison: counting words in Python, C/C++, Awk, Rust, and more as a story · 368 points
HN discussionExcellent article -- despite (like others) disagreeing with several of his specific points, I think his overall take to optimize for predictability, readability, and simplicity is great. A few years ago I took over as tech lead at a previous workplace where the only tool they had used was C++ (really more like C with classes) with no use of the STL or other libraries they didn't build in-house. And this was for a ho…
Comment linking /writings/dont-sanitize-do-escape/
on “Django for Startup Founders: A better software architecture for SaaS startups”Submitted Go performance from version 1.2 to 1.18 as a story · 340 points
HN discussionAlso sometimes called the small web. See The small web is beautiful by Ben Hoyt https://benhoyt.com/writings/the-small-web-is-beautiful
Comment linking /writings/the-small-web-is-beautiful
on “The Monospace Web”Submitted How to implement a hash table in C as a story · 302 points
HN discussionSounds like you might be interested in the Tigris preview: - https://www.tigrisdata.com/ - https://benhoyt.com/writings/flyio-and-tigris/ (discussed here: https://news.ycombinator.com/item?id=39360870 ) - https://fly.io/docs/reference/tigris/
Comment linking /writings/flyio-and-tigris/
on “Fly.io has GPUs now”Submitted Don’t try to sanitize input – escape output as a story · 297 points
HN discussionThey're about to get an S3 replacement, called Tigris (it's a separate company but integrated into flyctl and runs on Fly.io infra): https://benhoyt.com/writings/flyio-and-tigris/
Comment linking /writings/flyio-and-tigris/
on “Fly.io has GPUs now”Submitted Rob Pike's simple C regex matcher in Go as a story · 292 points
HN discussionHow did you generate the timings on: https://benhoyt.com/images/go-1brc-profile-r9-source.png ?
Comment linking /images/go-1brc-profile-r9-source.png
on “The One Billion Row Challenge in Go: from 1m45s to 4s in nine solutions”Submitted Structural pattern matching in Python 3.10 as a story · 273 points
HN discussion> but the performance profiles & characteristics that we must know about in order to make a choice on which tool to use. And it shouldn't be that each user has to figure it out on their own, dig into PR's or whatever. That's an interesting take – I like the idea of a catalog of standard tasks with implementations in several languages as well as their performance characteristics. I suppose Rosetta Code gets the ball…
Comment linking /writings/count-words/
on “How to rapidly improve at any programming language (2016)”Submitted Modernizing AWK, a 45-year old language, by adding CSV support as a story · 258 points
HN discussionThere is a whole lot more to this than just whether content creators or publishes should get paid, and whether there should be ad blockers (and whether they get paid). There are people who have been fed up by this because they remembered how the web was like in the late 90s, before social media pushes became the dominant experience. People have formulated ideas around the Small Web ( https://benhoyt.com/writings/the…
Comment linking /writings/the-small-web-is-beautiful/
on “How I Experience Web Today (2021)”Submitted Learning Go by porting a medium-sized web back end from Python as a story · 242 points
HN discussionAs someone who's just written about the "small web" [1], this warms my heart. The lite version is probably a little too bare-bones for most people's tastes, but it sure is tiny -- great for people on very slow or flakey connections. Some numbers: HTML homepage transfers 34KB (94KB uncompressed) over 6 requests. HTML search results page transfers 133KB (248KB uncompressed) over 31 requests. Lite homepage transfers 13…
Comment linking /writings/the-small-web-is-beautiful/
on “DuckDuckGo – two non-JavaScript versions of search results”Submitted Using a Markov chain to generate readable nonsense with 20 lines of Python as a story · 230 points
HN discussionThey parse the script to a parse tree (abstract syntax tree) and then either interpret that directly (tree-walking interpreter) or compile to bytecode and then execute that. The original awk ("one true awk") uses a simple tree-walking interpreter, as does my own GoAWK implementation. gawk and mawk are slightly faster and compile to bytecode first. If you're interested, you can read more about how GoAWK works and per…
Comment linking /writings/goawk/
on “Removing duplicate lines from files keeping the original order with Awk”Submitted GoAWK: an AWK interpreter written in Go as a story · 228 points
HN discussionLittle enrages me more, especially when the forbidden special characters betray a shockingly backwards mitigation for injection attacks. [1] https://benhoyt.com/writings/dont-sanitize-do-escape/
Comment linking /writings/dont-sanitize-do-escape/
on “We didn't encrypt your password, we hashed it”Submitted Show HN: Pygit – Just enough git to push itself to GitHub as a story · 208 points
HN discussion> sanitize their inputs. For anyone confused about why "sanitizing your inputs" isn't the right approach, please read (shameless self-promotion, but I think the concept is important): https://benhoyt.com/writings/dont-sanitize-do-escape/
Comment linking /writings/dont-sanitize-do-escape/
on “Log4Shell Log4j vulnerability (CVE-2021-44228) – cheat-sheet reference guide”Submitted Contributing os.scandir() to Python as a story · 194 points
HN discussion