This is the first in what I want to be a weekly series of posts. It’s nothing fancy, just a bunch of articles I found interesting over the last week.

URLs are UI - a short and to the point article about a very basic thing, namely how URLs behave as UI and should be treated with the same care. Every voice counts however in the battle against machine URLs.

Serverless Architectures - an introduction and overview to serverless and its main trends. The shortcomings part is very poignant, given that much marketing material would have you believe serverless is the next sliced bread. As usual with articles on Martin Fowler’s website, this one is well researched and supported by a lot of their in-house experience.

Developer experience lessons operating a serverless-like platform at Netflix - a case-study in running a serverless platform at Netflix. The product is aimed at external developers, rather than internal ones, and is very targeted. Nevertheless, the same sort of issues crop up as in more general platforms, which I found insightful.

Scaling your API with rate limiters - from Stripe Engineering comes this nice introductory piece to the uses of rate-limiters. There’s a good discussion on rate limiters vs load shedders and when to use which. Some details about how to use them in practice, but I’d have liked more details about the actual implementation - what backing store they use, what criteria they consider in rate-limiting etc.

Designing robust and predictable APIs with idempotency - another one from Stripe Engineering, and equally as good. I especially liked the mention of the idempotency keys, which is the first time I’ve seen written about a pattern I’ve oft encountered in practice.

You probably shouldn’t use DynamoDB - an article written out of experience. The numbers quoted seem quite small though. Small enough to make DynamoDB seem useless or at least very constrained in it’s uses. As always, you can push Postgres/MySQL + Redis to do massive things, so don’t jump into NoSQL unless you have to.

Where do type systems come from - a change of pace in this article about the mathematical logic origins of type systems. There’s a lot of punch for such a small article so I definitely say it’s worth the read. But if you don’t, the tl;dr is that type systems were invented by logicians at the start of the last century to deal with paradoxes arising from “untyped” approaches to formalizing all of mathematics. The attempts didn’t and couldn’t work but found out renewed applications in computer science and programming language theory some 50 years later. Because even if we can’t prove everything about a program, we still are interested in proving some things, and types provide the infrastructure for this.