Sign in

Mark Tomlinson

@marktomlinson.dev
570 followers 1.1K following 503 posts

Web dev. Building tools for better design-development workflows. Currently building @sugarcube.sh There is another world, but it's in this one. EN•FR•DE 🌐 marktomlinson.dev 🍃 loanwords.leaflet.pub

PostsRepliesMedia
Mark Tomlinson @marktomlinson.dev · 17/09/2026
🎵 What use eyesight if it should melt? What use memory covered in estuary silt?
Landscape of Tidal River, Wilsons Prom. The brackish water of the estuary is visible through some native Australian bushland.
000
Mark Tomlinson @marktomlinson.dev · 10/09/2026
Agnes Falls >>>
Agnes Falls (near Toora) as seen from one of the viewing platforms. The river banks are studded with eucalypts. The still water from the Agnes River is in the background, contrasted with the cascading water over ancient limestone in the foreground.
010
Mark Tomlinson @marktomlinson.dev · 22/08/2026
Designing in the browser (and visually managing your DS more broadly) with @sugarcube.sh is getting closer and closer. Fun thing to know: the panel and controls are defined in your config. Think of how dat gui or lil gui work with bindings. Similar principle.
4342
Mark Tomlinson @marktomlinson.dev · 21/07/2026
Using @sugarcube.sh to lint @sugarcube.sh 🫣
101
Mark Tomlinson @marktomlinson.dev · 13/07/2026
I know it's lame but I've given everything I have to this project and I literally can't believe it just hit 11k downloads. Took two months to hit 1k. Then another two months to hit 11k. Even if it's half crawlers, my mind is blown.
@sugarcube-sh/core, npm v0.2.13, downloads 11k
3341
Mark Tomlinson @marktomlinson.dev · 15/06/2026
Can't wait til I finish some of these new features. They've been a while in the works. Especially excited about commands like this one that will help you understand your token graph better. And (eventually) make changes to consumers directly.
042
Mark Tomlinson @marktomlinson.dev · 14/06/2026
This weekend was better. Back to building (although I'm still meant to be writing 😩).
080
Mark Tomlinson @marktomlinson.dev · 05/05/2026
Utopia.fyi but in your tokens indeed.
2273
Mark Tomlinson @marktomlinson.dev · 24/04/2026
I know it's totally unimpressive and all bots or whatever but that 1k still means a lot to me. Thanks to everyone who has shown interest in, or tried out, @sugarcube.sh so far. I'm working on some demos/educational material as well as a roadmap and some exciting new features at the moment.
Screenshot showing @sugarcube-sh/core package having reached 1k downloads.
1304
Mark Tomlinson @marktomlinson.dev · 17/04/2026
Got sugarcube running in the browser because...well, it was fun. And also because it opens up a whole bunch of stuff I'm working on! (Excuse the self-congratulatory emojis - I was v excited. Would remove them and record the video again but I'm tired).
2191
Mark Tomlinson @marktomlinson.dev · 08/04/2026
Really interesting article. The mention of lending records got me excited because I've actually been prototyping an atproto riff on the old card-in-the-back-of-a-library-book idea the past few months! The article obviously goes in different directions and further but exciting to see some convergence
Screenshot of a very early version of the Libcard home screen. Vintage-style borrowing record cards are displayed in a grid.
220
Mark Tomlinson @marktomlinson.dev · 06/04/2026
So rather than just transforming tokens into outputs, it's about turning them into a working frontend system. It also eventually allows devs/designers to do things like this 😎
120
Mark Tomlinson @marktomlinson.dev · 04/04/2026
Instead of painting easter eggs I'm painting a website.
2110
Mark Tomlinson @marktomlinson.dev · 20/03/2026
Friday arvo here so experimenting with something delicious. Basically, utopia.fyi but in your tokens.
JSON showing a proposed sugarcube scale extension configuration. Defines an exponential type scale with viewport bounds (320-1440px), base size (1rem to 1.125rem), ratio (1.2 to 1.25), and step range (-2 to +10). The scale would generate fluid CSS clamp values at build time.
1100
Mark Tomlinson @marktomlinson.dev · 23/02/2026
@taurean.bryant.land Cascade layers, getcha cascade layers here
Screenshot of a GitHub pull request titled "feat: cascade layers".
221
Mark Tomlinson @marktomlinson.dev · 03/02/2026
Trying to write website copy for it now. Wondering if this captures the above and/or is clear?
No runtime, no lock-in. Sugarcube outputs plain CSS — no runtime dependency in your bundle. Use the CLI directly, or add the Vite plugin for automatic regeneration during dev.
110
Mark Tomlinson @marktomlinson.dev · 30/01/2026
Book cover of the Penguin Classics title, The Metaphysical Poets.
110
Mark Tomlinson @marktomlinson.dev · 28/01/2026
Dang, almost forgot my favourite part: it supports unocss presets so you're not limited to token-based utilities! I mean, I personally urge restraint when it comes to utility classes, but unocss presets are super restrainable. Massive thanks to @unocss.dev. Please support them!
Screenshot of a vite plugins config that shows the sugarcube vite plugin accepting a unocss preset (in this case, the presetWind3 plugin with preflights disabled).
130
Mark Tomlinson @marktomlinson.dev · 28/01/2026
Here's a dumb video of me coding. No, that's not tailwind. Those are utilities generated straight from your @designtokens.org design tokens. Again, only the ones you actually use will be included in your build.
391
Mark Tomlinson @marktomlinson.dev · 28/01/2026
I might be wrong but I have a feeling sugarcube is the first token translation tool that generates utilities just-in-time (i.e. only the classes you end up using in your markup). It also has a pretty nice config interface, though I would say that 😅
Screenshot of part of an example sugarcube config file, including part of an example utilities config.
140
Mark Tomlinson @marktomlinson.dev · 22/01/2026
Designing directly in the browser with design tokens is proving quite a fun workflow (even if my design skills remain...fledgling).
3200
Mark Tomlinson @marktomlinson.dev · 30/10/2025
It's not every day you see someone else get THIS excited about the Design Tokens Specification. To celebrate, here's a screenshot of some WIP landing page copy I'm working on for sugarcube - a toolkit for building DTCG-token-powered websites. Actual nice-looking website coming soon 😅
Design system rigour, right out of the box.
Build on solid foundations. Token-driven CSS and components — wired up and ready to go.

npx make-sugarcube init

Standards-based, token-driven development
Design decisions, made programmable
Design tokens represent design decisions as structured data — a single source of truth for color, type, spacing, and more. Sugarcube transforms those tokens into CSS variables and utilities, helping your UI stay consistent from the start.

- Built on the DTCG Design Token Specification for maximum interoperability and future-proofing.
- Powerful theming capabilities. Change your whole brand with a few dozen token updates.
- No tokens? No problem. We'll detect that and add a complete starter kit on initialization.
1254
Mark Tomlinson @marktomlinson.dev · 20/10/2025
Writing the documentation for sugarcube has been...a struggle. Managed to get most of the utility class docs written up this weekend, though. Just another million topics to cover and I'll be done.
Sugarcube has first-class support for utility classes. You can generate utilities directly from your design tokens. You also have the option to integrate UnoCSS presets for access to a wide range of non-token-based classes.
150
Mark Tomlinson @marktomlinson.dev · 26/09/2025
One of the final features I'm working on before releasing the sugarcube alpha out into the wild is what I'm calling 'mixes'. You'll probably (hopefully) get it just by looking at it:
Screenshot of part of a sugarcube config file showing the current experimental mixes API. The mixes config takes an array of mixes. Each mix defines a base design token to mix from, a token or CSS color to mix with, and an outputs objects that defines virtual token paths such as color.text.quiet and a percentage value for the mix
130
Mark Tomlinson @marktomlinson.dev · 13/08/2025
Happy with the way the new CLI is coming along. Instead of overwhelming users with a bajillion prompts, it auto detects and follows the recommended path. Pass flags like `--skip plugin` or `--styles-dir custom-dir` to take back control etc.
030
Mark Tomlinson @marktomlinson.dev · 15/07/2025
Shadcn's great and all but give me clean markup and design tokens feeding well-structured CSS any day
Screenshot of a text editor displaying two files in split-pane view. On the left side is a react select component with minimal markup, on the right side is the same react component but with a great many tailwindcss classes. Over the file on the left is a banner that reads "sugarcube react components". Over the file on the right is a banner that reads "shadcn react components".
150
Mark Tomlinson @marktomlinson.dev · 15/07/2025
Design token driven development is here! Increases the solidity of your frontend foundations by an estimated 240% 😋
161
Mark Tomlinson @marktomlinson.dev · 23/04/2025
Still room for improvement, but almost happy with the level of detail I'm able to give users about validation errors in their design tokens
140
Mark Tomlinson @marktomlinson.dev · 15/04/2025
🚀 A very small peek at something I've been working on. Much much more to come in the coming weeks. Cannot wait to share!!
0120
Mark Tomlinson @marktomlinson.dev · 28/03/2025
Waiting for Mark S to complete Cold Harbor like
Screenshot of the Cursor IDE trying to index a codebase but the progress bar is stuck at 98.7%
010
Mark Tomlinson @marktomlinson.dev · 23/01/2025
If you're going to choose one domain management tool for all your never-to-be-completed side projects, make it porkbun 😭
Screenshot of a porkbun account dashboard page, displaying multiple domains
040