Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 14,545 posts.
Crafting Interpreters: Classes
One has no right to love or hate anything if one has not acquired a thorough knowledge of its nature. Great love springs from great knowledge of the beloved object, and if you know it but little you will be able to love it only a little or not at all.
A systematic approach to debugging
I've got a reputation at work as being a skilled debugger. It's a frequent occurrence that the weird stuff lands on my desk [1] after it goes through another skilled engineer or two. To say my job is substantially "debug the weird shit" would not be an understatement and I'm here for it.
At Dynamicland, the Building Is the Computer
Dynamicland is a non-profit that resides somewhere between an academic research lab and a Silicon Valley startup, between physical and digital, and between computing’s distant past and its future.
Blog-cells: Interactive code cells for static sites
blog-cells can turn any web page into an interactive code notebook, similar to Jupyter notebooks, but powered by JavaScript and running entirely in the browser.
Programmable Notes
Agent-based note-taking systems that can prompt and facilitate custom workflows
Improved Error Handling in Rust
Overview of how to handle errors in the current version of the Rust programming language.
The Plum-O-Meter: Weighing Plums Using 3D Touch in Swift
Here at FlexMonkey Towers, the ever beautiful Mrs FlexMonkey and I love to spend our Sunday mornings luxuriating in bed drinking Mimosa...
Building a Program Synthesizer
Build a program synthesis tool, to generate programs from specifications, in 20 lines of code using Rosette.
Visualizing Your Ruby Heap
In a previous post, I wrote a bit about how Ruby objects are laid out in memory. Today we’ll use that information to write a program that will allow us to take a Ruby heap dump and visualize the layout and fragmentation of that heap. Ruby Object Layout Recap Just as a recap, Ruby objects are fixed width. That is…
Git-subtrac: all your Git submodules in one place
Long ago, I wrote git-subtree to work around some of my annoyances with git submodules. I've learned a lot since then, and the development e...
Working on The Witness, Part 1 (2012)
Mapping the walkable surfaces on the island of The Witness as a step toward bulletproofing the player movement code.
A full TCP/IP stack in under 200 LoC (and the power of DSLs)
(Note: This is the third and final part of a series. Part one appeared Monday and part two appeared yesterday.)
A new way to think about borrow checking (in reverse)
Have you ever had a weird idea, and then it worked, but you can't really believe it?
Let's Build a Compiler (1988)
This series of articles is a tutorial on the theory and practice of developing language parsers and compilers. Before we are finished, we will have covered every aspect of compiler construction, designed a new programming language, and built a working compiler.
Datomic: this is not the history you're looking for
In this post, I'll describe some common pitfalls regarding the use of the 'time-travel' features of Datomic ( db.asOf() , db.history() , :db/txInstant ).
Shellcode Injection
Injecting shellcode by overflowing the buffer - Demonstration
Taking a Look at CLR Thread Pool 'Thread Injection' Algorithm
As part of a never-ending quest to explore the CoreCLR source code I stumbled across the intriguing titled ‘HillClimbing.cpp’ source file. This post explains what it does and why.
How to build a `Git diff` driver
How to write an external tool for `git diff` to delegate complex diffs to.
How JPEG works: Interactively explore JPEG's lossy compression methods
In the world of technology, “forever” means about 5 years. It’s humbling to think that the 1992 JPEG image standard is still going strong despite being more than 5 “forevers” old. Why has it been so successful? This article presents the key ideas behind JPEG in plain language and includes an interactive JPEG…
The trouble with timestamps
Some folks have asked whether Cassandra or Riak in last-write-wins mode are monotonically consistent, or whether they can guarantee read-your-writes, and so on. This is a fascinating question, and leads to all sorts of interesting properties about clocks and causality.
68 things the CLR does before executing a single line of your code
Because the CLR is a managed environment there are several components within the runtime that need to be initialised before any of your code can be executed. This post will take a look at the EE (Execution Engine) start-up routine and examine the initialisation process in detail.
Physical Knobs and Elixir
I like production gear. Audio, video and .. miscellaneous. I like things that seem like they'll make me oh-so-very productive. I'm a sucker prosumer as a hobby. Let's talk about Elgato, Elixir and why I never actually get anything done. This is unfortunately not sponsored by a prosumer brand, or anyone, that'd have…