Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 5,637 posts.
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 ...
Monads and Macros
Monads and macros have an almost gnostic mystique about them. Why is that? Why does hardly anyone use both?
Announcing Clojure/core
I'm happy to announce Clojure/core , a joint endeavor between myself and Relevance, Inc. Clojure/core is a specialized technical practice w...
Typed Lisp, a Primer (2019)
Exploring Lisp's fine-grained type hierarchy.
The Joy of The Joy of Clojure Closure
It’s has been an absolute pleasure 2 working with Chouser 3 and our army of Manning 4 editors and proofreaders. I would also like to thank Christophe Grand for his excellent 5 technical review. Additionally, I would like to thank Steve Yegge for writing the foreword and providing insightful feedback 6 that I believe…
The Emergent Features of JuliaLang: Part II – Traits
Introduction
An Awk Implementation in C99
A somewhat compact implementation of the awk programming language
Lambda Calculus and Lisp, part 1
The first of a series of envisioned blog posts on lambda calculus, and Lisp. It’s unclear exactly where to start: there is a whole heap of interesting issues, both theoretical and in terms of concrete implementations, which tangle and interconnect. A particular application of lambda calculus is a very salient…
Zig 0.15.1
Zig is a general-purpose programming language and toolchain for maintaining robust , optimal , and reusable software.
New Diagnostic Architecture Overview
Diagnostics play a very important role in a programming language experience. It’s vital for developer productivity that the compiler can produce proper guidance in any situation, especially incomplete or invalid code.
Shipping Const Generics in 2020
It’s hard to believe that its been more than 3 years since I opened RFC 2000 , which defined the const generics for Rust. At the same time, reading the RFC thread, there’s also been a huge amount of change in this area: for one thing, at the time the RFC was written, const fns weren’t stable, and consts weren’t even…
We interfaced single-threaded C++ with multi-threaded Rust
And lived to tell the tale.
The Power of Lifetimes
The execution of a program unfolds over some interval of time. The lifetime of every temporary resource (e.g., variable or object) is the time span between that resource’s “creation” and “destruction”. This lifetime is wholly contained within the typically-longer lifetime of the program.
Formal Methods and the Future of Programming
I’ve been telling people for the last 25 years that Jane Street as an organization was just not interested in formal methods.
Obfuscated Erlang Competition Results
We build transformative solutions for the world’s most ambitious companies. We're experts at building massively scalable, distributed systems.
PowerShell Inventor Jeffrey Snover Interview
We had a great talk with Jeffrey Snover, Microsoft Technical Fellow and CTO for Modern Workforce Transformation. Snover is the inventor of Windows PowerShell, an object-based distributed automation engine, scripting language, and command line shell. Enjoy full interview on our website.
The Expression Problem and its solutions (2016)
The craft of programming is almost universally concerned with different types of data and operations/algorithms that act on this data [1] . Therefore, it's hardly surprising that designing abstractions for data types and operations has been on the mind of software engineers and programming-language designers since…
Uninitialized memory: Unsafe Rust is too hard
Why unsafe Rust is a complex and user unfriendly experience.
Even in Go, concurrency is still not easy
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
Making Lenses Practical in Java
How (and why!) to convince the machines to write lenses for you
From first principles: Why I bet on Scala.js
Three years ago, I downloaded the nascent Scala.js compiler and tried to use it on a toy project.
Latches in C++20
Latches and barriers are coordination types that enable some threads to wait until a counter becomes zero. You can use a std::latch only once, but you can use a std::barrier more than once. Today, I have a closer look at latches.