mitchell vitez

toggle dark mode

blog about music art media

resume email github


I’ve written about a bunch of different things here. Common topics include functional programming, type systems, math, machine learning, and basically any kind of random idea I find intriguing.

If you’re looking for a quick sampling, why not try what I think are my best posts?

If you like, you can subscribe to the rss feed.

Clean Face Topology

My new favorite box modeling technique

Where does the major scale come from?

Investigations with hopes of a simple origin


Year in Review

Ridiculously Inefficient Cipher-cracking in National Treasure 2

Riley's supposed to be a hacker

Bounded Bézier

Calculating the extents of cubic curves


An informal formal systems talk

Character Voicing

Inventing an automated spoken language

Switching from Snap

Basic auth becomes basically everything

Perfect Pitch Training

A simple extended study program

Navigating with Dijkstra

Building a simple road map route finder

Group Voting

Voting in a context where you can't vote for yourself

Stanley Cup Probabilities

How likely is the winner of the first game to win the series?

A Wild GADT Appeared

Playing with partially-shared records

Creating Cupid

Learning how to digitally sculpt 3d humans


Year in Review

Scripting Unreal Engine

Programmatically adding assets to a level

Christmas Favorites

For solo jazz piano

Make Your Own Haskell

My talk from Haskell Talks at Mercury 2022

Slow Down

More sheet music transcription

A Counting Monad

An infinite source of numbers

Snowdin Town

My experience transcribing sheet music by ear

End of the Life-Philosophical Line

Desiring to find new strategies

Haskell-style Comprehension Syntax with Rust Macros

Stealing syntax...somewhat

Data Declaration Syntax Separation

Picking apart types and values

Notes on the Ableton Reference Manual Version 11

Shortcuts, inspiration-inducing ideas, and more

Violin Rendering

Code speedups and unlocking creativity


Year in Review

Flippant Haskell

Recipes for reordering arguments

Haskell's Type System Standing Alone

An unusual programming language

Going Dark

Adding dark mode wasn't that bad

Reading the Bible

And why you might want to


Excellence through focus, or linkages?

Over a thousand pieces of electronic music I've enjoyed

What I've listened to

Majorly Numb

Why do the top couple YouTube covers of "Numb" by Linkin Park sound strange?

Counting Cardinalities

Type-level functions to count possible terms

Implementing a Robin Hood HashMap in Haskell

Structures, strictness, and ST

Counting Crossword Grids

How can we shrink a range given additional constraints?

The Ontology of Magenta

A frivolous fun fact

Die Simulation

Constructing dice from other dice

Tuple Prelude

A Template Haskell Adventure

Record Updates Erase Tags

Something to watch for while using record updating syntax

Derangement Probability

Supershuffling sequences

Causal Normality

The need for going beyond propositional logic to capture causal structure

Q Learning

Learning to lookup

Dependently Typed Activation Functions

Thoughts on sneaking proofs into hidden layers

Algebraic Dialogue Trees

A straightforward design in Rust

Writing CPython.Simple

Quick reflections on designing a wrapper library for ease of use

Mortal Answers

Responses to a few of Nagel's Questions


Year in Review

Using Persistent with Servant

A near-minimal example

Building an API with Haskell, Servant, Sqlite

Nicely-typed lightweight database-backed APIs on the cheap

Formula 1 Without Formulas

The quick Monte Carlo approach to a permutation problem

Vanilla Policy Gradient

Reinforcement learning implementation in PyTorch

Mathematical Spectra

Algebraic closure and structure complexity

Speed and Velocity

On the emotional content of music

Risktaking, Choice, and Free Will

Are riskier choices freer?

A Moral Moil

How to defeat any moral system and still learn nothing

Esqueleto Select Syntax

Translations from pure SQL

Parades, Deer, and Asteroids

How to count what we can't see

The Complex Monad

A numerical anumerical

Currying Across Languages

How various languages apply one argument at a time

Null IN PostgreSQL

Another reason to not treat nulls like values

Journeying into Harry Styles' Solo Discography

A critique, a retrospective, an experience

A Few Simple Python Reductions

Moving new-ish programmers towards more readable code

Encoding Free Groups

The simple word reduction algorithm behind generating free groups on any set

Topological Data Analysis

Using networks to uncover obscure dataset shapes

Delta Functions and Mixture Models

Thinking in infinite distributions

Wows Per Dollar

An kid's introduction to value theory

Maybe vs. Dec

Handling boundaries with values and types

Freezing, Flattening, Rasterization, and Rendering

It's good to solidify work, but not prematurely

Real World Character Recognition

Training a convolutional neural network on the Chars74K dataset


Solving parity problems with recurrent neural networks

Sentience Decidability Programs

Can we program a consciousness detector?

Achieving Anything Easy

Dedication-constrained problems

Deconstructing Hadamard Gates

A lot of simple math describing qubits


Year in Review

Idris Auto-Implementations

Some observations about examples in Type-Driven Development with Idris

Dice Roll Likelihoods

A simple table for calculating dice roll chances

Basics of Probability Monads

Managing a list of uncertain events

Currying and Macros

Partially applied higher-order functions can replace some macros

Invertible Bitmatrices

An inductive counting problem

Magic Square Generation

Generating magic squares with backtracking, in Rust

The Ingeniousness of Genuineness

Being yourself makes for a surprisingly good filter

Concatenative Programming

Implementing a super-simple stack-based language

Composing Coercions

Representational equality, identity functors, and the hashdot operator

2019 Road Trip

A slew of national parks

Interpreting the Value of Money

It's more complex than it seems

Start Predicting Everything

Once more: the way to get good is to practice


Pure undirected love

Building Lenses

Implementing basic Haskell lenses in twenty exercises

Existing Effortlessly

How much work does it really take to survive?

Life and Other Fuzzies

Boundaries and mysteries


Heatmapping channel usage over time

Time Value of Everything

The right time to capture the most you can get

Shirking Imaginary Duties

Why don't we avoid avoiding voids

A Curation Algorithm

Playing with a simple genetic algorithm

Hidden Recursion

Definitional flavors of the gamma function

The Ins and Ins of Economics

Introductory insight into incentives

Elm Everywhere

Building Android, iOS, and web apps with shared front-end logic

The Siren Song of Meta-Altruism

Effects of going one level too deep

Manifesting Manifolds

Order and chaos at different structural scales


Should the universe be allowed to hide in plain sight?

Parity Clarity

Naturally even or odd

Guessing a Function

Achieving arbitrary approximation

The Map Puzzle

No iteration!

A Mental Model of the Python REPL, for Beginners

Understanding execution is exciting

Infinite Recursive Permutation Generators

Confusing code and alphabetic enumeration

Nullity, Exceptionality, and Optionality

Ways to handle nonexistent values


Generated and human-edited music

Understanding Understanding

To really learn, first you must become confused

Dead Simple Password Safety

How to be safer with next to no effort

Thought Molding

Changing the changing of your mind


Ways to turn things into other things

Braid Isotopy

Playing with fun-to-visualize mathematical structures

Cultural Affordances

Redesigning everyday interactions

The Incredible Joys of Amateur Music-Making

Being bad at something never felt this good

Malevolent Ackermann

Non-primitive-recursive functions and fork bombs

Novelty Minus Novelty

How to do new things without doing new things

The Erlang C Formula

Calculating traffic loads

Most People

Another horribly abused phrase

Human Heroes

Looking up to imperfect role models

Lerping and Slerping

Interpolation in its finest forms

Don't Forget Training

Differences between learning, practice, and training

A Few ghci Tips

Commands that improve your ghci experience


Facts learnable just by looking inside

Fear of Repackaging

Seriously dealing with ideas requires some unoriginality

A Polarizing Intuition

Light filters aren't spooky objects from beyond classical physics

Type-Enforced Exponential Trees

Type-level Peano exponentiation comes to the rescue

Incentives at Scale

Goals are far more powerful than blacklists

You Have to be Willing to Lose

If you're always winning, you're doing something wrong

Eternal Fate

The story of one research director and a very big choice

The CAP Theorem Misconception

You can have all three of C, A, and P

Hype and Hatred

Why so many people despise buzzwords

Video Game Setpieces

Fiction could be far stranger and vaster than it is

The Inner Game

What non-analysis does better than analysis

A Sense of Relativity

Trying to gain intuition for what happens at high speed

Haskell Error Reduction

A beginner's guide to the ways Haskell helps us avoid errors

Forgetful Functors and Lossy Language

Generality, specificity, and their levels of precision

In Praise of Intricate Writing

Thoughts on String Theory (the tennis one)

OCaml's Categorical Origins

On being underpinned by a different kind of machine

The Supreme Cleverness of Mario Kart's Mirror Mode

Game design at its most efficient

Incentives are a Hell of a Drug

Thoughts on building habits and following through on goals

The Rise of Dark Downtempo

Good things happen at 100bpm

Things We Criticize

Why people spend almost all their time on lesser evils

The Badness of Death

An eschatological exploration

Black-Scholes Under Duress

Remembering the conditions where it doesn't hold

My Superintelligence Can Beat Up Your Superintelligence

Wild speculations about a certain meeting in the far future

Flip It Around

A whirlwind tour through one of the conceptually simplest techniques for better reasoning

Giant Steps, Tiny Steps

Bouncing around the circle of fifths

What "Hylomorphic" Means

What's in a name?

How Python Dictionaries Work

Mining the C code for interesting tidbits

Alien-Worthy Human Humor

What's intergalactically funny?

Building an AST for Lua in Haskell

Translating from MetaLua

The Chebyshev's Inequality Proof of the Weak Law of Large Numbers

Building up some intuition

Why Volleying Is Allowed In Tennis But Not In Ping-Pong

Differences in some of my favorite sports, at scale

The Only Runtime Error I've Ever Seen In Elm

Infinite recursion defeats the type system once again!

Sum Types Are Better Than Others

How sum types help us avoid bugs

Roman Numerals In Haskell

Abusing pattern matching for the greater good

Semi-Conserved Quantities

Exploring things that change, but not that much

A Resolution

Why these posts exist