Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 3,709 posts.
Clamiga: Common Lisp for the Amiga
After the ACE BASIC posts of the last months, this one is about a different project I have been working on for the last half year: CL-Amiga , or Clamiga for short. It is a Common Lisp implementation built for the Amiga family -- classic AmigaOS 3 on 68k and MorphOS as a fully native PPC build, AROS and AmigaOS 4 maybe…
Syntax extensions and regular expressions for Rust
WARNING: 2018-04-12 : The code snippets for this post are no longer available. This is just as well anyway, since they all depended on an unstable internal compiler interface, which hasn’t existed for years.
Implementing a JIT-compiler with Rust
I am writing Dora, a simple JIT-compiler with Rust. Dora is both the name of the custom programming language and of the JIT-compiler. After some time working on it, I want to write about the experiences I made. I started this project to get a better understanding of the low-level implementation details of a…
Render Multimedia in Pure C
In a previous article I demonstrated video filtering with C and a unix pipeline . Thanks to the ubiquitous support for the ridiculously simple Netpbm formats — specifically the “Portable PixMap” ( .ppm , P6 ) binary format — it’s trivial to parse and produce image data in any language without image libraries. Video…
A working D compiler on OpenBSD
I got GDC , the GNU D Compiler, working on OpenBSD . Supporting D has been a very long time coming. Here's the story of how we got here and where we need to go next.
What Vale taught me about linear types, borrowing, and memory safety
I've had some pretty surreal experiences while making Vale. 0 The weirdest was when I realized the hidden fundamental truth beneath a lot of the programming languages we use today.
Writing a simple evaluator and type-checker in Haskell
This tutorial serves as a very short and quick summary of the first few chapters of TAPL. Huge thanks to the ##dependent@freenode community (pgiarrusso, lyxia, mietek, …) for clearing all my …
Rust in 2022
In previous years, the core team have asked the community to write new years blog posts about Rust in the coming year. They haven't this year, but I wanted to write one anyway. However, it turned out to be harder than expected. Perhaps that's due to Rust being in an
Getting Started with Lisp in 2019
A quick guide on how to get started with LISP development in 2019. TLDR: install <a href="https://github.com/roswell/roswell">roswell</a>.
In Praise of Perl 5
I have decided to do a two-part series here praising Perl in part 1 and PostgreSQL in part 2. I expect that PostgreSQL folks will get a l...
Excessive nil pointer checks in Go
Let’s talk about nil pointer checks in Go. You want to prevent panics in production, but that doesn’t start with a deferred recover. It starts with defensive programming. Check your inputs, check your bounds, and check pointers for nil before dereferencing them. I’ve started to see more nil checks in Go code. In the…
Cuneicode, and the Future of Text in C
Following up from the last post, there is a lot more we need to cover. This was intended to be the post where we talk exclusively about benchmarks and numbers. But, I have unfortunately been perfectly taunted and status-locked,
Swift Functors, Applicatives, and Monads in Pictures
In this port to Swift of the great of Haskell's "Functors, Applicatives, And Monads In Pictures" we are going to look at these functional programming concepts aided by some very helpful pictures.
Exploring biphasic programming: a new approach in language design
I’ve noticed a small but interesting trend in the programming languages space. I’m not sure how novel it is, but this pattern, which I’ll refer to as “biphasic programming,” is characterized by languages and frameworks that enable identical syntax to express computations executed in two distinct phases or environments…
Rust for C++ programmers – part 2: control flow
If The `if` statement is pretty much the same in Rust as C++. One difference is that the braces are mandatory, but brackets around the ...
Techniques for safe garbage collection in Rust
This will be the first in a series of posts describing different design decisions made writing two Rust crates:
V8 Garbage Collector
wingolog: article: the last couple years in v8's garbage collector
Bytecode
What is the most commonly used bytecode language in the world? Java (JVM Bytecode)? .NET (CLI)? Flash (AVM1/AVM2)? Nope. There’s a few that you use every day, simply by turning on your computer, or tablet, or even phone. You don’t even have to start an application or visit a webpage.
Lisp moving Forth moving Lisp
This chapter is a culmination of many macro techniques we have looked at so far in this book. Using macro abstractions we have developed, we create an implementation of one of my favourite programming languages: forth . Although this implementation embodies most of the important ideas of forth, it is very different…
Iterating on Testing in Rust
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…
Extreme Multi-Threading: C++ and Julia 1.9 Integration
A guide to weaving C++ threads into Julia with the latest thread adoption feature in Julia version 1.9
Interface Builder's Alternative Lisp Timeline (2013)
Denison “Denny” Bollay is one of the guys at ExperTelligence that crafted the first Interface Builder (IB) and showed Steve Jobs and Bill Gates. Jeff Wishnie introduced me (thanks dude) recently, and I’ve been talking to Denny as I have an agenda - Pseudo-declarative UIs - that is in complete opposition to my…