In 2023 I redrew the Sort dialog that SpreadJS ships with as an Advanced Sort Range, with sort levels you can add, copy and delete. Remove Duplicates and Find & Replace got the same pass. In September 2025 I built the empty state on Sourcetable’s Connectors page.

The empty state repeats the purple Add Connector button as a quieter ghost one, under a larger copy of its icon.
I was Sourcetable’s lead designer, working alongside the CEO on a small team. My first commits to the app came in March 2023. By then the app’s frontend was styled with Bulma and SCSS.
Folders can wait
The Data Library’s planning board in Figma, dated August 2023, had a row of V1 screens and a “V2 / Do Later” grid of six features, folders and permissions among them. That October the new library went into the app, and I gave it a styling pass.
Sad paths, and a castle for phones
A crash could leave the app on a blank white screen. In April 2024 I wrapped the whole app in an error boundary whose fallback said “Something went wrong. Please try refreshing the page.” The word “refreshing” reloaded the page, and so did the Refresh page button under it. The screen’s Figma file, “White Screen of Death”, had three illustrations, a sad face on a grid, a spreadsheet sinking into water and a torn spreadsheet. The build used the sad face. Someone has to make the sad paths look intentional.
The app wasn’t ready for phones. The page I drew for them reads “Your Spreadsheet is on another castle” above a castle on a spreadsheet and a Go to main site button. In July 2024 I built it into the app for any window narrower than 768 pixels. That September the headline became “Mobile view under construction”, with construction tape across the grid. I took the blocker out in July 2025, a year after I put it in.
Put seven ramps on the same sidebar
The grays file, dated May 2024, set legacy blue and legacy grey against slate, stone, zinc, neutral and gray, each coloring the sidebar’s filter and sort controls. That July I started moving the app onto Tailwind and shadcn/ui. Figma files dated July and August held Radix-style 12-step color scales and tokens for text and for interactive states from default to disabled.
Later, outside Sourcetable, I built Parity Bench, a checker for AI-built UI that matches colors from Figma back to a theme’s design tokens.
Pixel type for the Superagents landing
In 2025 I drew and built the dark Superagents landing.

The wordmark is pixel type ending in an underscore, and the astronaut is a halftone. I shaped the brand and designed pages and synthwave pixel-art OG images for the marketing site. I made more commits to that site than anyone else, and built the rendering engine behind its generated pages.
I also drew the chat in the app, and its Figma files sit beside its code in the AI chat; the rest are listed in the design archive.
Frustrating software is a tiny daily cruelty, and I take it personally.