Footprints in the sand from Thomas Greco
Trials and tribulations of a programmer with a deep appreciation for deterministic software... and also, life!

Getting Into Flow
Key takeaways from a conversation about flow states and how to make it easier to get into one.
Prevent Impossible States Pt. 3 - A UI Driven by State
Use the timer's state machine to drive a React UI, with controls that match its current status.
Prevent Impossible States Pt. 2 - State Transitions
Model a timer's states and events with TypeScript unions, then define the rules for moving between them.
Prevent Impossible States Pt. 1 - Union Types
Use TypeScript discriminated unions to require the right fields, narrow object types, and catch unhandled cases.
Life of a stargazer
featuring Colorfigures
Fun with Functors
JavaScript arrays are functors. What that means, the two laws they follow, and how to build a Box of your own.