New
The latest blog posts to take off on Hacker News. 21,829 posts.
What's New in PHP 8.1
PHP 8.1 adds support for PHP enums, as well as readonly properties, Fibers, performance improvements, new in initializers, and more.
Plotnine: Grammar of Graphics for Python (2019)
Blog article by Jeroen Janssens. Jul 7, 2024. 93 min read. Hey there, you’re reading an updated version of a post I published way back in 2019. Because of the 2024 Plotnine contest and the recent release of Polars 1.0, I decided to freshen things up. Changes include: Upgrade to Plotnine version 0.13.6 (from…
What am I running inside my bash? (2014)
What am I running inside my bash?
Hotwire: A new old way to build web apps
I’d like to share my experience of encountering Hotwire from the team at Basecamp which was extracted from the tooling used to build their…
Developers spend most of their time figuring the system out
I am often asked what I mean when I say that developers spend most of their time figuring the system out. Let’s unpack the statement.
Fix Terminals
I want terminal keypresses to Just Work. What do I mean Just Work? I mean programs in a simple orthogonal way, can determine the key that was pressed, and this model should easily map to the user's expectation.
OO in Python is mostly pointless
Note from 2025 me - I largely still agree with myself - and I still see the same crappy OO code getting pumped out. The final point in "Exceptions" is worth emphasising more.
Mocks Aren't Stubs (2007)
Explaining the difference between Mock Objects and Stubs (together with other forms of Test Double). Also the difference between classical and mockist styles of unit testing.
Why Create a New Unix Shell?
This post explains the project's motivation from several perspectives. Unix shell is an old and successful technology, so there are many ways of looking at it.
Why does it take so long to build software? (2020)
Why does it take so long to build software? We hear variations of this question frequently: Why is building software so expensive? Why is my team delivering software so slowly? Why am I perpetually behind schedule with my software? There is a good reason we hear these questions over and over. Businesses need more and…
Python's Type Checking Renaissance
You may have heard that TypeScript has been taking the web development space by storm in the last few years , bringing to it static types. I believe the same thing is starting to happen in the world of Python, where type checkers like mypy , Pyre , and Pyright are increasingly used, at least where Python is used by…
The unreasonable effectiveness of simple HTML
I've told this story at conferences - but due to the general situation I thought I'd retell it here. A few years ago I was doing policy research in a housing benefits office in London. They are singularly unlovely places. The walls are brightened up with posters offering helpful services for people fleeing domestic…
Scaling Kubernetes to 7,500 Nodes
We’ve scaled Kubernetes clusters to 7,500 nodes, producing a scalable infrastructure for large models like GPT-3, CLIP, and DALL·E, but also for rapid small-scale iterative research such as Scaling Laws for Neural Language Models.
Improving how we deploy GitHub
As GitHub doubled it’s developer head count, tooling that worked for us no longer functioned in the same capacity. We aimed to improve the deployment process for all developers at GitHub and mitigate risk associated with deploying one of the largest developer platforms in the world.
Racket Compiler and Runtime Status
posted by Matthew Flatt With the upcoming version 8.0 release, Racket on Chez Scheme (Racket CS) will become the default implementation of Racket. This report discusses the implications of that change, continuing a series that was originally about Racket...
Software engineering topics I changed my mind on
At some point, I realized I would've argued the exact opposite position on a lot of topics just a few years ago.
DrScheme in Space
Parenthetically Speaking: Articles by Shriram Krishnamurthi
Command Path Security in Go
How to decide if your programs are vulnerable to PATH problems, and what to do about it.
Making Win32 APIs More Accessible to More Languages
Introduction Win32 APIs provide powerful functionality that let you get the most out of Windows in your applications. While these APIs are readily accessible to C and C++ developers, other languages like C# and Rust require wrappers or bindi
Basic Scripting with Awk and Gnuplot
Posted to HN. Comments and discussion highly encouraged. Introduction This will be a short example-based guide to (a) awk (b) gnuplot and (c) using them in a script. I needed to graph some data based on the output of a command run a couple times. So what better way to solve that five minute task than to spend an hour…
How to Build an Escrow Product
Escrow is a payment setup where the payer sends funds to a third party rather than directly to the payee. If certain conditions are met, the third party routes the funds to the recipient; if not, the funds get returned to the sender. Escrow is particularly useful for high value payments because the payer can rely on…
VSCode, Dev Containers and Docker
Long term readers of this blog will know our devotion to using container-based technology, especially Docker, to significantly improve software quality through repeatable builds. In the Autumn/fall of 2020, Microsoft introduced a Visual Studio Code (VSCode) extension Remote – Containers. With one quick stroke, this…
The right way to turn off your old APIs
All things come to an end, even HTTP APIs. However great your API may be today, one day you'll want to release a completely new version, an improved but...
Knuth-Morris-Pratt string-searching algorithm: DFA-less version
You see, there are two memory accesses per one character of the input string (at average). Hence, the total number of all memory accesses can be len*2 at worst.
Cgit, Nginx and Gitolite: A Personal Git Server
Hi'ya I'm Bryan, and this is my collection of projects, ideas, thoughts, feelings, opinions, ramblings, concepts, concerns, notions, conclusions, blurbs, and schemes, to name a few.
Porting Firefox to Apple Silicon
The release of Apple Silicon based Macs at the end of last year generated a flurry of news and some surprises at the machine’s performance.
Flow-Based Programming
Official website for flow-based programming