mitchell vitez blog music art media dark mode


I’ve written about a bunch of different things here. If you’re looking for a quick sampling, maybe try what I think are my best posts.

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

Mouth Controls

Combining simple sliders to form visemes


Emergent behavior from simple rules

Spinor Intuition

Analogies from lower dimensions


Layers of beats

Clean Face Topology

My new favorite box modeling technique

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

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

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

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

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

Achieving Anything Easy

Dedication-constrained problems

Deconstructing Hadamard Gates

A lot of simple math describing qubits

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

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

Building Lenses

Implementing basic Haskell lenses in twenty exercises

Life and Other Fuzzies

Boundaries and mysteries


Heatmapping channel usage over time

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

Manifesting Manifolds

Order and chaos at different structural scales

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

Dead Simple Password Safety

How to be safer with next to no effort


Ways to turn things into other things

Braid Isotopy

Playing with fun-to-visualize mathematical structures

The Incredible Joys of Amateur Music-Making

Being bad at something never felt this good

Malevolent Ackermann

Non-primitive-recursive functions and fork bombs

The Erlang C Formula

Calculating traffic loads

Most People

Another horribly abused phrase

Lerping and Slerping

Interpolation in its finest forms

A Few ghci Tips

Commands that improve your ghci experience

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

The CAP Theorem Misconception

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

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

OCaml's Categorical Origins

On being underpinned by a different kind of machine

The Badness of Death

An eschatological exploration

Black-Scholes Under Duress

Remembering the conditions where it doesn't hold

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

How Python Dictionaries Work

Mining the C code for interesting tidbits

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

A Resolution

Why these posts exist