Rediscovering CardDAV
I can no longer sync iOS’ Contacts with my macOS Catalina’s Finder (the iOS sync portion of iTunes is now built into the Finder in macOS Catalina); the OS insists I’ve iCloud configured for Contact...
Challenges with distributed systems
The hard realities of distributed systems, partial failures, network faults, and unpredictable latency, and how Amazon designs to handle them.
Unity Joins the Blender Development Fund as a Patron Member
Unity Technologies has joined the Blender Development Fund as a Patron Member!
A Defer Mechanism for C
An overview of a paper that presents a reference implementation of a defer mechanism (co-authored with Robert C. Seacord) has been accepted for publication at SAC’21. The full version is avai…
Microservices Considered Harmful (2019)
A recent trend in our industry is the software architecture move from a monolith app to microservices, often with a related blog post explaining how much better everything is after. A recent blog post by neo-bank Monzo explains that they have reached the crazy amount of 1500 microservices (a ratio of ~10 microservices…
13% of my website visitors block Google Analytics
There’s widespread use of adblockers on the web but users are increasingly blocking cookies and other tracking scripts too. Browsers such as Safari, Firefox and Brave are privacy-focused.
Windows Terminal Preview v0.10 Release
Welcome to the v0.10 release of the Windows Terminal! As always, you can install the Windows Terminal from the Microsoft Store or download the package
Libinput's bus factor is 1 (2019)
A few weeks back, I was at XDC and gave a talk about various current and past input stack developments (well, a subset thereof anyway). On...
How the Digg team was acquihired
About a year after the catastrophic Digg V4 launch, our last-ditch experiment to salvage the site showed a spark of hope. We’d cajoled our way into a Facebook beta that allowed us to publish each Digg users’s read articles into their Facebook newsfeed, sending every clicking friend directly to Digg’s permalink page…
Being Glue
Slides and notes for the Being Glue talk.
Rust concurrency: the archetype of a message-passing bug
Whenever I have a chance, I extol the virtues of message-passing and event-loops in structuring concurrent workflows in Rust. However, in…
Writing Python inside Rust
About a year ago, I published a Rust crate called inline-python, which allows you to easily mix some Python into your Rust code using a python!{ .. } macro. In this series, I’ll go through the process of developing this crate from scratch.
Rust for JavaScript Developers – Functions and Control Flow
Part 3 covers functions, closures, if-else, while, for..in, range and iterators
Why it's great to write blog posts
I’ve been blogging for close to four years now. I started blogging because I wanted to pick up a new skill (writing) and challenge myself to do something new. Because I blog about what is both my work and hobby - software development and more specifically, cloud/platform engineering - it’s relatively simple to come up…
What is music? A unified theory of music and dreaming
For the purposes of this article, when I talk about "dreams" and "dreaming", without any further qualification, I am referring to the dreams that occur during sleep.
PostgreSQL Schema Design
The Postgres database is rich with features well beyond that of any other
Straightened Trees
Using custom code, the natural curvature of each tree is "corrected." Manufactured objects, i.e. buildings and power lines, twist and contort around the artificially plumbed tree. Each photo is shot on large format film, the only medium that captures enough detail to straighten the tree without pixelly artifacts…
Want to make good business decisions? Learn causality
In some organizations, earnest efforts to be “data-driven” devolve into a culture of false certainty in which the influence of metrics is dictated not by the...
Scripting tmux
I often want to start similar workspaces in tmux; for example I always want to tail those two log files in a pane , or I always want to start both vim and mysql in a pane, etc.
A circuit board from the Saturn V rocket, reverse-engineered and explained
In the Apollo Moon missions, the Saturn V rocket was guided by an advanced onboard computer system built by IBM. This system was built fro...
Switching from Vim to Intellij
From Vim To IntelliJ In the beginning, a love affair For the last 10 years or so, I have been a die-hard Vim user. I was introduced to Vim…
Are ad blockers doomed or have we already won? A history lesson
AdGuard dives into the history of ad blocking, from the very first banner on the web to present days, and we even have a peek into the future of ads and ad blockers. Let's look back together to better understand what awaits us ahead.
The Khmer Rouge: Genocide in the Name of Utopia (2016)
How is history used to support ideology? Is violence by a government against its own civilian population ever justified? Why are certain events given priority over others in history books? This les…
Crypto Fund II
We’re excited to announce a new $515 million fund that will be used to invest in crypto entrepreneurs, networks and businesses.
Windows Explorer Through the Years
At a glance comparison of every major Explorer release