You know how usually when you go to the store to buy new kitchen cabinets, they ask “Will that be for here or to go?” Well not at Cabinets To Go, an actual store I saw. These guys have taken a heavy bet on people wanting to take their kitchen cabinets home rather than just enjoying them in the store.
Cabinets To Go reminds me a bit of the name I chose for my latest project: thislink.works. I’ve taken a bet on people wanting their links to work. The idea is that you can set up a link to say anything or redirect to anywhere, and you can update it whenever you want (instantly changing for people on the page). If you set an optional time, you’ll also get a countdown timer, and any redirect won’t happen until that time is reached.
For example, this link counts down to the Biden/Harris inauguration: https://thislink.works/5cc9f. On January 20th, at 12pm Eastern, that page will redirect everyone to the Whitehouse website.
The main use case I had in mind was for events, e.g. a scheduled live stream where you don’t have (or don’t want to reveal) the URL in advance. It might also be useful as just an editable URL shortener or a simple status page. Perhaps no one will use it for anything, but it was fun to build.
This was also an excuse for me to finally dig into Firebase. Being able to incorporate realtime updates for any number of users is a new developer superpower for me. I’ve already started to blog about it! If you want to read my first post about this technology, this link works: Hello, Firestore: Adding Live Data to Your Web Apps.
Here are the blog posts I’ve written since the last newsletter, in chronological order:
Convergent Encryption and Why No One Uses It — Convergent encryption is just cool. It’s a really simple idea that seems obvious in retrospect. Sadly, it has some drawbacks that are impossible to overcome.
Dynamic Programming Is Easy — I’m very proud of this post. Several friends and colleagues have reached out to say how much they liked this explanation of dynamic programming. I hope it helps novices and experienced programmers alike. Please give it a read and share it with others who would find it interesting.
Memoization in One Line of Python — This is a little follow-up to the dynamic programming post. It shows how a Python decorator can add memoization to any function.
Hello, Firestore: Adding Live Data to Your Web Apps — This is the start of a series about Firestore and related Firebase services. This post gives just the basics of using Firestore in a web app.
Here are some things I didn’t write but did enjoy reading:
Things I Was Wrong About: Types — I’m so grateful for this post. I too have come around about the value of type systems. And like Chris, my change of heart came about only when I encountered better programming languages. For me, Dart is the prime example of how a type system can provide value but still stay out of the way.
Escaping the Dark Forest — This is referencing Ethereum Is a Dark Forest, which I linked to in a previous newsletter. It’s a high-stakes story about a security vulnerability and how a small team of whitehat hackers heroically saved the day.
I was wrong. CRDTs are the future — I’ve been interested in learning more about CRDTs (conflict-free replicated data types) for some time, but now I’m really excited to dig in. This article explains how some of the practical drawbacks of CDRTs have been mitigated in recent years.