New
The latest blog posts to take off on Hacker News. 14,540 posts.
Lisp in Space
Have you ever had a unique approach to a problem and been excited to use it, but you're met with skepticism? Today's story: what happens if you take someone who's passionate about LISP and put them in an organization where that's just not how they write software. Today's story is about getting LISP into space. The…
Use fast data algorithms (2021)
As an engineer who primarily works with data and databases I spend a lot of time moving data around, hashing it, compressing it, decompressing it and generally trying to shovel it between VMs and blob stores over TLS. I am constantly surprised by how many systems only support slow, inefficient, and expensive ways of…
Removing characters from strings faster with AVX-512
In software, it is a common problem to want to remove specific characters from a string. To make the problem precise, let us consider the removal of all ASCII control characters and spaces. In practice, it means the removal of all byte values smaller or equal than 32. I covered a related problem before, the … Continue…
Why isn’t there a decent file format for tabular data?
Tabular data is everywhere. I support reading and writing tabular data in various formats in all 3 of my software application. It is an important part of my data transformation software. But all th…
Rust from 0 to 80% for JavaScript Developers
Learn Rust to 80% in 5 minutes by leveraging your existing JavaScript knowledge. In this article, I list a number of differences Rust has compared to JS that is crucial to understanding it.
What I wish I knew when learning OCaml (2018)
This is a poorly structured list of common questions and answers about OCaml I had to ask myself or have been asked often.
What was wrong with SML?
From the highly eclectic blog of Mark Dominus
Distributed Systems Shibboleths
Shibboleths are historically a word or phrasing that indicate membership in a particular group or culture. I was introduced to the term in the West Wing where the President needed to verify the veracity of a person’s claims of religious persecution.
Experience Report: 6 months of Go
A report of my positive and negative experiences with Go after using it for 6 months at work.
A Rust match made in hell
I often write pieces that showcase how well Rust can work for you, and how it can let you build powerful abstractions, and prevents you from making a bunch of mistakes. If you read something like S...
Why train when you can optimize?
Multi-variable optimization is an incredibly useful tool for writing software. It allows you to specify a desired result and delegate finding the solution to a reliable algorithm. If you know what you want but not how to get it, optimization can probably help. Problems with many interacting variables that are…
Lies we tell ourselves to keep using Golang
In the two years since I’ve posted I want off Mr Golang’s Wild Ride, it’s made the rounds time and time again, on Reddit, on Lobste.rs, on HackerNews, and elsewhere. And every time, it elicits the ...
You Should Compile Your Python and Here’s Why
write Python that’s faster than C by optimizing your code, adding standard type annotations, and using Mypyc.
Crafting Interpreters
We’ll spend the rest of this book illuminating every dark and sundry corner of the Lox language, but it seems cruel to have you immediately start grinding out code for the interpreter without at least a glimpse of what we’re going to end up with.
I want off Mr. Golang’s Wild Ride (2020)
My honeymoon with the Go language is extremely over. This article is going to have a different tone from what I’ve been posting the past year - it’s a proper rant. And I always feel bad writing tho...
Four Eras of JavaScript Frameworks
From jQuery widgets to the first frameworks, component-centric view layers like React, and today's full-stack frameworks: a look back at each era of JavaScript development and what it taught us.
How to write a Git commit message (2014)
Commit messages matter. Here's how to write them well.
Implementing a safe garbage collector in Rust
In my last post I introduced an Emacs Lisp VM I was writing in Rust. My stated goal at the time was to complete a garbage collector. I think Rust has some really interesting properties that will make building garbage collectors easier and safer. Many of the techniques used in my GC are not original and have been…
Compile time evaluation in Nim, Zig, Rust and C++
Evaluating code at compile time is a capability that most, if not all, compiled programming languages possess, even if it can't be directly used by the programmer, but rather applied as an optimization. In this post, we'll explore a bit how to execute code at compile time in Nim, Zig, Rust and C++.
Sorbet and 100% cov makes Ruby refactoring possible
Safely refactoring Ruby traditionally involves many incremental steps and feature flags. Sorbet and 100% branch coverage make it possible to refactor a lot of code safely.
Whats New in PHP 8.2
PHP 8.2 has a new randomizer engine, readonly classes, disjunctive normal form types, redacted parameters, performance improvements, and more.
Why LSP?
LSP (language server protocol) is fairly popular today. There's a standard explanation of why that is the case. You probably have seen this picture before:
Software Mise En Place
I am really, really into cooking. In the heady days of 2016 I regularly threw dinner parties for 30+ people. These days I don't hate myself that much, but...