The curious case of the disappearing Polish S (2015)
One keyboard bug three decades in the making
One keyboard bug three decades in the making
Build a redis server in Elixir
In an important step toward ensuring the protocols that dictate how our networked services operate are safe, secure and running as expected, University of Michigan researchers have automated a technique called formal verification. Their system proves, without any human effort, that one of the mos
This week’s paper won the distinguished presentation award at HotOS 2021, and discusses the potential for future innovation in the tool that many use every day - the shell! A previous submission of this paper on Hacker News elicited a number of strong reactions. One reaction was the assertion that there are in fact…
A blog by sunfishcode
The Debian Janitor is an automated system that commits fixes for (minor) issues in Debian packages that can be fixed by software. It gradually started proposing merges in early December. The first set of changes sent out ran lintian-brush on sid packages maintained in Git. This post is part of a series about the…
Introduction Win32 APIs provide powerful functionality that let you get the most out of Windows in your applications. While these APIs are readily accessible to C and C++ developers, other languages like C# and Rust require wrappers or bindi
I've built an app called Fork Freshness . In the process of building that app, I've learned some interesting things about how open source projects evolve over time.
This is a list of recurring anti-patterns that I see when I help folks with their container build pipelines, and suggestions to avoid them or refactor them into something better.
I recently learned of csvquote , a tool that encodes troublesome CSV characters such that unix tools can correctly process them. It reverses the encoding at the end of the pipeline, recovering the original input. The original implementation handles CSV quotes using the straightforward, naive method. However, there’s a…
Effective D Programming Language.
Ship/Show/Ask is a branching strategy that helps teams wait less and ship more, without losing out on feedback.
On the 1st of January, 1998, Bjarne Stroustrup gave an interview to the IEEE’s ‘Computer’ magazine..
Dive into both the Ruby and Go languages, learn to write Go in Ruby, and gain the ability to modify Ruby exactly as you desire
Today marks my 4th year anniversary at my current employer, Databricks. It's been a good run, and this is a great chance to reflect on the journey so far. This post is as much for me to organize my own thoughts as it is for anyone else to read.
EDIT: I never expected this post to garner so much interest. Just to be clear, using the constant is a very bad idea in almost every situation I can think of. Even instructions like RCPSS should only be used by people who are convinced that the tradeoffs are worth it (or don’t have any other choice). Subtracting from…
We've already covered the basics of tree data structure in three posts. If you haven't gone through those yet, I would strongly going through the…
It turns out my hopes were answered. First, Prechelt published another article that covers Tcl, Python, Perl, and Rexx. Also, Ron Garret (nee Erann Gat) did a follow-up study in which he asked programmers to write Prechelt's test program in Lisp. His results show that the resulting Lisp programs ran faster on average…
This article is dedicated to discussing why it's so hard to detect the 'key up' or 'key release' event in a Linux terminal environment without relying on X server. Several techniques and code examples will be shown that are capable of detecting the keyup event on Linux (with and without an X server), but all…
There is a popular movement on Choosing Boring Technology started by article by Dan McKinley, followed by some discussions on Hacker News…
“Don’t write clever code.” Why not? “Because it’s hard to understand.” People who say this think of clever code such as Duff’s Device: Duff's Device send(to, from, count) registershort*to, *from; registercount; { registern =(count +7) /8; switch(count %8) { case0: do{ *to =*from++; case7: *to =*from++; case6: *to…
Date handling in JavaScript is a pain, it's time for a proper Temporal API
It's now roughly seven or eight years that I'm building dynamic front ends for the web. From digital art wallets to games (1, 2) and synthesizers, I've seen it all. And since my process
Git ls-files is up to 5 times faster than fd or find in this benchmark, but why?
There have been several releases of CUDA.jl in the past couple of months, with many bugfixes and many exciting new features to improve GPU programming in Julia: CuArray now supports isbits Unions, CUDA.jl can emit debug info for use with NVIDIA tools, and changes to the compiler make it even easier to use the latest…
personal web-log