Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 21,844 posts.
Even more fun with building and benchmarking Firefox with GCC and Clang
Recent switch of official Firefox builds to Clang on all platforms has triggered some questions about the quality of code produced by GCC c...
A bad workman blames his tools
One of the most depressing things about being a programmer is the realization that your time is not entirely spent creating new and exciting...
Functional JavaScript: Closure
After a seemingly endless journey , the publication of Functional JavaScript is complete and books have found their way into peoples’ homes. Below is a list of useful links related to the book:
Functional programming explained in Clojure with a terminal-based game
So far, you’ve focused on becoming famil iar with the tools that Clojure provides: immutable data structures, functions, abstractions, and so on. In this chapter, you’ll learn how to think about your programming tasks in a way that makes the best use of those tools. You’ll begin integrating your experience into a new…
When can glibc be built with Clang?
Updated in 2026: glibc 2.43 added experimental support for building with Clang. In September 2021, I wrote "So, dear glibc, will you be happy with my sending Clang patches?" in Build glibc with LLD 13. We have come to a turning point. In Linux Plumbers Conference 2021, at the glibc Birds of a Feather session, I asked…
Roapi: An API Server for Static Datasets
Benchmarks & Tips for Big Data, Hadoop, AWS, Google Cloud, PostgreSQL, Spark, Python & More...
Understanding lvalues and rvalues in C and C++
The terms lvalue and rvalue are not something one runs into often in C/C++ programming, but when one does, it's usually not immediately clear what they mean. The most common place to run into these terms are in compiler error & warning messages. For example, compiling the following with gcc :
Writing a basic service for GNU Guix
Let's write a service for GNU Guix that will automatically start kmonad at boot, and keep it running until shutdown.
Shrinking a Kotlin Binary by 99.2%
We'll get to the shrinking, but first let's motivate the binary in question. Three years ago I wrote the "Surfacing Hidden Change to Pull Requests" post which covered pushing important stats and diffs into PRs as a comment. This avoids surprises with changes that affect binary size, manifests, and dependency trees.
Closures as Win32 Window Procedures
Back in 2017 I wrote about a technique for creating closures in C using JIT-compiled wrapper. It’s neat, though rarely necessary in real programs, so I don’t think about it often. I applied it to qsort , which sadly accepts no context pointer. More practical would be working around insufficient custom allocator…
Lua/APR - proper standard library for Lua
Lua/APR is a binding of the Apache Portable Runtime (APR) for the Lua programming language . APR powers software such as the Apache webserver and Subversion and Lua/APR makes the APR operating system interfaces available to Lua, serving as an extended standard library. Thus far the following modules have been…
Self Healing Code with clojure.spec
Works On My Machine is the place where Cognitects reflect on tech, culture, and the work we do. The views expressed on Works On My Machine are those of the a...
In His Own Words: Gary Kildall
Gary Kildall was a pioneer of personal computer software. He wrote programming language tools, including assemblers (Intel 4004), interpreters (BASIC), and compilers (PL/M). He created a widely-used disk operating system (CP/M). He and his wife, Dorothy McEwen, started a successful company called Digital Research to…
Building a CRUD App with Datomic Cloud Ions
Software engineer, etc etc
Understanding Concurrency, Parallelism and JavaScript
Up until now, I was not aware that concurrency and parallelism were actually different things since they are often used interchangeably by some. I just learned that this is not the case while reading Chapter 9 of the book “Clojure for the Brave and True.” This made me want to learn more about concepts related to…
Adding a new statement to Python
This article is an attempt to better understand how the front-end of Python works. Just reading documentation and source code may be a bit boring, so I'm taking a hands-on approach here: I'm going to add an until statement to Python.
Lisp Hackers: Vladimir Sedach
Vladimir Sedach is an active open-source Common Lisp developer and proponent, as well as a computing philosopher to some extent. At his car...
Super-Flat ASTs
In my previous post, I introduced the simp le programming language. Near the end of that post, I mentioned that the parser isn't very efficient.
Formally Modeling Dreidel, the Sequel
2 model 2 dreidel
Nested Transactions in CockroachDB 20.1
What do nested transactions look like in an ACID environment? We explore the journey of a nested SQL transaction in CockroachDB in this post.
MongoDB and Riak, In Context (and an apology)
There has been quite a bit of furor and excitement on the Internet this week regarding some very public criticisms (and defenses) of MongoDB and its creators, 10gen . Unfortunately, a ghost from my recent past also resurfaced as a result. Let me begin by apologizing to 10gen and its engineers for what I said at JSConf…
WebAssembly: TinyGo vs. Rust vs. AssemblyScript
A browser sorting benchmark comparing JavaScript, Go, TinyGo, Rust, and AssemblyScript, with source code and test conditions.