New
The latest blog posts to take off on Hacker News. 21,834 posts.
Building a Text Editor for a Digital-First Newsroom
An inside look at the inner workings of a technology you may take for granted
EdgeDB: A New Beginning
In a few weeks we will release the first public technology preview of EdgeDB—a new open-source object-relational database. This post is a brief introduction and is the first in the series.
A Gentle Introduction to Rust
Introduction to the Rust language, standard library and ecosystem
Doubling Mono’s Float Speed
Miguel de Icaza's Blog
Sneak Peek at WebAssembly Studio
WebAssembly.Studio is an online IDE (integrated development environment) that helps you learn and teach others. It’s also a Swiss Army knife that comes in handy whenever working with WebAssembly (WASM). ...
A Taxonomy of Technical Debt
Hi there. I’m Bill “LtRandolph” Clark, and I’m the engineering manager for the Champions team on LoL . I’ve worked on several different teams on League over the past years, but one focus has been consistent: I’m obsessed with tech debt. I…
Problems with CSVs (2016)
Much of my professional work for the last 10+ years has revolved around handling, importing and exporting CSV files. CSV files are frustratingly misunderstood, abused, and most of all underspecified. While RFC4180 exists, it is far from definitive and goes largely ignored.
Why SQLite Does Not Use Git
SQLite does not use the Git version control system. SQLite uses Fossil instead, which is a version control system that was specifically designed and written to support SQLite.
Avoiding the Distributed Monolith
If you’re considering a microservices implementation, and you enjoy this post, you might also enjoy my more recent post Gasp! You Might Not Need Microservices. I recently read a post called The False Dichotomy of Monoliths and Microservices by Jimmy Bogard, which I absolutely loved. While reading through it I noticed…
Why Does “=” Mean Assignment?
Take the following code: a = 1 a = a + 1 print(a) A common FP critique of imperative programming goes like this: “How can a = a + 1? That’s like saying 1 = 2. Mutable assignment makes no sense.” This is a notation mismatch: “equals” should mean “equality”, when it really means “assign”. I agree with this criticism and…
Setting Emacs theme based on ambient light
I sit next to a window at work. On sunny days it’s easier to see a light editor theme, and when the sky is dark, a dark theme is easier on my eyes. So I decided to try to have my MacBook automatically switch the Emacs theme based on readings from the ambient light sensor.
Rationale: Or why am I bothering to rewrite nanomsg?
I became involved in the nanomsg community back in 2014, when I wrote mangos as a pure Go implementation of the wire protocols behind nanomsg . I did that work because I was dissatisfied with the ZeroMQ licensing model and the C++ baggage that came with it. I also needed something that would work with Go on illumos …
Incrementally Improving the DOM
Last time , I tried to convince you that you might not need the virtual DOM, and that many common UI patterns can be reproduced with a completely static page, with changes only happening at the leaves of the tree - attributes and text nodes. For some trickier UI patterns, I added back a limited form of dynamic…
Lessons Learned Reproducing a Deep Reinforcement Learning Paper
There are a lot of neat things going on in deep reinforcement learning. One of the coolest things from last year was OpenAI and DeepMind’s work on training an agent using feedback from a human rather than a classical reward signal. There’s a great blog post about it at Learning from Human Preferences , and the…
Writing a recursive ascent parser by hand
I’ve been exploring various ways to write parsers. For a long time, I’ve used hand-written recursive descent for its straightforwardness, flexibility, and performance. There is another way—parser generators like Menhir , LALRPOP , or the venerable Bison use the bottom-up LR algorithm .
Are unsound type systems wrong?
This is an essay I wrote early-2016. After battling with soundness vs. usability in Typed Clojure for many years, I was starting to reconsider the “obviously wrong” approach of baking unsoundness into the type system from the get-go. I look at some historical examples of intentional unsoundness in type systems, and…
Mill: Better Scala Builds
Mill is a new build tool for Scala: it compiles your Scala code, packages it, runs it, and caches things to avoid doing unnecessary work. Mill aims to be better than Scala's venerable old SBT build tool , learning from it's mistakes and building upon ideas from functional programming to come up with a build tool that…
A Virtual Machine
Magicians protect their secrets not because the secrets are large and important, but because they are so small and trivial. The wonderful effects created on stage are often the result of a secret so absurd that the magician would be embarrassed to admit that that was how it was done.
New features from the last few versions of Git
A look at the new features in recent Git releases.
C++17 Compiler Bug Hunt
Hey, if all I have is lemons – I have no choice but to make lemonade out of them! if reproducible serious bugs are ignored for many months, it indicates one ...