Hashing
A visual, interactive introduction to hash functions.
The latest blog posts to take off on Hacker News. 14,540 posts.
A visual, interactive introduction to hash functions.
There is a simple, useful idiom to make your bash scripts more robust - ensuring they always perform necessary cleanup operations, even when something unexpected goes wrong. The secret sauce is a pseudo-signal provided by bash, called EXIT, that you can trap ; commands or functions trapped on it will execute when the…
When programming in Go, the amount of error handling is something that slaps you in the face. Most API’s you deal with will expose errors. It can become overwhelming, but with a few tips and a guiding principle we can make handling errors easy, keep our code clean and give you the confidence that nothing is breaking…
In December of 1979 Tyrgve Reenskaug, an employee of Xerox PARC, published a paper called MODELS-VIEWS-CONTROLLERS about a design pattern he had invented for developing applications with a graphica…
Sometimes we have ideas that are bad but demand to enter reality. A few months ago, while chatting with a friend, we toyed around with the idea of a language where the only control flow you get is error handling. This idea embedded itself in my brain and wouldn't let me go, so I kept just talking about it until two…
oppiliappan's μsings
At a fundamental level, a programmer needs to manipulate bits. Modern processors operate over data by loading in 'registers' and not individual bits. Thus a programmer must know how to manipulate the bits within a register. Generally, we can do so while programming with 8-bit, 16-bit, 32-bit and 64-bit integers. For…
This article explains how to correctly handle filenames in Bourne shells (the primary shell of Unix/Linux/POSIX systems), based on the issues discussed in 'Fixing Unix/Linux/Filenames'. Many programs fail to work properly on filenames that include spaces, begin with dash (-), include newlines, and so on, because…
Nix is a tool for configuring software environments according to source files. I’ve been hearing more and more about Nix on Hacker News and Twitter. The idea of it appeals to me, so I’ve been tinkering with it over the past few weeks. My history with infrastructure as code Ten years ago, I discovered Salt, a tool that…
As of this week and after almost four years, I'm not a Twilio employee anymore. I'm writing this while I work through a range of conflicting emotions, and try to adapt to new daily routines without…
Well that blew up. It was supposed to be just a silly off-the-cuff comment about how some bugs are very tedious to bisect. To answer a few questions people had, here’s what actually happened.…
To frugally furnish a codebase, imitate Ikea.
Seriously, I don't. I'd prefer SQL.
With the release of rust 1.70, there was some surprise and frustration that unstable test features now require nightly , like all other unstable features in Rust. One of the features most affected is --format json which has been in limbo for 5 years . This drew attention to a feeling I've had: the testing story in…
Fred Brooks published The Mythical Man-Month in 1974, describing the lessons he learned leading IBM’s OS/360 project during the 1960s. As technology goes, it’s ancient. Consider the workflow for a “debugging run”:
StreamingHttpResponse now supports async iterators when Django is served via ASGI.
Open a Unix or Linux terminal emulator. If you have Terminal.app on macOS, ensure that the "Use Option as Meta Key" option is enabled in its "Preferences" section. Now type foo bar baz followed by meta + b (i.e. alt + b or option + b on modern keyboards). In a typical desktop environment with a typical and modern…
Single ownership is one of those concepts that's both easier and more powerful than we realize.
Effort estimation is an important component of any project, software or otherwise. While effort estimation is something that everybody in industry is involved with on a regular basis, it is a niche topic in software engineering research. The problem is researcher attitude (e.g., they are unwilling to venture into the…
I'm not smart enough for modern web development, and that's ok
A collection of specific ways to improve your use of Rust
When integrating LLMs in your products, you often want to generate structured data, like JSONs. With the help of function calling (released June 13th 2023), this process has become much simpler! In this post I will explore the new API. Thanks for reading Simon’s Substack! Subscribe for free to receive new posts and…
UPDATE: LiveView has added a built in, more robust way of using this pattern. Check it out here ! I've been using LiveView for about two ye...
In my opinion, the PostgreSQL documentation is simultaneously excellent and fairly poor, and both its excellence and its shortcomings are di...
And it only took 21 hours. Linux 6.4 has a bug where it hangs on boot, but probably only 1 in 1000 boots (and rarer if using Intel hardware for some reason). It’s surprising to me that no one…
Text editors can be an interesting challenge to program. The types of problems that text editors need to solve can range from trivial to mind-bogglingly difficult. Recently, I have been on something of a spiritual journey to rework some internal data structures in an editor I have been building, specifically the most…
Where you learn the power of motions and how you can move blazingly fast and with extreme prevision using VSCodeVim