I don’t believe in sprints
Sorry, I have opinions again.
Some mistakes Rust doesn't catch
I still get excited about programming languages. But these days, it’s not so much because of what they let me do, but rather what they don’t let me do. Ultimately, what you can with a programming l...
Win32 is the stable Linux userland ABI (and the consequences)
This post was inspired by some controversy with Valve and their support for Linux, but the bulk of it comes from long-term observation. One of the biggest impacts with the viability of Linux on the desktop was Valve’s Proton, a… Continue reading →
Why software engineers like woodworking
The smell of fresh pine sawdust filled the air, with more floating up as I sanded the last rough corner of the stool. My toddler was happily sanding her own block off to the side.
Why I don't miss React: a story about using the platform
Just over two years ago I left a role at a London based startup where I lead development of a large, React based e-commerce frontend to join Google to work on Chrome DevTools. My initial focus was to introduce Web Components as the new fundamental building block of all new DevTools features and UI. With the recently…
Cognitive loads in programming
This long post presents programming in a different light than what is commonly considered. We will look at cognitive aspects of interacting with code.
Seven sins of numerical linear algebra
In numerical linear algebra we are concerned with solving linear algebra problems accurately and efficiently and understanding the sensitivity of the problems to perturbations. We describe seven si…
Game Boy Wordle clone: How to compress 12972 five-letter words to 17871 bytes
Update: You can play an updated version online here in the binjgb Game Boy emulator. This is the version with the frequency-based answer l...
TypeScript is terrible for library developers
We spend a disproportionate amount of time on types
Roguelike Tutorial in Rust (2019)
This tutorial is free and open source, and all code uses the MIT license - so you are free to do with it as you like. My hope is that you will enjoy the tutorial, and make great games!
What does an idle CPU do? (2014)
In the last post I said the fundamental axiom of OS behavior is that at any given time, exactly one and only one task is active on a CPU. But if there’s absolutely nothing to do, then what? It turns
How to drive away your best engineers
Tenures are at an all-time low in the software industry.
Jo – a shell command to create JSON (2016)
I got tired of attempting to get shell scripts to produce valid JSON. You’ve likely seen something like this before: echo '{
Senior engineers are living in the future
I magine for a moment that, by some quirk of the universe, you are sharing your workspace with a time traveller. Specifically, yourself from 1 year in the future. How will you react to your new co-worker? 1 [ 1 If you find this exercise difficult, try instead imagining how your past self of a year ago would react to…
Why does gRPC insist on trailers?
gRPC comes up occasionally on the Orange Site , often with a redress of grievences in the comment section. One of the major complaints people have with gRPC is that it requires HTTP trailers. This one misstep has caused so much heartache and trouble, I think it probably is the reason gRPC failed to achieve its goal…
Architecture Notes: Datasette
Simon is the creator of Datasette and co-creator of Django web framework. Formerly he was a JSK journalism fellow at Stanford, and prior to that an Engineering Director at Eventbrite.
I have complicated feelings about TDD
They're not all good and not all bad
LogJ4 Security Inquiry – Response Required
On Friday January 21, 2022 I received this email. I tweeted about it and it took off like crazy. The email comes from a fortune-500 multi-billion dollar company that apparently might be using a product that contains my code, or maybe they have customers who do. Who knows? My guess is that they do this … Continue…
Want cleaner code? Use the rule of six
davidamos.dev is your first and best source for information about davidamos. Here you will also find topics relating to issues of general interest. We hope you find what you are looking for!
Nushell: Introduction to a new kind of shell
This article covers a gentle introduction to the shell nushell
Why React Re-Renders
In React, we don't update the DOM directly, we tell React what we want the DOM to look like, and React tackles the rest. But how exactly does it do this? In this tutorial, we'll unpack exactly when and why React re-renders, and how we can use this information to optimize the performance of our React apps.
How to mentor software engineers
Mentors should operate at three levels: goals, situations, and skills.
How does rsync work?
This post is the third article in a series of blog posts about rsync, see the Series Overview. With rsync up and running, it’s time to take a peek under the hood of rsync to better understand how it works. How does rsync work? When talking about the rsync protocol, we need to distinguish between:
MVC frameworks aren't dinosaurs but sharks
I first heard about the dinosaur 🦕 VS shark 🦈 analogy when I read this excellent article about relational databases:
Are We Really Engineers? (2021)
This is part one of the Crossover Project. Part two is here and part three is here. A conference talk based on this work is now available here. I sat in front of Mat, idly chatting about tech and cuisine. Before now, I had known him mostly for his cooking pictures on Twitter, the kind that made me envious of…
The tar archive format, and why GNU tar extracts in quadratic time
Date: 2022-07-23 Git: https://gitlab.com/mort96/blog/blob/published/content/00000-home/00014-tar.md