My notes

Thinking channels

Thinking about the same concept in a different way is often a big unlock to deeper and clearer understanding

Identity functions

Identity functions make it possible to provide a much better developer experience at API boundaries by improving the type

Total Typescript notes

I've learned a lot from this course, and use this note to record bits I want to remember and riff on some of my observations.

Dynamically generate TypeScript Playground links

TypeScript playground has a URL param to specify the code content. This makes it possible to always have up-to-date playground links for example code!

Add a demo link to TypeScript code blocks

Seeing example code with syntax highlighting is great, but sometimes you've just gotta run the code and see what happens...

Make example code interactive

Whenever possible, make code interactive. Interaction is the single most effective way to teach anything, including code!

Branded Types

TypeScript is a structurally typed language, but can have nominal typing semantics using a technique called type branding

Theory and practice

Theory and practice are often at tension with each other, but they shouldn't be. Each benefits from a health dose of the other.

Beautifully render code in Svelte

How I transform the code in my markdown files into beautifully rendered snippets on this site.

Linting and formatting a svelte project

Pulling together a bunch of language tools can be a bother, but I find automated formatting & code review tools are worth the hassle.

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.

Resolving CORS errors in SvelteKit

Cross-origin resource sharing requests let a user access resources on one site from another, but only if the server performs the secret CORS handshake with the browser.

Pasta Arabica

An improvised pasta dish made to drawn inspiration from the flavors and sounds of the Middle East. It is hearty and surprisingly bright.

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

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.

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 Doc Duck, a documentation feedback solution I'm building.

Value proposition

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

Seattle area cafés I like

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

Restaurants I like

A list of some of my favorite places to get a meal in the Seattle area.

I want a smaller phone

As a tech guy, I'm often interested in the latest and greatest gadget. This has historically meant the biggest and best smart phone, but no longer...


Some common scenarios and how to resolve them using git.

10 questions to evaluate a startup idea

10 questions to ask about any startup idea that will help you evaluate if it's worth pursuing.

Reflections on work-life balance

These are my reflections on how I view work-life balance, and how that view has changed over time.

Cozumel travel guide

A brief guide on having a successful trip to the SCUBA diving island paradise of Mexico, Cozumel.

Positioning statement

A position statement explains how a product fits into its market.

Cross-Price Elasticity of Demand (CPED)

Microeconomics tool for quantifying the change in demand for a product in response to price changes for substitute goods.

Price Elasticity of Demand (PED)

Price changes impact the demand for goods and services. PED is a microeconomics tool for quantifyng that impact.

Money market

The market for currency and the mechanics that govern it, such as interest rates, money supply, and the required reserve ratio.

Setting up a SvelteKit project with Storybook

Setting up Storybook on a SvelteKit project doesn't work out of the box using the config tool. This guide walks you through a few extra steps needed to get SvelteKit and Storybook running.

Avocado toast

Perhaps the icon of a generation, avocado toast is a delicious and nutritious way to start the day.

Present three options to build consensus

Cognitive biases lead people to evaluate options in context. There are strong biases that impact decision making when there are one or two options.

Single-option aversion bias

People are biased against deciding on a single option. Multiple options enable people to compare and make informed decisions.


An overview of my notes on microeconomics.

Costs of production

Understanding the costs facing a business is an important part of evaluating its profitability. There are two categories of costs - fixed and variable.

Price elasticity

Price elasticity measures how much the demand for a good changes in response to price changes.

Opportunity cost

The most valuable alternative that must be given up.

Marginal utility

The incremental value gained from have one more of something.

Consumer demand

Consumer demand looks at the three types of relationships between goods and how price changes to one product affects demand for another.

Supply and demand

An area of microeconomics focused on how price influences the behavior of producers and consumers.

Market forces

The factors that impact the price of goods and services, which in turn drives supply and demand changes.

Great UI shadows imitate real shadows

UI shadows should create an illusion of depth. For the best illusion, imitate reality.

The principal-agent problem

When there is a conflict in priorities between one party (the principal) and another party (the agent) that executions on their behalf.


Grapow is a sweet & spicy Thai dish made with ground meat, Thai chilis, and Thai basil. This dish is often requested by friends joining for dinner.

Improve site previews on social media by unfurling webpages

Some webpages have nice previews when shared on social media. These can be specified in the page HTML. Previews make the site user-friendly before users even visit it!

Value innovation

Value innovation is how companies offer dramatically higher value at lower costs, escaping competition.

Use contrast to direct attention

Visual focus is naturally drawn to contrast. Use contrast in design to direct attention.

Make hard decisions quickly

The less differentiated the options are, the harder it is to choose one.

Type-1 and Type-2 Decisions

A decision dichotomy based on if the decision can be mitigated or reversed.

Ask, don't tell

Giving unprompted advice is ineffective. Instead, lead people to ask for advice.

Vicious and virtuous cycles

Self-reinforcing cycles that act as compound growth systems. Negative cycles are vicious, positive cycles are virtuous.

The fundamental habits

These simple behaviors are often challenging, but provide a rock solid foundation for the rest of life.

Categories of customer attributes

Customer attributes can be grouped as demographic, psychographic, geographic, or behavior.


Utility is the microeconomics concept for how much satisfaction, pain reduction, happiness, or value a buyer gets from a product or service.

Common traits of successful blue ocean strategies

Great strategies have a clear focus, diverge from competition, and are easy to explain.

Value curve

The line on a strategy canvas showing the emphasis a company places on each factor of competition in its industry.

Segmentation, Targeting, and Positioning (STP)

Group consumers into segments, determine which to target, and estable the product's position for them.

Blue Ocean

Blue oceans are markets that haven't been created yet. They are lucrative business opportunities.

Factors of competition

The factors that companies/products within an industry typically compete on to provide value to customers.

Blue Ocean strategy

Blue ocean strategy is about creating new markets to escape competition.

The Four Actions framework

Helps identify which factors a business should eliminate, reduce, raise, and create. Typically used with a strategy canvas.

The strategy canvas

An analytical tool that shows how much emphasis companies place on value areas in their industry.

Red ocean

Crowded markets where customers have many options to choose from, resulting in cutthroat competition.

Customer relationship

The interactions a business has with customers and the strategies around those interactions.

Business Model Canvas

A modern alternative to a business plan. It has 9 sections with details of the business, its customers, and how it provides value.

Build infrastructure after not having it becomes painful

The pain caused by a lack of infrastructure proves the infrastructure is necessary.

Monetized content creation is a compound growth system

New content creates new organic inbound traffic and retains the audience. Old content creates more value from new audience.

Distribution channel

Distribution channels are how products and services get from a business to its customers.

Compound growth is most impactful at the end

Compound growth is exponential. Each compounding period generates more growth than the previous one.

Customer segment

The groups of people a business aims to serve.

Compound growth system

Any system in which growth is proportional to the principal, added to that principal, and then repeated.

Situation analysis

A tool for identifying and evaluating the market conditions for a product or service.

The learning process

A repeating cycle of receiving input, processing it to create output, evaluating that output, and evaluating results to improve future processing.

My spaced repetition workflow

The setup and workflow I use to retain what I learn and deepen my understanding.

The world is recursive

The same things happen across domains and contexts all over the world. Very little is unique or novel.

Give mostly positive feedback

Both positive and negative feedback are important, but on high performing teams positive feedback outweighs constructive feedback 5 to 1.