# Matthew Blode — Full corpus

> Blode is Matthew Blode’s site: Melbourne AI product leader at Linktree, two startup exits (Fingertip, VenueSafe), Forbes 30 Under 30, and the tools he ships.

This document is the complete public content of blode.co in one file, intended for long-context agent ingestion.

---

# About Matthew Blode

> Blode is Matthew Blode’s site: Melbourne AI product leader at Linktree, two startup exits (Fingertip, VenueSafe), Forbes 30 Under 30, and the tools he ships.

AI at Linktree. Co-founder of Fingertip and VenueSafe. Forbes 30 Under 30. Melbourne-based product leader and engineer.

## Quick facts

- **6 months** — VenueSafe went from idea to acquisition by me&u in six months.
- **15M+ users** — Helped scale me&u's mobile ordering platform to 15M+ users globally after VenueSafe was acquired.
- **100+ countries** — Fingertip supported small businesses globally before its acquisition by Linktree.
- **Zero to one** — My specialty is building the early product, engineering, and AI systems that get new ventures moving.

Two startups, two exits. I am a Melbourne product leader and engineer. I focus on going zero to one.

I co-founded VenueSafe during COVID. me&u (formerly Mr Yum) bought it in six months. I stayed two years, helped me&u reach 15M+ users, and supported the US launch from Austin, Texas.

Next I co-founded Fingertip with Olly Hoffman and the founders of Catch and Menulog. We reached tens of thousands of small businesses in 100+ countries. Linktree then bought Fingertip.

Today I work on AI at Linktree. I build AI tools for creators and small businesses.

On the side I ship apps, developer tools, and open-source libraries as the Blode Stack: the Glide typeface, Blode UI, Blode Icons, allmd, and DiffHub, a local diff viewer for cmux and agent-written code.

## Experience

### 2025 - Present — Linktree

*AI Engineer* · [Linktree](https://linktr.ee)

Building AI agents and assistants that help creators grow and manage their Linktree.

- Building AI agents and product experiences for 90M+ Linktree users.

### 2023 - 2025 — Fingertip

*Co-founder & CTO* · [Fingertip](https://fingertip.com)

Co-founded Fingertip with Olly Hoffman, Gabby Leibovich, and Hezi Leibovich to help small businesses run more of their business online.

- Scaled to tens of thousands of small businesses across 100+ countries.
- Built product and engineering across website creation, bookings, payments, and invoicing.
- Fingertip was acquired by Linktree in 2025.

### 2022 - 2023 — me&u

*Senior Software Engineer* · [me&u](https://www.meandu.com/)

Joined me&u (formerly Mr Yum) after the VenueSafe acquisition and helped scale the platform to 15M+ users globally.

- Helped scale me&u's platform to 15M+ users.
- Moved to Austin, Texas to support US market expansion.

### 2020 - 2021 — VenueSafe

*Co-founder & CTO* · [VenueSafe](https://venuesafe.netlify.app/)

Built a COVID contact tracing platform for Australian venues and hospitality businesses.

- Went from idea to acquisition by me&u in six months.
- Built and shipped the product during the peak urgency of COVID operations.

### 2019 - 2020 — Light Creative

*Front-end Web Developer* · [Light Creative](https://www.lightcreative.com.au)

Built React frontends for enterprise clients across e-commerce and corporate platforms.

- Delivered fast, responsive interfaces for high-traffic web applications.

## Education

Bachelor of Design, Major in Digital Technologies from [the University of Melbourne](https://www.unimelb.edu.au/), 2018 - 2020.

## Community & advisory

### Startmate

*Accelerator Mentor* · [Startmate](https://www.startmate.com)

Mentoring startups in Australia's leading accelerator and supporting the next generation of founders.

### OpenAI

*Codex Ambassador* · [OpenAI](https://openai.com)

Supporting local developer communities through community sessions, feedback, and hands-on learnings.

### Airtree

*Explorer* · [Airtree](https://www.airtree.vc)

Part of Airtree's operator community connecting experienced builders with early-stage founders.

### VCMC

*Co-founder* · [VCMC](https://vcmc.ai)

Co-founded the Vibe Coding Micro Community with Luca Bonelli and Ryan Hendler to bring AI-native builders together.

## FAQ

### What does Matthew Blode do?

Matthew works on AI at Linktree. He builds AI product and frontend tools for creators.

### What has Matthew Blode built?

He co-founded VenueSafe during COVID. me&u bought it in six months. He then helped me&u reach 15M+ users. Later he co-founded Fingertip with the founders of Catch and Menulog. It grew to tens of thousands of small businesses in 100+ countries before Linktree bought it. He also builds the Blode Stack: Glide, Blode UI, Blode Icons, and DiffHub.

### Is Blode a company?

Blode is Matthew's surname, and blode.co is his personal site. It is not a studio or agency. A few house tools use the name, like Blode UI, Blode Icons, and Blode.md. The rest have their own names.

- [blode.co](https://blode.co)

### Is Matthew Blode available for speaking or mentoring?

Yes. Matthew speaks at meetups and builder events on zero-to-one product, AI-assisted engineering, and shipping fast. He mentors through Startmate and co-founded VCMC, a Melbourne builder community.

### Where can I find Matthew Blode online?

You can find Matthew on LinkedIn, GitHub, X, Raycast, CodePen, and on this site under projects and resume.

- [LinkedIn](https://www.linkedin.com/in/matthewblode/)
- [GitHub](https://github.com/mblode)
- [X](https://x.com/mattblode)
- [Raycast](https://www.raycast.com/mblode)
- [CodePen](https://codepen.io/mblode)
- [projects](https://blode.co/projects)
- [resume](https://blode.co/resume.pdf)

---

# Contact Matthew Blode

> Speaking, advising, hiring, or a bug in something I shipped. This is the fastest way to reach me.

The contact form at https://blode.co/contact is the primary channel. Straight to my inbox. I read everything and reply to most things within a few days.

## What to reach out about

### Speaking

Meetups, panels, and internal sessions. Tell me the audience, the date, and how long you want. See [Past talks](https://blode.co/speaking).

### Advising and mentoring

Early-stage founders working out product, engineering, or their first AI features. See [Background](https://blode.co/about).

### Work and collaboration

Hiring, contract work, or building something together. See [Case studies](https://blode.co/case-studies).

### The tools I build

Bugs and feature requests for Blode UI, Blode Icons, allmd, and Done Bear. A GitHub issue on the relevant repo is faster than this form. See [Projects](https://blode.co/projects).

---

# How I get shit done

> Ten things I’ve learned about shipping, across two startup exits and 90M+ users at Linktree. The tools come last.

*“You don’t win by being right. You win by finding out faster.”*

## 01. Ship fast or die

> *Going faster means removing what’s slowing you down.*

Ask what’s slowing you down and get rid of it: blocked tasks, too many meetings, fuzzy ownership, PR reviews. Find the 10% that gives you 90% of the value, and get it in front of real people. Nobody knows what works up front. The quickest way to find out is to put it in someone’s hands.

## 02. Don’t get attached

> *Even a failed first attempt teaches you what to build next.*

Now that building is cheap, throwing code away costs nothing. Your first version is just a guess, so don’t get attached and keep iterating.

## 03. Call every customer

> *Code got cheap. Knowing what to build didn’t.*

At Fingertip we called every user. An actual phone call, then another one after they’d had a go with it. You hear the hesitation before someone works out how to say it politely. Ten people who need the thing will teach you more than a thousand who quite like it. Ring them and shut up while they talk. Skip it and you’ll ship a year of features nobody asked for, faster than anyone ever has.

## 04. Own it, then hand over the keys

> *If something’s broken and you can fix it, just fix it and push.*

Kill off “that’s not my job” wherever it shows up. One person owns a feature the whole way through. If you can’t yet say what “done” looks like, sort that out first. Ownership doesn’t scale by doing more yourself. It scales by handing someone real authority and the accountability that goes with it, both at once. One without the other isn’t fair on anyone.

## 05. Build lots, keep it simple

> *Get it simple enough that it clicks in your head.*

Solve your own problem, give the tool away, and show people how you did it. Find the little crux of each project and get it as simple as you can. Once it clicks, it’s like a ball rolling downhill.

## 06. Risk scales with blast radius

> *How much you can break decides how carefully you ship.*

An early MVP can ship fast and loose: push to main, get it in front of users. A platform with 90M+ people on it earns feature flags, staged rollouts, and proper review. The scariest code, anything touching money, tax, or permissions, earns stronger tests even when AI wrote it. CI going green doesn’t mean the product works.

## 07. Stay at the frontier

> *Pick the role that scares you slightly more than it excites you.*

Put yourself where you’ll learn the fastest, and keep learning the newest thing. Speed is a skill, and you only build it under pressure, when real people need a real answer and the deadline isn’t moving.

## 08. You can sense carelessness

> *People never see your code, but they can feel when it was made carelessly.*

It’s the sum of all the small details that people pick up on, even the ones they’d never consciously notice. So generate fast, then go and sand down the rough edges, and keep sanding. The thing that still sets you apart is knowing what’s good and standing behind it.

## 09. Get in the room

> *A model can write any code, but it can’t be in the room.*

Play the long game and optimise for opportunities. Do the talks, build in public, help people when there’s nothing in it for you. You can’t plan luck, but you can give it more ways to find you.

## 10. Get it out of your head

> *Write it down and you stop having to remember it.*

Don’t carry everything in your head. Put it in a system you trust, so you can be fully present on the one thing in front of you.

When AI can write anything, your edge is the stuff it can’t do: taste, ownership, being in the room.

---

# Speaking & talks

> Talks and sessions by Matthew Blode on zero-to-one product building, AI-assisted engineering, and shipping fast.

## Topics

- Zero-to-one product building
- AI-assisted engineering
- Product taste and craft
- Startup execution speed
- Developer tooling
- Community-led learning

## Talks

### Agents in production

*Vercel Ship Sydney* · July 2026 · Machine Hall, Sydney

Panel on agents in production with Auto & General and CommBank, moderated by Vercel.

- 200+ engineering and product leaders at Machine Hall.
- [Recap](https://vercel.com/blog/vercel-ship-2026-recap#ship-2026-in-sydney)

### Writing 90% of my code with AI

*Agents After Dark* · June 2026 · Podcast

Writing most of my code with AI and shipping it safely to millions of Linktree users: plan mode, layered agent and human review, feature flags, and evals.

- The hallucinated dependency that reached prod, and the review system that catches the next one.
- [Watch](https://www.youtube.com/watch?v=jUI-E4K942w)
- [Listen](https://open.spotify.com/show/033v9bTcSbsxFsxQmPnz52)

### Care made easy

*Claude Community Australia* · May 2026 · AWS, Melbourne

The tools I've built over two years to ship fast without cutting corners.

- Closing speaker at Claude for Developers Melbourne, billed as the Blode Stack.
- Live demo of the full developer toolkit.
- [Slides](https://blode.co/care)
- [Recording](https://www.loom.com/share/023aaf07218d4c938b6a5ce4428fc0f2)
- [Event page](https://claudecommunity.com.au/events/melbourne-claude-code-meetup-may-2026)

### Unblocking Yourself with AI

*Linktree* · May 2026 · Melbourne

How we run AI tools across a 10 year old codebase and 200+ engineers. 20 parallel agent branches, PRs that land overnight.

- From zero adoption to 20 concurrent agent branches in production.
- [Slides / link](https://blode.co/ai-usage)

### You can sense carelessness

*Next.js Melbourne meetup* · February 2026 · BuildPass, Melbourne

Users notice when you cut corners, even when they never see the code. Why the invisible details still shape how a product feels.

- ~50 developers and product builders at Next.js Melbourne.
- [Slides / link](https://blode.co/you-can-sense-carelessness)
- [Event page](https://luma.com/t5jle3hj)

### Ship fast or die

*Startmate mentor session* · January 2026 · Melbourne

A working session for the latest Startmate cohort. Claude Code workflows, what actually slows early teams down, and when going slower is faster.

- Part of an ongoing mentorship with Startmate.
- Claude Code, velocity killers, and knowing when to slow down.
- [Slides / link](https://blode.co/ship-fast)

### You don't have to make AI slop

*Melbourne builder meetup* · January 2026 · Melbourne

AI makes it easy to ship faster. It also makes it easy to ship worse. The habits that keep the bar high when you're building with AI every day.

- The gap between using AI and producing AI-quality output.
- Practical habits for keeping quality high.
- [Slides / link](https://blode.co/ai-slop)

### Building at different scales

*The Outlook panel* · July 2025 · Melbourne

What changes when you go from three people to Atlassian scale? Panel with Tarra van Amerongen and Trudi Boatwright.

- How execution changes at every stage while the mission stays the same.
- [Video](https://www.linkedin.com/posts/matthewblode_want-to-know-what-customers-want-tarra-activity-7363744098853273601-2l43?utm_source=share&utm_medium=member_ios&rcm=ACoAABPvOgMBrrRnmj7eHPWPIcoGwwpj2HiQRKg)

---

# Press & mentions

> Public features, awards, and third-party mentions of Matthew Blode.

## Recognition

- [Meet the Aussies on the 2025 Forbes 30 Under 30 Asia list](https://www.forbes.com.au/news/30-under-30/meet-the-aussies-on-the-2025-forbes-30-under-30-asia-list/) — *Forbes Australia*. Recognition tied to the 2025 Forbes 30 Under 30 Asia list.
- [Matthew Blode](https://pauseawards.com/winners/matthew-blode/) — *Pause Awards*. Public winner profile describing Matthew as CTO and co-founder of Fingertip.

## Features

- [Fingertip](https://www.forbes.com/profile/fingertip/) — *Forbes*. Forbes company profile for Fingertip, describing the business co-founded by Matthew Blode and Oliver Hoffman.
- [Linktree acquires emerging Melbourne-based competitor Fingertip](https://www.businessnewsaustralia.com/articles/linktree-acquires-emerging-melbourne-based-competitor-fingertip.html) — *Business News Australia*. Acquisition coverage describing Linktree's acquisition of Fingertip and the founders joining Linktree.
- [Matthew Blode - One Page Website Award](https://onepagelove.com/matthew-blode) — *One Page Love*. Feature page for Matthew Blode's one-page portfolio site.

---

# The Blode Stack

> 12 years of website autism, turned into reusable tools to avoid vibe-coded slop.

The full archive, including client work and retired projects, is at https://blode.co/projects.

## 1. Design foundations

A typeface, icon set, and component library that work together, plus the course behind the thinking.

- [Glide](https://blode.co/glide): Variable font family crafted for UI. · [GitHub](https://github.com/mblode/glide)
- [Blode Icons](https://blode.co/icons): 3,000+ beautiful icons. Lucide compatible. · [GitHub](https://github.com/mblode/blode-icons)
- [Blode UI](https://blode.co/ui): The shadcn/ui registry with good taste. · [GitHub](https://github.com/mblode/blode-ui)
- [Style Capture](https://blode.co/style-capture): Point at any UI. Let your agent rebuild it. · [GitHub](https://github.com/mblode/style-capture)
- [Taste Training](https://blode.co/taste-training): An interactive course that trains your design eye.

## 2. Developer tools

Tools and agents for coding, dictating, and reviewing changes.

- [Agent Skills](https://blode.co/agent-skills): All I know about building products, turned into agent skills.
- [Commandment](https://blode.co/commandment): Voice to text, instantly. Press a shortcut and speak. Bring your own OpenAI API key. · [GitHub](https://github.com/mblode/commandment)
- [DiffHub](https://blode.co/diffhub): Local diff viewer for cmux. · [GitHub](https://github.com/mblode/diffhub)

## 3. Platform tools

Finished apps and shared infrastructure, ready to use.

- [Done Bear](https://donebear.com): Calm, local-first task manager. Web, desktop, iOS, CLI, and agents, all in sync.
- [Blode.md](https://blode.md): Documentation platform. Write markdown, get a published docs site. · [GitHub](https://github.com/mblode/blodemd)
- [Strata Sync](https://blode.co/stratasync): Apps that just work. Inspired by Linear’s sync engine. Open source. · [GitHub](https://github.com/mblode/stratasync)
- [Convene](https://blode.co/convene): Records your meetings and transcribes them live. Notes land in a folder you own. · [GitHub](https://github.com/mblode/convene)

Total tools: 12.

---

# Free online design and AI resources

> Twelve free design and AI tools: a variable font, 4,193 icons, 80 UI components, agent tooling. Ten are mine, two are not, and each entry says where others win.

Twelve free tools for design and AI work: ten built by Matthew Blode, two not. Blode Icons is 4,193 icons, Blode UI is 80 components, Glide covers weights 100 to 950 in one 189 KB file, Agent Skills is 24 skills. All free except Taste Training: first unit free, three lessons, no account, then $49 once.

Published: 2026-08-10. Last updated: 2026-08-11.

Canonical URL: https://blode.co/free-online-design-ai-resources

## Key facts

| Fact | Value | Source | Checked |
| --- | --- | --- | --- |
| Tools listed | 12: 10 first-party, 2 external | Counted here | 2026-08-10 |
| Total cost | $0, except Taste Training at $49 once | blode.co/taste-training | 2026-08-10 |
| Account required | None, except Taste Training’s paid units | Checked on each site | 2026-08-10 |
| Blode Icons | 4,193 icons, outline and filled pairs | blode-icons-react 0.5.0 on npm | 2026-08-10 |
| Blode UI | 80 components on Base UI and Tailwind CSS v4 | blode.co/ui | 2026-08-10 |
| Glide file size | 189 KB roman, 204 KB italic, weights 100 to 950 | Measured on glide-variable.woff2 | 2026-08-10 |
| Maintainer | Matthew Blode, who built 10 of the 12 | blode.co/about | 2026-08-10 |

## On this page

- Who these are for
- How a tool gets on this list
- Free type, icons, and components
- Free font tools
- Training your eye on AI output
- Free tools for coding agents
- When these are the wrong choice
- FAQ
- Changelog

## Who these are for

This list is for design engineers and product builders shipping UI with an agent in the loop. Fonts, component defaults, and a review pass are what stop a generated screen looking generic.

## How a tool gets on this list

- Free for the core job, with any paid tier named.
- Ships an artifact: a font, an icon module, a component, a diff.
- Built for design engineers, not a marketing team.
- Has a maintainer. For ten of these, me.

## Free type, icons, and components

Glide, Blode Icons, and Blode UI work together, and none of the three needs an account.

- [Glide](https://blode.co/glide) (first-party): Variable sans-serif for product interfaces, with a static mono for code.
  - 189 KB roman WOFF2 and 204 KB italic, each interpolating a continuous 100 to 950 axis from three masters. Measured on the files blode.co serves, checked 2026-08-10.
- [Blode Icons](https://blode.co/icons) (first-party): Lucide-compatible names and props, so an existing Lucide import swaps over unchanged.
  - 4,193 icons, each a separate module, so an app importing six ships six. blode-icons-react 0.5.0 on npm, checked 2026-08-10.
- [Blode UI](https://blode.co/ui) (first-party): Installed with the shadcn CLI as source you own and edit.
  - 80 components on Base UI and Tailwind CSS v4. blode.co/ui, checked 2026-08-10.

## Free font tools

Static to Variable merges static weights into one variable file. Google Fonts covers the family you don’t want to draw.

- [Static to Variable](https://blode.co/static-to-variable) (first-party): Point it at a folder of static weights, get one variable file. Runs locally.
  - One 8-weight family needed 4,242 start-point rotations in the roman before it would interpolate. That’s the normal condition of independently drawn statics. blode.co/writing/static-fonts-to-one-variable-font, checked 2026-08-10.
- [Google Fonts](https://fonts.google.com) (external): The default free library when you need breadth, or a voice Glide wasn’t drawn for.

## Training your eye on AI output

Taste Training, Style Capture, and the carelessness talk are for the step after generation, when a screen is close but still generic.

- [Taste Training](https://blode.co/taste-training) (first-party): A course in spotting and fixing generated slop: judge, locate, rank, repair.
  - 48 lessons and 368 exercises across 10 units. The first unit’s 3 lessons are free, no account. blode.co/taste-training, checked 2026-08-10.
- [Style Capture](https://blode.co/style-capture) (first-party): Click any element on any site, get its computed styles mapped to Tailwind.
  - Captures computed style rather than source CSS, on-device, with no network request. blode.co/style-capture, checked 2026-08-10.
- [You can sense carelessness](https://blode.co/you-can-sense-carelessness) (first-party): Why carelessness shows in AI-assisted product work.
  - 9 slides, each pairing a shipped Fingertip screen with what replaced it. blode.co/you-can-sense-carelessness, checked 2026-08-10.

## Free tools for coding agents

DiffHub reviews what a coding agent wrote, Agent Skills loads expertise on demand, and Commandment replaces typing.

- [DiffHub](https://blode.co/diffhub) (first-party): Your branch against its detected base, side by side or inline. Notes copy out as a prompt.
  - Runs with npx diffhub@latest cmux. Nothing installed, no account. blode.co/diffhub, checked 2026-08-10.
- [Agent Skills](https://blode.co/agent-skills) (first-party): Skills an agent loads only when it triggers one: UI audits, typography, docs, PR review, releases.
  - 24 skills, 19,900 installs. blode.co/agent-skills, checked 2026-08-10.
- [Commandment](https://blode.co/commandment) (first-party): Press a shortcut, speak, text lands at the cursor. Your own OpenAI key, no subscription.
  - 1.9 MB download, v0.1.15, macOS 15.2 or later. blode.co/commandment, checked 2026-08-10.
- [Claude agent skills docs](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview) (external): The vendor reference for the agent skills format: frontmatter, triggers, packaging.

## When these are the wrong choice

| If this is you | Use instead | Why |
| --- | --- | --- |
| You need a typeface with a voice | Google Fonts, or a paid foundry licence | Glide stays quiet on purpose. Editorial and display work wants the opposite. |
| Your team already runs on Lucide, Phosphor, or Material Symbols | Stay where you are | The names match, so a swap is cheap. A working icon set isn’t a problem. |
| You want unstyled primitives to build your own system on | Base UI, Radix, or React Aria directly | Blode UI is opinions layered on Base UI. Take the primitives instead. |
| You review pull requests on GitHub rather than branches locally | GitHub’s own diff, or Graphite | DiffHub is for the branch before the pull request exists. |
| You want dictation that works offline or without an API key | macOS Dictation, or Whisper running locally | Commandment streams to the OpenAI Realtime API on your key. No key, no transcript. |
| You want design feedback from a person | A mentor, a critique group, or a cohort course | Taste Training marks accuracy, not intent. Nobody looks at your work. |

## FAQ

### Why are most of these your own tools?

Ten of the twelve are, which is a real bias. The bar is having used something enough to measure it, and most of what clears it is mine. The limits table names where something else wins.

### Are these tools really free?

Eleven of the twelve are free with no account and no paid tier. Taste Training is the exception: three lessons free, then $49 once for the other nine units. Nothing here expires into a paywall.

### What is on this list?

Twelve tools across four jobs: type and components, font conversion, training your eye on AI output, working with coding agents. A tool comes off when it stops meeting the criteria, with a dated entry.

### How often does this change?

The date moves only when the substance does: a price change, a broken workflow, a new measurement, a tool added or removed. Each gets a changelog entry, and the page date derives from the newest one. Restyling and typos don’t move it.

## Changelog

- **2026-08-11:** Cut the prose from 2,243 words to WORD_COUNT, dropping no number and no link. Two sections went entirely: both restated facts the page already carried.
- **2026-08-10:** Added an answer block, a key-facts table, a dated measurement on every item, and a limits table naming where other tools win.
- **2026-08-10:** First published with 12 tools across four sections.

Matthew Blode maintains this page and built ten of the twelve tools on it.

---

# Projects

> Selected work and a complete archive of Matthew Blode’s products, startup exits, AI and developer tools, open source, client work, and web experiments.

## 2026

- [Agent Skills](https://blode.co/agent-skills) — *Open source*. 24 skills for coding agents, explored as folders on an infinite canvas
- [allmd](https://blode.co/allmd) — *Open source*. Convert web pages, YouTube videos, PDFs, Google Docs, and more to markdown
- [Blode Icons](https://blode.co/icons) — *Open source*. Icon library for design engineers
- [Blode UI](https://blode.co/ui) — *Open source*. UI component library for design engineers
- [Blode.md](https://blode.md) — *Open source*. Documentation framework for the whole stack
- [Canvas Kit](https://blode.co/canvas-kit) — *Open source*. Infinite-canvas shadcn registry with pan, zoom, drag and folder cards
- [Captain](https://github.com/mblode/captain) — *Open source*. Captain a fleet of cmux worktrees from one Claude Code session
- [Commandment](https://blode.co/commandment) — *Open source*. Open-source voice dictation for macOS, bring your own OpenAI API key
- [Convene](https://blode.co/convene) — *Open source*. Open-source meeting transcription for macOS
- [DiffHub](https://blode.co/diffhub) — *Open source*. Local git diff viewer
- [Done Bear](https://donebear.com) — *Product*. Calm, local-first task manager for focused people and teams
- [Ghostwriter](https://github.com/mblode/ghostwriter) — *Open source*. Skills that draft messages in your own voice, not a model's
- [Glide](https://blode.co/glide) — *Open source*. Variable font family crafted for UI
- [HN](https://blode.co/hn) — *Side project*. A fast, modern Hacker News client
- [Rubber Duck](https://blode.co/rubber-duck) — *Side project*. Voice coding agent that streams audio to OpenAI Realtime and runs tool calls
- [Spotlight Testing](https://github.com/mblode/spotlight-testing) — *Open source*. See your code changes in a running dev server instantly
- [Static to Variable](https://blode.co/static-to-variable) — *Open source*. Turn a family of static fonts into one variable font
- [Strata Sync](https://blode.co/stratasync) — *Open source*. Sync that works offline
- [Style Capture](https://blode.co/style-capture) — *Side project*. Capture CSS from any website element and convert to Tailwind classes
- [Taste Training](https://blode.co/taste-training) — *Side project*. An interactive course that trains your design eye
- [Tiller](https://blode.co/tiller) — *Side project*. Interactive guide to learning how to sail a dinghy
- [Video Studio](https://github.com/mblode/video-studio) — *Open source*. Turn a JSON shot list into an AI-generated film, without paying for the bad takes

## 2025

- [Beautiful QR Code](https://blode.co/beautiful-qr-code) — *Side project*. Generate beautiful, customizable QR codes in JavaScript
- [Blode Experiments](https://blode.co/experiments) — *Side project*. A collection of UI experiments
- [Brighter](https://github.com/mblode/brighter) — *Open source*. macOS brightness utility
- [Claude Code Search](https://github.com/mblode/claude-code-search) — *Open source*. Search through your Claude Code conversation history
- [Colour Mixer](https://blode.co/color-mixer) — *Side project*. Pigment-based colour mixing playground
- [Dither Asteroids](https://blode.co/dither-asteroids) — *Side project*. 1-bit asteroid runner with Obra Dinn–style camera-sphere dither
- [DnD Grid](https://blode.co/dnd-grid) — *Open source*. Draggable and resizable grid layout for React
- [FX](https://blode.co/fx) — *Side project*. Blue noise dithering, ASCII, and LED art for images and video
- [Linktree](https://linktr.ee) — *Product*. Link-in-bio platform for creators
- [Moon Simulator](https://blode.co/moon) — *Side project*. Interactive moon phase simulator
- [Perfect DnD](https://blode.co/perfect-dnd) — *Side project*. Beautiful drag-and-drop UI
- [QRUX](https://blode.co/qrux) — *Side project*. Create and manage QR codes
- [React Vello](https://blode.co/react-vello) — *Open source*. Blazing fast React renderer powered by Vello
- [Resumai](https://blode.co/resumai) — *Side project*. AI-powered resume editor
- [VCMC](https://vcmc.ai) — *Product*. Vibe Coding Micro Community: a WhatsApp group bringing AI-native builders together

## 2024

- [Raycast CyberChef](https://www.raycast.com/mblode/cyberchef) — *Open source*. CyberChef operations in Raycast
- [Touchwood Cabinetry](https://touchwood.com.au) — *Client*. Award-winning custom kitchens and cabinetry

## 2023

- [Blue Noise TypeScript](https://github.com/mblode/blue-noise-typescript) — *Open source*. Blue noise dithering algorithm in TypeScript
- [Fingertip](https://blode.co/case-studies/fingertip) — *Exit*. AI-powered platform helping SMBs run their entire business

## 2022

- [Raycast Google Search](https://www.raycast.com/mblode/google-search) — *Open source*. Google search extension for Raycast (133k installs)
- [Raycast Quick Event](https://www.raycast.com/mblode/quick-event) — *Open source*. Create calendar events with natural language in Raycast

## 2021

- [Blue Noise Rust](https://github.com/mblode/blue-noise-rust) — *Open source*. Black and white image dithering using blue noise
- [me&u](https://www.meandu.com) — *Product*. Mobile ordering platform for hospitality

## 2020

- [Egg Freezing](https://eggfreezing.org.au) — *Client*. Fertility preservation decision-making resource
- [Fertility Choices](https://fertilitychoices.com.au/login) — *Client*. Fertility preservation guidance for cancer patients
- [Light Creative](https://lightcreative.com.au) — *Client*. Strategic brand storytelling and design agency
- [PANDA](https://www.panda.org.au) — *Client*. Mental health support for expecting and new parents
- [VenueSafe](https://blode.co/case-studies/venuesafe) — *Exit*. COVID contact tracing platform serving 1M+ Australians

## 2019

- [Bishops](https://bishops.com.au) — *Client*. Launceston barristers and solicitors
- [Blue Derby](https://ridebluederby.com.au) — *Client*. Tasmania’s mountain bike trails destination
- [Change Overnight](https://changeovernight.co) — *Client*. Charitable hotel in Launceston, Tasmania
- [Crunchlab](https://crunchlab.com.au) — *Client*. Cloud-based accounting automation for businesses
- [Freedom Centre](https://freedomcenter.in) — *Client*. Education and job skills programs in India
- [Michael Christofas](https://michaelchristofas.com.au) — *Client*. Corporate, events, and portraiture photographer
- [Nectaar](https://www.nectaar.com.au) — *Client*. Melbourne residential and commercial interior design
- [OPERA](https://opera.eclc.org.au) — *Client*. Community program combating ageism
- [Plastex](https://www.plastexmatting.com) — *Client*. Industrial and commercial matting manufacturer
- [Rae & Partners](https://raepartners.com.au) — *Client*. Tasmanian full-service law firm
- [TRAM](https://www.tram.org.au) — *Client*. University of Melbourne research impact accelerator
- [VSCode Pretty Formatter](https://marketplace.visualstudio.com/items?itemName=mblode.pretty-formatter) — *Open source*. VS Code extension to format files using Pretty Diff
- [VSCode Zotero](https://marketplace.visualstudio.com/items?itemName=mblode.zotero) — *Open source*. Zotero Better BibTeX citations for VS Code

## 2018

- [Anstie Constructions](https://www.anstieconstructions.com.au) — *Client*. Tasmanian commercial and institutional builder
- [Arise Acres](https://web.archive.org/web/20250416043844/https://ariseacres.com.au/) — *Client*. Property development website
- [Creative Brimbank](https://creativebrimbank.com.au) — *Client*. Arts and cultural programs for Brimbank community
- [Deus Ex Machina](https://deuscustoms.com.au) — *Client*. Motorcycle and surf culture lifestyle brand
- [Heathdale Christian College](https://www.heathdale.vic.edu.au) — *Client*. Christian school from Kinder to Year 12
- [IPD Consulting](https://ipdconsulting.com.au) — *Client*. Tasmanian engineering and project management consulting
- [Jeremy Blode Photography](https://www.jeremyblode.com) — *Client*. Melbourne and Mornington Peninsula wedding photographer
- [Klapsis](https://web.archive.org/web/20260311164037/https://klapsis.com.au/) — *Client*. Building and construction project management
- [Lord of the Fries](https://www.lordofthefries.com.au) — *Client*. Plant-based fast food restaurant chain
- [Our Cradle](https://ourcradle.com.au) — *Client*. Luxury accommodation at Tasmania’s Cradle Mountain
- [Polar Guides](https://polarguides.org) — *Client*. Professional guiding standards for polar environments
- [Shift Property Styling](https://www.shiftpropertystyling.com.au) — *Client*. Property styling mobile app
- [Sprout Forms Tables](https://github.com/mblode/sprout-forms-tables) — *Open source*. Custom tables field for Sprout Forms on Craft 3
- [VSCode Twig Language 2](https://marketplace.visualstudio.com/items?itemName=mblode.twig-language-2) — *Open source*. VS Code extension with snippets, syntax highlighting, and formatting for Twig
- [Your Tea](https://yourtea.com) — *Client*. Traditional Chinese Medicine herbal tea blends

## 2017

- [Little Designer Club](https://web.archive.org/web/20200425005856/https://littledesignerclub.com/) — *Client*. Kids craft and design subscription box (Best New Online Retailer, 2018 ORIAS)
- [SVG Placeholder](https://github.com/mblode/svgplaceholder) — *Open source*. Invisible SVG placeholder plugin for lazy loading in Craft CMS
- [Verbb](https://verbb.io) — *Product*. Craft CMS plugin marketplace
- [VSCode Twig Language](https://marketplace.visualstudio.com/items?itemName=mblode.twig-language) — *Open source*. VS Code extension with snippets and syntax highlighting for Twig

## 2016

- [Expense Check](https://www.expensecheck.com.au) — *Product*. Automated bill switching and expense reduction
- [Grav Theme Medium](https://github.com/mblode/grav-theme-medium) — *Open source*. Medium-inspired theme for Grav CMS

## 2015

- [Burger](https://blode.co/burger) — *Open source*. The minimal hamburger menu with fullscreen navigation (818 GitHub stars)
- [Marx](https://blode.co/marx) — *Open source*. The classless CSS reset (perfect for Communists) (1.7k GitHub stars)

---

# Case studies

> Two companies I co-founded as CTO and built from an empty repo to an acquisition: Fingertip, acquired by Linktree, and VenueSafe, acquired by me&u.

## [Fingertip](https://blode.co/case-studies/fingertip)

*Co-founder & CTO · 2023-2025 · Linktree*

Fingertip reached tens of thousands of small businesses across 100+ countries before Linktree acquired it in 2025.

- **100+ countries** — Small-business footprint
- **Tens of thousands** — SMBs supported
- **2025** — Acquired by Linktree
- **30+ repos** — Product ecosystem

## [VenueSafe](https://blode.co/case-studies/venuesafe)

*Co-founder & CTO · 2020-2021 · me&u / Mr Yum*

Built during the 2020 lockdowns, VenueSafe served more than 1M Australians and was acquired by me&u six months in.

- **1M+** — Australians served
- **6 months** — Idea to acquisition
- **2021** — Acquired by me&u
- **3 repos** — Product stack

---

# Fingertip case study

> How Matthew Blode co-founded and built Fingertip, an AI-powered platform for small businesses, before its acquisition by Linktree.

*Co-founder & CTO · 2023-2025 · Linktree*

Published May 18th, 2026

Fingertip reached tens of thousands of small businesses across 100+ countries before Linktree acquired it in 2025.

## Metrics

- **100+ countries** — Small-business footprint
- **Tens of thousands** — SMBs supported
- **2025** — Acquired by Linktree
- **30+ repos** — Product ecosystem

## Context

Service businesses needed something more useful than a link in bio and less heavy than a website builder. Fingertip became an AI platform for websites, bookings, payments, invoicing, and e-commerce, all of it runnable from a phone.

## What I Built

I built the core TypeScript platform: public page runtime, creator editor, theme system, AI page generation, bookings, invoicing, payments, and deploy infrastructure. It grew to 30+ repos on Next.js, Fastify, Prisma and PostgreSQL, BullMQ workers, Connect RPC, and Stripe.

## Outcome

Tens of thousands of small businesses in more than 100 countries. Linktree acquired Fingertip in 2025 and the team joined to keep building small-business tools for its creators.

## FAQ

### What was Fingertip?

Fingertip was an AI-powered platform that helped small businesses create pages, take bookings, accept payments, send invoices, and run more of their business online.

### Who acquired Fingertip?

Fingertip was acquired by Linktree in 2025, and the team joined Linktree to work on creator and small-business tools.

### What was Matthew Blode's role at Fingertip?

Matthew Blode was co-founder and CTO, responsible for the core product and engineering platform.

## Sources

- [Fingertip joins Linktree](https://www.businessnewsaustralia.com/articles/linktree-acquires-emerging-melbourne-based-competitor-fingertip.html)
- [Forbes profile](https://www.forbes.com/profile/fingertip/)

---

# VenueSafe case study

> How Matthew Blode co-founded and built VenueSafe, a COVID contact-tracing platform that served more than 1M Australians and was acquired by me&u.

*Co-founder & CTO · 2020-2021 · me&u / Mr Yum*

Published May 18th, 2026

Built during the 2020 lockdowns, VenueSafe served more than 1M Australians and was acquired by me&u six months in.

## Metrics

- **1M+** — Australians served
- **6 months** — Idea to acquisition
- **2021** — Acquired by me&u
- **3 repos** — Product stack

## Context

Venues in 2020 needed a practical way to collect visitor details and stay open under public-health rules. It had to be fast, reliable, and obvious to operators and customers with no patience for software.

## What I Built

I built the whole stack: a Craft and Vue marketing site, an Express and MariaDB backend, a React client, Stripe billing, and analytics dashboards. Ship the useful version, then handle the edge cases as they arrive.

## Outcome

More than 1M Australians used VenueSafe, and me&u acquired it six months after the idea. I joined as a senior engineer, helped scale the platform to 15M+ users, and supported the US launch from Austin.

## FAQ

### What was VenueSafe?

VenueSafe was a COVID contact-tracing platform for Australian venues and hospitality businesses.

### Who acquired VenueSafe?

VenueSafe was acquired by me&u, formerly Mr Yum, after going from idea to acquisition in six months.

### What happened after the acquisition?

Matthew Blode joined me&u as a senior software engineer, helped scale the platform to 15M+ users globally, and supported the US expansion from Austin, Texas.

## Sources

- [VenueSafe archive](https://venuesafe.netlify.app/)
- [About Matthew Blode](https://blode.co/about)
- [Projects](https://blode.co/projects)

---

# Writing

# Seventy people in a group chat

> How VCMC grew from 3 people in a WhatsApp group to 70+ members, and the product thinking behind it: no algorithms, no feeds, just builders talking.

*Product & craft*

Published Mar 26th, 2026

Luca Bonelli started a WhatsApp group and pulled Ryan Hendler and me in as co-founders. We wanted to share how we actually build day to day, not track AI headlines. It grew to 70 people and thousands of messages. Then Greg Brockman tweeted about us.

Based on the growth of the Vibe Coding Micro Community (VCMC) from 2025-2026.

Most communities die because nobody treats them like one. Spin up a Slack, invite 200 people, watch engagement flatline in two weeks.

[VCMC](https://vcmc.ai) had a constraint instead of a plan. I wanted somewhere to share what actually worked in my builds, and Luca and Ryan wanted the same. Not AI news, not fundraising takes, not AGI timelines. Workflows, prompts, tools, failures, shortcuts. The stuff that saves you three hours on a Tuesday. Share what works, not what sounds impressive, and the signal stays high.

## The cold start problem

Nobody wants to post in an empty room, or be first to share something vulnerable in front of strangers.

So the three of us were the first users, and I used the product the way I wanted everyone else to: real builds, real questions, real failures, every day. New people landed in a live conversation between builders who weren’t performing, so it felt safe to contribute. One shares a prompt that halved their deploy time, another a Claude Code workflow that broke their staging. Both valuable because both are true.

We grew to 70 people and thousands of messages with no marketing. I pushed for a hard cap at 100. Every invite was personal: someone we’d worked with, met at an event, or whose work we respected.

## People in a room

The real test was the meetup. Our “Shipping with AI” event drew around 56 people, over a 50-person cap. Founders, operators, and engineers, most of them already active in the group.

Then Greg Brockman tweeted about us, and the thing clearly had its own gravity.

Meetups are a feature, not the product. I treat the daily chat as the thing that builds the trust. The event is where it shows up in person.

Communities also die when they turn into announcement channels. Someone posts a link, nobody responds, and soon the only people posting treat the group as distribution.

I designed against that with Luca and Ryan: conversations, not broadcasts. Share a workflow and three people say how they’d do it differently. Hit a wall and two offer to pair within the hour. I come back because my contribution matters and I get something useful back. Same loop for everyone else.

## The brand page

We built [vcmc.ai](https://vcmc.ai) with a proper brand page “in case the New York Times picks up on this group.” Sounds like a joke, but I treated it as serious product work. Website, visual identity, positioning, all of it existed before the Greg Brockman moment. When attention arrived, we had somewhere to point people, and looked like we’d been doing this for years, not months.

Community building is [product building](/writing/you-can-sense-carelessness) with a different input: people and conversations instead of code and design. Same principles. Solve the cold start, design the loop, curate ruthlessly, ship and iterate.

The group chat is still the core product. No algorithms, no feeds, no content strategy. Just builders talking to builders, and that turned out to be enough.

## Related

- [About Matthew Blode](https://blode.co/about)
- [Speaking](https://blode.co/speaking)

---

# Ship fast or die

> You do not win by being right, you win by finding out faster. On team shape, AI feedback loops, and shipping at 80 percent.

*Shipping & execution*

Published Jun 28th, 2026

Two startups, two acquisitions, one lesson: speed is a small team's biggest advantage. Not reckless. Think to 80 percent, ship, watch, and close the loop.

Based on my January 2026 Startmate mentor session on Claude Code and shipping fast.

I ran a Startmate mentor session in January on Claude Code and shipping fast. I opened with the line I repeat to myself: you don’t win by being right, you win by finding out faster.

Most teams treat being right upfront as the goal. Weeks scoping, debating architecture, polishing Figma, aligning stakeholders. By the time they ship, the market has moved or nobody wanted it.

At [Fingertip](/case-studies/fingertip) and [VenueSafe](/case-studies/venuesafe) we shipped early, watched real users, and iterated hard. Speed was survival.

## The shape of a fast team

Charlie Munger: invert, always invert. Don’t ask how to ship faster. Ask what’s making you slow.

For us it was usually one of a few things, none of them technical. Work blocked waiting on approval, meetings that existed out of habit, fear of shipping something imperfect, vague ownership where nobody owned the outcome, optimising systems that didn’t need to scale yet, too many projects and too much context switching. You fix that by changing the shape of the team, not by adding process.

The fastest teams I’ve been on shared a few things. One owner end to end, rather than a chain of handoffs between product, design, and engineering. Fewer meetings. Small, because communication overhead scales quadratically. A clear definition of done, or everything sits at 90 percent forever. And the builder close to the user, because secondhand feedback loses texture.

## The Claude Code loop

AI changed the speed equation for me, not because it writes perfect code but because it compresses the feedback loop. Claude Code writes, I review, I give feedback, it iterates. Dozens of times in an hour.

When I start something new I pick one tiny behaviour, not a feature but a single user action, and ask for a plan before anything gets written. When something breaks I paste the error, the context, and the intent. Then I show the result to one user, fix the first friction point, and go again.

It builds in layers, which matches how I think about product anyway. Start with a Wizard of Oz where nothing behind the surface is real. Then a low-fi UI in code, the data model, the API, the back end, and front-end polish last. Each layer ships and gets tested on its own.

The loop only runs that fast with the right scaffolding around it. TypeScript gives it types to reason about. Ultracite keeps the formatting and linting consistent. Git lets you experiment and roll back. Logs give it context when it’s debugging.

If AI finds a change hard to make in your codebase, take the hint. The coupling slowing it down is slowing your humans down too.

## Shipping at 80 percent

You don’t need full confidence to ship. Just enough to know you’re pointed roughly the right way, then real signal from real users.

The last 20 percent of certainty is the most expensive and the least useful. Teams burn weeks on edge cases that never happen.

Speed without safety is reckless, but safety doesn’t have to mean slow. I ship small changes straight to main and use pull requests for visibility rather than as gates. If something breaks, roll it back. Raise the quality bar only where mistakes are costly, because every standard costs a little speed and that cost compounds.

You do need to see what’s happening once you’re moving that fast. Session replay, analytics, logs, alerts. Without them you’re shipping fast and blind, which is worse than shipping slow.

The barrier to shipping a real product keeps falling, and AI handles more of the specialised work every month. Putting something in front of users before it’s ready still feels wrong.

It’s also the only way I’ve ever found out anything that mattered.

## Related

- [Method (manifesto)](https://blode.co/method)
- [Speaking](https://blode.co/speaking)
- [VenueSafe case study](https://blode.co/case-studies/venuesafe)
- [Fingertip case study](https://blode.co/case-studies/fingertip)
- [About Matthew Blode](https://blode.co/about)

---

# Skills are the new packages

> Claude Code skills and plugins are markdown files you install like npm packages: small, focused, composable units of capability, and the ecosystem is forming.

*AI-assisted engineering*

Published Feb 23rd, 2026

I made a skill that creates skills, then allmd to turn the universe into a skill. Then the pattern clicked: agent skills are composable units of capability the way npm packages are composable units of code.

Based on building agent skills and allmd in early 2026.

An agent skill is a markdown file: instructions in plain language, saved as `.md`, and your agent knows how to do something new. No API, no SDK, no build step.

Distribution is the interesting part. `npx skills add mblode/agent-skills`, one command, and it’s in your project. That’s `npm install` for agent capabilities.

I’ve built skills for Claude Code since late 2025, pulling out any instruction I repeat across projects: deployment patterns, review checklists, animation guidelines, into shareable files.

## The meta moment

Then I built [agent-skills-creator](https://github.com/mblode/agent-skills): a skill that creates skills. Then [allmd](/allmd), which turns any URL, PDF, video or audio into clean markdown, tagline “turn the whole universe into a skill.”

Each felt standalone. They’re one idea: build the ecosystem that makes agent capabilities shareable.

## The npm analogy

In 2010, npm was a weird idea. Why install `left-pad` instead of writing four lines yourself? Because small, focused units compound into capability no single developer could build alone.

Skills are on the same trajectory. One for database migrations, one for accessibility audits, one for performance profiling, and your agent is competent across domains you aren’t expert in.

The early npm ecosystem was messy and exciting. Skills are that now: no dominant registry, best practices still forming.

MCPs are the other half. They’re infrastructure for agents rather than humans: natural language APIs so bots can run commands. Stainless auto-generates SDKs and MCPs from OpenAPI specs, and that layer is standardising fast.

Skills sit on top. The MCP provides the capability, the skill provides the judgment.

## The tension

What I keep wrestling with: even skills for CLI tools are mostly overkill, because Claude Code can figure it out. Give it a well-documented tool and it reads the docs and uses it correctly.

So why do they matter? Quality and consistency. The gap between “the agent can do it” and “the agent does it the way I want” is real, and skills close it.

Maybe skills are transitional: essential now, obsolete later. A bet worth making, even if the agents eventually eat it all.

## Related

- [Ship fast or die](https://blode.co/writing/ship-fast-or-die)
- [Projects](https://blode.co/projects)

---

# Your statics do not interpolate and never will

> Turn separately drawn static weights into one variable font: why interpolation fails, how to fix incompatible glyphs, and the free CLI that does the merge.

*Product & craft*

Published Jul 28th, 2026

Going from a variable font to statics is one command in a loop. Going the other way means making hundreds of glyphs structurally identical across every weight before anything can merge, and almost everything written about variable fonts answers the easy direction.

Based on building static-to-variable, an open-source CLI for converting static font families into variable fonts.

Converting a font counts as modifying it, and most commercial licences forbid modification outright. Open licences like the SIL OFL, which covers most of Google Fonts, allow it. Your own fonts are fine.

That’s the first thing to check, because the pipeline works just as well on a font you have no right to convert.

A variable font stores one set of outlines plus deltas that move each point. For that to work, every weight needs the same points, in the same order, with the same winding, starting in the same place. I built [static-to-variable](/static-to-variable) to get there from a folder of separately drawn weights.

Fonts drawn as independent statics have no reason to satisfy any of that, and mostly don’t. The designer drew a Bold. They didn’t draw a Bold whose e has the same node count as the Regular’s e.

## The hard direction

The merge was never the problem. fontmake does the merge. What takes the time is making 700-odd glyphs structurally identical across weights without changing how any of them look.

Some of what breaks is obvious once you see it. A glyph exists in the Light and not in the Black. An outer contour winds clockwise in one master and counter-clockwise in another. Both are cheap to detect and cheap to fix.

The ones that cost me days looked fine. B has two counters, and at ExtraBlack they swap places. Same contour count, same point counts, same winding, so every naive structural check passes. Then it interpolates one counter into the other and the letter collapses halfway along the axis.

Topology changes too. A ¢ loses a contour at heavy weights because the counter fills in, so the lighter masters need a near-zero synthetic ring for the hole to grow out of rather than appear from nowhere.

## Four thousand rotations

The worst class is start points, because a wrong one is invisible to structural comparison. An o is all curves from any starting node, so the operation sequence reads the same no matter where the contour begins. Compare the sequences and nothing looks wrong. Interpolate it and node maps to the wrong node.

One 8-weight family needed 4,242 start-point rotations in the roman alone. That is not a handful of broken glyphs. That is the normal condition of independently drawn statics.

Where node counts disagree the contour has to be resampled, anchored at the corners so the shape doesn’t drift. Only the contours that disagree get touched, because resampling is lossy and the less of it the better.

Before any repair, that family reported 27 problem glyphs and 89 issues across about 750 glyphs. Which sounds manageable until you notice two things. A single broken glyph fails the whole build, and the 4,242 rotations had already happened silently before the report was generated.

After the rebuild pass, the same family reported 755 glyphs taken straight from the donors and 641 reconstructed. Nearly half the glyph set needed structural work to produce a font that, visually, is identical to what the designer drew.

## A frozen cent sign

Every reconstruction has to be checked, because a bad one is worse than no reconstruction at all. Structural sameness isn’t enough on its own, and neither is area: a twist that folds a contour through itself conserves ink.

The threshold I landed on is 10% area deviation. Good reconstructions come in under 6% and genuinely deformed ones sit above 20%, with almost nothing in between.

A glyph that fails every gate gets frozen to the default master’s outline. It renders correctly at every weight, it just doesn’t vary. Turns out that’s the tool working rather than the tool failing. A frozen ¢ is fine. A ¢ that folds inside out at 550 is not.

The loop around all of it runs up to 40 times: build, instantiate the font at every master and every midpoint, freeze whatever collapses, rebuild, until it converges.

Then you open it in Figma, where variables bind named styles rather than axes, so a variable font is effectively a static font with extra steps.

It took a week to get a cent sign to sit still.

## Related

- [Static to Variable](https://blode.co/static-to-variable)
- [Glide](https://blode.co/glide)
- [You don't have to make AI slop](https://blode.co/writing/you-dont-have-to-make-ai-slop)
- [Projects](https://blode.co/projects)

---

# You can sense carelessness

> AI raises the floor but flattens the result. Users sense carelessness before they can name it, so taste and editing still decide quality.

*Product & craft*

Published Feb 2nd, 2026

The floor for shipping something competent has never been lower. The work that decides quality moved to editing, and editing is where most teams stop.

Based on my February 2026 Next.js Melbourne talk about care, craft, and product quality.

I can tell when a product was shipped without a second pass. The page is slow to settle, the copy is vague, a form makes me guess. I’m reacting to the experience, not inspecting the source.

AI makes competent output fast. It also makes it easy to stop too early and ship the first plausible version: something that works but feels generic. The closer a product sits to the user, the more obvious the careless details become. I’ve shipped enough of both kinds to feel the difference in my own work.

## The editing pass

I cut the awkward steps, rewrite the vague copy, tighten the motion, simplify the hierarchy. AI is great at momentum. It’s less reliable at deciding what should matter most. That call is still mine.

I’ve made this pass on every product that lasted. The first version gets you in the room. The second and third versions are what people remember.

## A thousand small iterations

At [Fingertip](/case-studies/fingertip), care was deliberate improvement after the MVP shipped. I kept coming back to the same surfaces. The page editor went from a static list to a drag-and-drop grid. The default share preview went from the Fingertip logo to a live screenshot of the user’s page. Stock shadcn became a considered system with central icons, custom typography, taller inputs and a curated colour palette. Each change was small.

Together they changed the whole thing. I could feel it when I opened the product myself, before any metric moved.

![Page editor before: a static list of sections](/writing/you-can-sense-carelessness/design-before.png)

![Page editor after: a drag-and-drop grid with visual hierarchy](/writing/you-can-sense-carelessness/design-after.png)

![Social share before: generic Fingertip logo](/writing/you-can-sense-carelessness/og-before.png)

![Social share after: live profile screenshot](/writing/you-can-sense-carelessness/og-after.jpeg)

![Form inputs before: default shadcn styling](/writing/you-can-sense-carelessness/outcome-before.jpg)

![Form inputs after: polished event settings with structured hierarchy](/writing/you-can-sense-carelessness/outcome-after.png)

## Between product and design

My work sits between product, engineering, and design. [VenueSafe](/case-studies/venuesafe) under time pressure, Fingertip growing into a broader SMB platform, LinkApps at [Linktree](https://linktr.ee): the question stays the same. Does this feel right to the user?

At VenueSafe I was shipping under a clock, and still the forms and flows had to feel intentional or venues wouldn’t trust them. At Linktree the surface area was bigger, but the same habit applied: I kept editing until the careless edges were gone. Nobody thanks me for that pass. They just stop feeling like something is off.

I stop when it feels deliberate. Past that, I’m usually decorating.

## Related

- [Method (manifesto)](https://blode.co/method)
- [Speaking](https://blode.co/speaking)
- [Fingertip case study](https://blode.co/case-studies/fingertip)
- [About Matthew Blode](https://blode.co/about)

---

# You don't have to make AI slop

> What AI slop is and how to avoid it: better fonts, better icons, stolen taste, and relentless editing on your vibe-coded UIs.

*AI-assisted engineering*

Published Apr 30th, 2026

Everyone can tell when you vibe coded your app. Default shadcn, Lucide icons, Inter, glowing gradient borders. It screams that you shipped the first thing the prompt gave you. It doesn't have to be that way.

Based on my January 2026 Melbourne builder meetup talk about using AI tools without sacrificing product quality.

I build with shadcn/ui, Tailwind, Motion, React, and Ultracite. So does everyone else, on the same defaults. The taste I layer on top is the advantage.

## Stealing from tasteful products

I find a product with an irrationally tasteful UI and copy it. Right click, inspect, rip off elements until my version is identical. Screen record the interactions and step through them frame by frame. When the motion is doing something I can’t see, I point AI at their minified JS bundle to un-minify it and read the animation logic.

The ones worth stealing from are the calm products rather than the feature-stuffed ones: Zed Editor, OpenAI, Mintlify, Raycast, Linear, Things 3, Family Crypto Wallet, ElevenLabs. They show only what matters and their interactions feel precise.

I’m training my eye on the gold standard, then pointing it at my own product.

## Icons, type, and motion

AI goes rogue on decoration: glowing borders, gradients, illustrations, badges, tooltips, seventeen things nobody asked for. I delete most of it. If a paragraph can be a sentence, I make it a sentence. If a sentence can be a label, I make it a label. If a label can be removed, I remove it.

What’s left is where the defaults show. Lucide is fine for prototyping but too light to carry a polished product, so I use Central: considered strokes, tighter proportions. People feel icon quality without being able to name it. Default Google Fonts are typographic stock photography, and Inter on everything is the same tell. Everyone recognises them, and they say nobody made a choice. I find a typeface that suits the product on Typewolf and track it down, because plenty of great fonts live on GitHub. If the family ships as separate static weights, I [convert it into one variable font](/writing/static-fonts-to-one-variable-font) and load a single file.

Typography is one of the highest-impact things I can change, and engineering-led teams almost always underinvest in it.

Motion is the other one. motion.dev for the library, animations.dev and devouringdetails.com for the eye. I keep most transitions between 0.2 and 0.3 seconds, prefer ease-out, animate transforms and opacity, respect prefers-reduced-motion. They should feel responsive, not try to impress.

## The last ten percent

Then there are the details nobody asks for, where I used to stop. A dark mode-aware SVG favicon that adapts to the system. Dynamic OG images so every page has a proper social preview. Polished hover and active states on every interactive element. Proper SEO metadata per page: title, description, canonical URL. Keyboard shortcuts for power users.

None are hard alone. Together they’ve separated my weekend projects from the ones that feel cared for.

After that comes the five hundred small improvements that have no list. Sand it, feel the grain, get a splinter, sand again.

## Related

- [You can sense carelessness](https://blode.co/writing/you-can-sense-carelessness)
- [Fingertip case study](https://blode.co/case-studies/fingertip)
- [Projects](https://blode.co/projects)

---

# Your career compounds

> Why the biggest career advantages come from stacking high-learning environments, not individual wins. The decisions behind VenueSafe, Fingertip, and Linktree.

*Founding & investing*

Published Jun 16th, 2026

I started working the day after high school. No plan, just a want to learn. Every role since got picked the same way: learning velocity over comfort. Careers compound like interest, but only if you keep reinvesting.

Based on LinkedIn posts about career compounding and the Fingertip acquisition story from 2025.

I walked into [Expense Check](https://www.expensecheck.com.au) and started building software the day after I finished high school. No plan, I just wanted to be somewhere that expected output from day one. Every role since got picked the same way: whichever one I’d learn the most in, the fastest.

## Urgency and scale

[VenueSafe](/case-studies/venuesafe) went from idea to acquired by [me&u](https://www.meandu.com) in six months. It was COVID contact tracing, so it was urgent, and urgency strips out everything that slows a team down. No planning cycles, no alignment meetings, no architecture debates. We built, shipped, watched, fixed, every day. You don’t learn to move that fast from a project manager’s deadline. You learn it when real people need a real thing and the clock isn’t negotiable.

After me&u acquired VenueSafe I scaled mobile ordering across their platform: 15 million users across multiple countries, plus the US expansion out of Austin. Every assumption I had got stress-tested. A query that’s fine with a thousand users falls over at a million. Turns out elegance isn’t clever code. It’s boring systems that don’t wake you up at 2am.

## Platform thinking

Then I co-founded [Fingertip](/case-studies/fingertip) with Olly Hoffman, alongside Gabby and Hezi Leibovich: websites, bookings, and payments for small businesses across more than 100 countries. VenueSafe and me&u were the prerequisites. Without the urgency we’d have over-planned it. Without the scale instinct we’d have built something that broke the moment it grew. Fingertip needed both, plus a way of thinking in platforms instead of products. A product solves one problem well. A platform sets up the conditions for a lot of problems to get solved, which sounds abstract right up until you’re making architecture calls that constrain the next three years.

When [Linktree](https://linktr.ee) acquired Fingertip, people treated the acquisition as the goal. It wasn’t. It was a byproduct of the skills, the team, and the product all reaching a point where they were worth more at a bigger scale. Now I’m Co-Head of LinkApps at Linktree, building for 70 million creators. The urgency from VenueSafe means I don’t waste cycles. The scale instinct from me&u means I build things that hold up. The platform thinking from Fingertip means I see how one feature connects to the rest of the ecosystem.

## The compounding part

One skill carried across all of it: clarity. Knowing the user problem, the first useful version, and what to ignore for now. The environments changed completely. That never did, and zero to one always came back to it.

Every role where you coast is a year of zero returns. Every role where you’re a little overwhelmed is a year of high-interest deposits. Returns from urgency stack on returns from scale, which stack on returns from platform ambition. You can’t buy it or shortcut it, you earn it by showing up to hard environments for years.

## Related

- [About Matthew Blode](https://blode.co/about)
- [VenueSafe case study](https://blode.co/case-studies/venuesafe)
- [Fingertip case study](https://blode.co/case-studies/fingertip)
- [Speaking](https://blode.co/speaking)

---

## Agent discovery

- Sitemap: https://blode.co/sitemap.xml
- llms.txt: https://blode.co/llms.txt
- llms-full.txt: https://blode.co/llms-full.txt
- RSS feed: https://blode.co/feed.xml
- API catalog: https://blode.co/.well-known/api-catalog
- Skills index: https://blode.co/.well-known/agent-skills/index.json
- MCP server: https://blode.co/mcp
- MCP discovery: https://blode.co/.well-known/mcp.json
- MCP server card: https://blode.co/.well-known/mcp/server-card.json
- Agent auth policy: https://blode.co/auth.md

Any page on this site returns markdown when requested with `Accept: text/markdown` or by appending `.md` to the URL.
