Allan Deutsch

Learning to think & build in public. Excited about tools for thinking and augmenting human capabilities.

Currently head of product & engineering @GrabbitNFT. Previously product at Microsoft PlayFab, Xbox Live, and Xbox.

Recent notes

TypeScript assertion functions increase type safety

Assertion functions let the programmer narrow types using a named function, making type narrowing much more readable.

Make API misuse hard

Being hard to misuse is an underrated characteristic of exceptional APIs, especially when the possibility needs to be exposed to the client for advanced scenarios.

The publishing pipeline for allandeutsch.com

An overview of how I avoided needing to copy+paste my notes into blogging software to publish them.

Svelte component APIs

There are many ways to Svelte a component...

Slugs make links readable

Special characters aren't valid in URLs, so custom slugs are used to make links easier to read.

Structural types increase data compatibility

Structural types are only concerned with the shape of data, rather than the names of types. This makes data types more compatible.

Type branding removes structural type compatibility

A structural type can be "branded" to add context to values by using the type system for annotations as is done with nominal types. Doing so makes them incompatible with structurally equivalent types.

Playa del Carmen travel guide

Tips from my travels to PDC, including where to eat, stay, and visit!

Mac tips

Various tips, hotkeys, and software I use on my Mac that I find to be broadly helpful and think everyone should know about.

Adding users to new teams with Lucia auth and Prisma

When building a B2B product, most customers will want to invite their team members. This post explores how I added support for that to Penguinsight, a user feedback SaaS I'm building.

Seattle area cafés I like

A curated list of my favorite Seattle area cafes to sit, sip, and relax or work.

Value proposition

The way(s) a product or service benefits its target customers and the statement describing it.