Hamilton Ulmer

Hamilton Ulmer

@hamilton.bsky.social

๐Ÿ‘๏ธ๐Ÿ“ˆ๐Ÿ‘๏ธ design & eng @ MotherDuck. UI, statistics, databases. Ex Rill Data, Mozilla

3.2K followers338 following328 posts

Pinned

So thrilled to announce we've released Instant SQL in both the MotherDuck and DuckDB UIs! It's a new interaction pattern for writing SQL queries that provides realtime result previews and deep query inspection & debugging. Bye bye run button ๐Ÿ‘‹ Truly, literally only possible with DuckDB

made a little pirate map spinner for something I'm working on. Just plain SVG + React just an Euler spiral as f(t), superposition of waves for speed & cup modeling w/ addl waveshaping for other paper quirks Surprisingly performant on old computers!

finally revamped my website ~ same fonts, same overall design, but more about where I currently am and what I've done. & more diagrams & videos First time ever I'm talking about my previous music career on this platform, so I added a page about that too. after all, why not

Dives already support near-instant crossfiltering on millions/billions of rows. We're now working on making it a native part of the experience with some new primitives low latency makes whole new classes of interactions possible!

โŒฏโŒฒ Introducing Flights, a new agent-native data pipeline tool Author in python / SQL, trigger in SQL + MCP + on a schedule. I use it for data pipelines, but also for agent workflows, classical ML tasks, screenshotting Dives and posting to Slack, you name it. Give it a spin in Motherduck!

View full thread

โŒฏโŒฒ Introducing Flights, a new agent-native data pipeline tool Author in python / SQL, trigger in SQL + MCP + on a schedule. I use it for data pipelines, but also for agent workflows, classical ML tasks, screenshotting Dives and posting to Slack, you name it. Give it a spin in Motherduck!

Flights are configurable in a million ways, since it just takes SQL to create, edit, run, and inspect them. As a software person of course i use version control, but it is VERY easy to vibe a data pipeline in Claude. Usually the code is the easy part! The tedium of scheduling, etc. is the bummer

I've been reflecting on this post. If people are actually getting 10x or 100x gains, this indicates that per-developer productivity gains from AI don't convert to revenue very well. So either people are working on the "wrong thing" (very likely) or the gains are more modest (also likely)

Happy National Paper Airplane Day! I made a little parametric mini-app to figure out good angles for a paper airplane hero. Another fun 3d svg modeling task. Favorite parts are the particle occlusion and ribbon trail I promise this content will make sense soon

I've been using Claude artifacts to create parametric systems for icon development. While models are only sort-of good at drawing svg, they're obviously quite good at getting basic math right. Especially helpful for getting 16x16 footprints to feel nice usually I can do the rest

iterating on a fun little isometric paper airplane loading hero for a new feature I'm excited about. Thinking about how to mitigate the ink trap problem while keeping the simplicity of three shapes

This break, I've been building a constraint-based implementation of a new time series axis component. The goal is to make it nice & comprehensible for any size / time range It's a nice pattern: React part of it is simple, the TS part is complex / well-tested, and the dev UI uses the test cases

Continuing the semantic code-folding design exploration. Instead of showing the typical "..." button, it shows an LLM summary of what's folded. Like "calculate 30-day revenue" for a collapsed CTE. Not sure if this would be useful yet!

I like the โ€œretvrn to terminalsโ€ discourse around UIs, but imo it misses why old terminal programs were (or were not) good. So itโ€™s a boring aesthetic argument and not a functional one based on how humans consume information.

only took me two years before I needed to do my own safety triangle implementation this works great for our upcoming "quick look" editor features aside from function docs, what other quick look features would you like in the DuckDB UI?

This is tomorrow! lu.ma/xakrgxqu

lu.maStay in Flow with MotherDuck's Instant SQL - May 21 ยท LumaImagine writing SQL queries that give you instant visual feedback, transforming your entire data exploration experience. See how MotherDuck's Instant SQLโ€ฆ
Hamilton Ulmer@hamilton.bsky.social

I'm going to be talking online about the "why" and "how" of Instant SQL, our new ad hoc querying experience that enables keystroke-fast previews of results & deeper introspection into your query's data flow. Weds. May 21st, 9:30am PDT link in reply!

I'm going to be talking online about the "why" and "how" of Instant SQL, our new ad hoc querying experience that enables keystroke-fast previews of results & deeper introspection into your query's data flow. Weds. May 21st, 9:30am PDT link in reply!

So thrilled to announce we've released Instant SQL in both the MotherDuck and DuckDB UIs! It's a new interaction pattern for writing SQL queries that provides realtime result previews and deep query inspection & debugging. Bye bye run button ๐Ÿ‘‹ Truly, literally only possible with DuckDB

View full thread

If you want to work on data-intensive UIs combining the best of databases and dataviz, my team is hiring. Send me a message in chat and let's connect. I'll have a JD up once I recover!

So thrilled to announce we've released Instant SQL in both the MotherDuck and DuckDB UIs! It's a new interaction pattern for writing SQL queries that provides realtime result previews and deep query inspection & debugging. Bye bye run button ๐Ÿ‘‹ Truly, literally only possible with DuckDB

View full thread

Instant SQL works by using samples / subsets of data. Of course, at any point, you can run the actual query against your whole data set. Think of it as a complement to running your query, not an alternative.

So thrilled to announce we've released Instant SQL in both the MotherDuck and DuckDB UIs! It's a new interaction pattern for writing SQL queries that provides realtime result previews and deep query inspection & debugging. Bye bye run button ๐Ÿ‘‹ Truly, literally only possible with DuckDB

View full thread

Because we have access to the whole pipeline of the query, Instant SQL can dissect results, making it easy to debug complicated formulas and regular expressions It's like we've turned your query into a big excel function that returns a list of expression trees on every keystroke

Instant SQL is great for humans, but it also works GREAT with AI tools. Any suggestion made by an LLM is instantly previewed as you go, giving you a lot more confidence when working with SQL and AI.

So thrilled to announce we've released Instant SQL in both the MotherDuck and DuckDB UIs! It's a new interaction pattern for writing SQL queries that provides realtime result previews and deep query inspection & debugging. Bye bye run button ๐Ÿ‘‹ Truly, literally only possible with DuckDB

Instant SQL follows Bret Victor's 2 rules from "Inventing on Principle": when you make a change in your software, there can't be a delay and there can't be anything hidden Using DuckDB's internals, we've built a realtime query-as-you-type system. But it does a lot more, too:

on every keystroke, Instant SQL parses the query, analyzes it, and caches just enough to render a preview of the SELECT statement where your cursor is. This enables inspection of CTEs and subqueries. Make a change, then go downstream, and see that change instantly reflected.

Migrating over my DuckDB AST path generation code to our UI. The way I've done gut-checks on the grammar is to use this CodeMirror semantic highlighting extension I wrote We can implement a very long tail of unique features with the path generator, including instant preview mode

So thrilled the DuckDB UI is out to the world! Read the post, but wanted to also share a couple small design details we thought about in thread

DuckDB@duckdb.org

DuckDB got a local UI. Thanks to our friends at MotherDuck, you can now interact with your DuckDB database through an interactive notebook, running on localhost. Read the announcement blog post at duckdb.org/2025/03/12/d...

View full thread

this UI is V1, & a big project to hoist the MotherDuck UI into a new context. I can't wait to add more features! If you've talked to me about how you use the CLI in the last month, please know you've made an impact on our roadmap! Also, Column Explorer w/ max threads = ๐ŸŒ 

So thrilled the DuckDB UI is out to the world! Read the post, but wanted to also share a couple small design details we thought about in thread

DuckDB@duckdb.org

DuckDB got a local UI. Thanks to our friends at MotherDuck, you can now interact with your DuckDB database through an interactive notebook, running on localhost. Read the announcement blog post at duckdb.org/2025/03/12/d...

Minimal onboarding. We assume DuckDB CLI users understand the basic mechanics of running queries. Our onboarding shows the relationship between the editors and the catalog on the left hand side.

In DuckDB land, it's common for databases to have paths. Rather than making icons for each type, we opted to separate memory vs. on-disk & add a location icon on the right. (This serves as a copy button too!) We'll add custom icons for external dbs later (e.g. sqlite)

The prod push begins ... starting with my TS-based re-parse of the DuckDB grammar to get the end positions of AST nodes & all clauses of select & set operation nodes. This tedious work enables a long tail of hot UI magic. Can't wait to deprecate it once we have the PEG parser!

View full thread

We also launched our first UI-based LLM feature ~ it consumes file names, inferred schemas, and a few rows to come up with a good table name. Beyond simple, super effective. For paid users only + a very cute animation

View full thread

We also launched our first UI-based LLM feature ~ it consumes file names, inferred schemas, and a few rows to come up with a good table name. Beyond simple, super effective. For paid users only + a very cute animation

Our new file -> table feature showcases our upcoming DuckDB-optimized data grid. I can't wait until this becomes our default everywhere; lot of great design details that make it easy to work with DuckDB values