CDPH Digital Vaccine Record
Yesterday, California released their Digital Vaccine Record system for securely verifying residents'
COVID-19 vaccination status. I took a look at it and thought I'd write up my findings here. At a high level, the DVR consists of a QR code which contains a cryptographically-signed assertion in JSON Web
Token (JWT) format. I'll walk you through how to get one, how to
decode it, and what it contains in the rest of this article.
Getting one of the tokens is pretty easy; you just go to the Digital Vaccine Record website and put in your
name, date of birth, and the …
Serialization Format Performance
Most of the work done in actual programming jobs is taking structured data in some particular format from one system, slightly tweaking it, and sending it off to some other system. When exchanging data between different processes, it's almost always necessary to serialize it into a series of bytes which can be sent across a dumb byte-oriented transport (such as TCP). There are hundreds upon hundreds of different serialization formats out there, but I just wanted to talk about a few of the most common that folks use with the Python programming language.
Beating the Compiler
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.
— Donald Knuth
Measure. Don't tune for speed until you've measured, and even then don't unless one part of the code overwhelms the rest.
— Rob Pike
We spend a lot of our time in the modern, web services-driven technology industry ignoring performance issues. What's the point of micro-optimizing a 3ms function call when each request spends 8 or 9 seconds inside the SQLAlchemy ORM? Well, sometimes it's nice to practice those optimizion skills anyway, and today I'm going to walk you through micro-optimizing a simple problem and we'll see just how much better we can do than a naive solution… even though we probably normally shouldn't.
Link: PHP sucks
One of my co-workers wrote up this gem on why PHP sucks. I don't
agree with his points (having a "development server" isn't an important
or even particularly useful feature of a framework, much less a
language; prepared statements aren't the pinnacle of SQL), but he does
do a good job of showing off some of PHP's more spectacular failings.
I'm naming all of my PHP functions
(yes; I do appreciate the irony of linking to his post from a PHP site)
Dynamic DNS: Part Two
This post is a follow-up to Dynamic DNS
When last I left you, we had basic updateable DNS running and could
update it from OS X. I've been a bit busy since then, but thanks to some
prodding from @Loredo, I got back in and started looking at. What
follows is the exciting story of how I got things up and running – by
the end of this post, you'll have access to a working copy of dnsextd
for linux, and a client application that updates SRV and IP (A/AAAA)