New
The latest blog posts to take off on Hacker News. 1,420 posts.
Clojure Design Patterns
Disclaimer: Most patterns are easy to implement because we use dynamic typing, functional programming and, of course, Clojure. Some of them look wrong and ugly. It’s okay. All characters are fake, coincidences are accidental.
Designing a Lock-free, Wait-free Hash Map
Wait-free algorithms attract vast interest and are an area of intense research, the motivation being that true lock-free algorithms and data structures provide great …
Run the First Edition of Unix with Docker
In this article you'll see how to run a PDP-11 simulator through Docker to interact with Unix as it was back in 1972.
From Markdown to remote code execution in Atom
Recently I took a look at Atom, a text editor by GitHub. With a little bit of work, I was able to chain multiple vulnerabilities in Atom into an actual Remote Code Execution. The vulnerabiliti…
Improving Ruby Performance with Rust
After rewriting just a few of the slow methods for my Rails site in Rust
How Citus Executes Distributed Transactions on Postgres
Distributed transactions are one of the meanest, baddest problems in relational databases. This post explains why distributed transactions are hard and how the Citus database supports distributed transactions by employing features like distributed deadlock detection, 2PC, and streaming replication in Postgres.
Demystifying Floating Point Precision
Floating point numbers have limited precision. If you are a game programmer, you have likely encountered bugs where things start breaking after too much time has elapsed, or after something has mov…
User experience design for APIs
Writing code is rarely just a private affair between you and your computer. Code is not just meant for machines; it has human users. It is meant to be read by people, used by other developers, maintained and built upon. Developers who produce better code, in greater quantity, when they are kept happy and productive…
Extensions in Firefox 58
With the release of Firefox Quantum on November 14, 2017, we officially entered a WebExtensions-only world for add-on development. While that event was certainly the news of the day, Firefox ...
Of SVG, Minification and Gzip
Smaller files are downloaded faster, so making an asset file size smaller before sending it to a client is a good thing to do.
DéjàVu: a map of code duplicates on GitHub
DéjàVu: A map of code duplicates on GitHub Lopes et al., OOPSLA ‘17 ‘DéjàVu’ drew me in with its attention grabbing abstract: This paper analyzes a corpus of 4.5 million non-fork projects hosted on…
What's wrong with the default build tool for Scala
SBT is the default build tool for the Scala programming community: you can build Scala using other tools, but the vast majority of the community uses SBT. Despite that, nobody seems to like SBT: people say it's confusing, complicated, and opaque. This post will deeply analyze what exactly it is about SBT that people…
“Security problems are primarily just bugs”
People are debating this email from Linus Torvalds (maintainer of the Linux kernel). It has strong language, like: Some security people ...
When I use classes, when I don’t, what I do instead and why
When I use classes, when I don't, what I do instead, and why
The Atoms of Programming
In the world of physics, there are many different models that can be used, though typically each of them has different applicability to different contexts. At the small scale, quantum physics is a very useful model, Newtonian physics will yield evidently incorrect predictions so is less valuable. Where a Newtonian…
Scaling Postgres with Read Replicas and Using WAL to Counter Stale Reads
Scaling out operation with read replicas and avoiding the downside of stale reads by observing replication progress.
Monotonicity Types: Towards a Type System for Eventual Consistency
A few weeks back, we published a draft of an article entitled _Monotonicity Types_. In it, we describe a type system which we hope can aid the design of distributed systems by tracking monotonicity with types....
A Cookbook for Machine Learning: Vol 1
This was a busy week, I had no time to read anything new, so I'm sharing a note that I wrote for myself, for no other reason than to understand things better. It's a kind of cookbook of various "transformations" you can apply to...
Speed up your Python using Rust
Rust is a language that has no runtime so it can be used to integrate with any runtime; You can write modules in Rust and call using Python
Using Go for Scalable Operating System Analytics
At Kolide, part of what we do is build a client-server system that facilitates the management of large, isolated installations of an open-source tool called osquery. While I’ve written and spoken about osquery in the past, in this post I want to focus on how we use Go to solve many of the challenges we face building…
A Sampling of Anti-Decompilation Techniques
Traditional (assembly level) reverse engineering of software is a tedious process that has been made far more accessible by modern day decompilers. Operating...