New
The latest blog posts to take off on Hacker News. 14,543 posts.
Conversations with a six-year-old on functional programming
My six-year-old son walked up to me yesterday. “What are you reading?” At the time, I was reading part of Janis Voigtländer’s habilitation thesis. Unsure where to even start, I decided to just ans…
Teaching Programming Languages by Experimental and Adversarial Thinking
After we published this paper, Matthias Hauswirth kindly pointed out similarities between this work and the PL-detective , a body of work that is very closely related that we did not previously know. Less similar but also related---and entertainingly written up---is smeagol . Since we published the paper, we have…
The Various Kinds of IO – Blocking, Non-Blocking, Multiplexed and Async
A blog where I write down my thoughts, ideas and notions, as an exercise to cement them in my memory and improve on their concepts.
Java’s Mysterious Interrupt
One of the lesser known parts of Java is InterruptedException. With its vague-sounding name and non-committal Javadoc, few people are able to figure out what they need to do with it. Since I myself didn’t really grok it, I decided to put together a post explaining how interruption works. If you are looking for a more…
More fun with reactive-banana-automation
My house knows when people are using the wifi, and keeps the inverter on so that the satellite internet is powered up, unless the battery is too low. When nobody is using the wifi, the inverter turns off, except when it's needed to power the fridge.
Are interruptions worse for programmers than for other knowledge workers?
This is quite a popular cartoon. I posted this in a comment on why programmers wear headphones a...
First impressions about Graal VM
Last week was the release of Oracle’s GraalVM. As stated on the website: GraalVM is a universal virtual machine for running applications written in JavaScript, Python 3, Ruby, R, JVM-based languages like Java, Scala, Kotlin, and LLVM-based languages such as C and C++. GraalVM removes the isolation between programming…
7-Zip: From Uninitialized Memory to Remote Code Execution
Blog about anti-virus software vulnerabilities.
When the Compiler Bites
So far this year I’ve been bitten three times by compiler edge cases in GCC and Clang, each time catching me totally by surprise. Two were caused by historical artifacts, where an ambiguous specification lead to diverging implementations. The third was a compiler optimization being far more clever than I expected…
How to send local files to Chromecast with Python
How to stream local files using Python and 11 lines of code.
The Internals of Postgres – Concurrency Control
Concurrency Control is a mechanism that maintains atomicity and isolation, which are two properties of the ACID, when multiple transactions run concurrently in a database.
Towards λ-calculus
lambdaway is built on a wiki engine, lambdatank, and a small Lisp dialect, lambdatalk.
Ruby’s Rack Push: Decoupling the real-time web application from the web
(UPDATED: updated to the PR are now reflected in the post) Something exciting is coming. Everyone is talking about WebSockets and their older cousin EventSource / Server Sent Events (SSE). Faye and…
Making art with SSH key randomart
SSH is everywhere in the development or operations world now. For development it’s what allows you to push to GitHub. For operations it’s what allows you to reasonably securely log into Linux servers.
The Story of ISPC: Intel SPMD Program Compiler
Collected together all for your convenience.
Software sucks
25 recent entries The horn of the Robert Smalls A difficulty in race-switching the Dukes of Hazzard On futile explanations Richard Blair Race-switching The Dukes of Hazzard Greek plural Erbaut Improved English-language month names I fix a thirty-year-old mistake Minced oaths? On the monobosom Partly about pie More…
Anatomy of a Program in Memory (2009)
Memory management is the heart of operating systems; it is crucial for both programming and system administration. In the next few posts I'll cover memory with an eye towards practical aspects, but wi
Three kinds of memory leaks
So, you’ve got a program that’s using more and more over time as it runs. Probably you can immediately identify this as a likely symptom of a memory leak. But when we say “memory leak”, what do we actually mean? In my experience, apparent memory leaks divide into three broad categories, each with somewhat different…
The quadratic formula and low-precision arithmetic
The familiar quadratic formula can give the wrong answer in a program due to numerical precision issues. This post shows what can go wrong and how to fix it. Especially important in low-precision arithmetic.
Implementing and Understanding Type Classes (2014)
Describing three strategies of implementing type classes, aiming to clarify their behavior
Scaling a High-Traffic Rate Limiting Stack with Redis Cluster
Flattening a single very hot vertical Redis node into a horizontal Redis Cluster at Stripe.
Programming Bottom-Up (1993)
(This essay is from the introduction to On Lisp .) It's a long-standing principle of programming style that the functional elements of a program should not be too large. If some component of a program grows beyond the stage where it's readily comprehensible, it becomes a mass of complexity which conceals errors as…
The Great Theorem Prover Showdown
Functional programming and immutability are hot right now. On one hand, this is pretty great as there’s lots of nice things about functional programming. On the other hand, people get a little overzealous and start claiming that imperative code is unnatural or that purity is always preferable to mutation. I think that…
One Giant Leap for SQL: MySQL 8.0 Released
MySQL is the last major SQL database that has evolved beyond SQL-92 by introducing window functions (OVER) and common table expressions (WITH [RECURSIVE])