Why I like Common Lisp
In a recent email exchange discussion, Charlotte Herzeel gave a summary of Common Lisp that I believe is worth repeating publicly. With her ...
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 3,709 posts.
In a recent email exchange discussion, Charlotte Herzeel gave a summary of Common Lisp that I believe is worth repeating publicly. With her ...
A modest mathematical framing of language
Articles about bootstrapping a business in tech and web development by Adam Waselnuk. I’m a first-time founder who is bootstrapping a software business. Follow along as I learn!
In the previous post , we watched the compiler transform optimized SSA into machine code bytes and package them into object files. Each .o file contains the compiled code for one package—complete with machine instructions, symbol definitions, and relocations marking addresses that need fixing. But your program isn’t…
Go obtains much of its compilation speed from the Plan 9 compiler, of which it is a direct descendant. The Plan 9 toolchain deferred much of the work traditionally performed by a compiler to the linking stage and its performance was summarised in section 8 of this paper
This morning I had a chat with the students at Google's CAPE program. Since I wrote up what I wanted to say I figured I might as well blog ...
One of the biggest things Zig has going for it—especially compared to Rust—is that it is (relatively) small. That sits in tension with Rust’s approach to solving memory safety problems, and sets up a nice challenge for future programming language designers.
A programming language should not be your identity.
C# 14 adds null-conditional assignment, a feature that safely assigns values to properties or indexers without long chains of if statements.
When designing or, in some cases, implementing a programming language with built-in support for Unicode strings, an important decision must be made about how to represent or encode those strings in memory. Not all representations are equal, and there are trade-offs between different choices.
Understand how closures really work in Rust
What can it teach us?
Master JavaScript 'this' keyword: Learn six contexts where 'this' changes value. Essential for OOP and frameworks.
The Standard does not require that implementations define intptr_t nor uintptr_t. It also does not require that implementations define integer-to-pointer conversions in any meaningful fashion unless they define those types. Conforming implementations are certainly allowed to document some integer-to-pointer…
My thoughts about error handling in APIs after writing a Redis library in Rust.
A long time ago, there was no Internet. Ok, there was an internet, but I lived outside of it. It was 1992 or 1993, and I only saw my first webpage and send my first email in 1995. And I was perhaps…
One of my least favorite kinds of bug is when two different systems are interacting and the result has bad behavior but it’s difficult to say which (if either!) system is at fault. This is one of those stories, about Python’s buffer protocol and Rust’s memory model.
In this edition of the newsletter, we direct our attention to one of the most prominent highlights of the summer: the release of the Llama 2 base and chat models, as well as CodeLlama, the latest highlights in the open-source AI large language model (LLM) landscape.
I created a new intermediate language, called Bril, for teaching my funky open-source, hands-on compilers course. Because it’s for education, Bril prioritizes simplicity and regularity over more typical compiler priorities like performance and concision. This is an overview of Bril’s design, its quirks, and the…
Two years ago, I wrote a post with a handful of grievances about Rust , a language that I then (and still) consider my favorite compiled language.