John Titor
@johntitor

From the future.

Joined September 2020

The well-known log4j security vulnerability of December 2021 triggered a lot of renewed discussions around software supply chain security, and sometimes it has also been said to be an Open Source related issue.

This was not the first software component to have a serious security flaw, and it will not be the last.

When I first learned about it, DNS didn’t seem like it should be THAT complicated. Like, there are DNS records, they’re stored on a server, what’s the big deal?

But with DNS, reading about how it works in a textbook doesn’t prepare you for the sheer volume of different ways DNS can break your system in practice. It’s not just caching problems!

So I asked people on Twitter for example of DNS problems they’ve run into, especially DNS problems that didn’t initially appear to be DNS problems. (the popular “it’s always DNS” meme)

I’m not going to discuss how to solve or avoid any of these problems in this post, but I’ve linked to webpages discussing the problem where I could find them.

Read More

This is a note on, the Turing Award laureate, Ted Codd’s revolutionary paper — A Relational Model of Data for Large Shared Data Banks. In this post, I will review the paper and add my comments with a perspective from modern distributed databases.

Using plain old JavaScript objects to manage data gets old very quickly. It’s error-prone, tricky to track changes efficiently, and easy to mistakenly incur performance costs.

TinyBase is a smarter way to structure your application state:

Read More

If you are interested in video-games hardware, the arcades of the 80’s are the source of endless entertainment. During that decade each game was designed from scratch with a new motherboard featuring various combinations of processors.

Game developers re-invented the wheel until two of them decided to standardize their hardware, propelling themselves ahead of the competition in the process.

SNK came up with the legendary Neo-Geo and Capcom had the CP-System (later known as CPS-1). While I hope someone will write a much deserved technical book about the Neo-Geo, I am focusing on the CPS-1. Today I wanted to talk about its sound system.

Read More

This post is another in an unstructured series of nix and NixOS related material. It hopefully provides a few new takes on what was already covered by For developers and Containers a la Nix. It is a case-study of a recent “full stack”1 polyglot pet project of mine combining tools and languages that I enjoy: nix, Haskell and TypeScript. It’s a good candidate to serve as an example application of nix flakes and how they can be used to combine different language environments in a monorepo, while at the same time having a codebase small and unimpressive enough to not get in the way.

Read More

I finally managed to get my hands on some DDR5 RAM to complete my Intel i9-12900 high-end PC build! This article contains the exact component list if you’re interested in doing a similar build.

A common distinction in technology for building websites is a separation between “static” and “dynamic” websites. The idea is that a “static” website always returns the same HTML/CSS/etc, whereas a “dynamic” website changes the content that the server returns depending on the request.

This seems, at first glance, to be a pretty sharp and useful distinction, letting us easily distinguish between static and dynamic. However, I don’t think it holds up to real scrutiny, and I believe that this distinction is holding us back from building better types of software that exist in the blurry space between static and dynamic.

Read More

It’s the fourth time I’m writing a yearly “PHP in 20XX” post, and I must admit I’ve never been as excited about it is this year: we’ve seen awesome new features added to PHP, with stuff like attributes, enums, promoted properties and fibers; and on top of that, the static analysis community is making great progress, my personal favourite feature is PhpStorm now supporting generics when writing code.

Exciting times are ahead, let’s take a look at modern day PHP!