Simon Willison’s Weblog

Newsletter
Atom feed for paul-ford Random

21 posts tagged “paul-ford”

2026

Inspired by Paul Ford and Aboard Foundary's new web app Tiny Little Office, which provides a suite of web app content editors (a Word Processor, Outliner, Presentation Builder, Spreadsheet, Calculator, Drawing Tool, Diagram Maker, Animator, Calendar, and Trip Planner).

Tiny Little Office's signature trick is to store all of the document data in the #fragment section of the URL, so every document created using it becomes a bookmarkable and shareable link.

It also has an llms.txt file telling agents how to construct URLs that will render as documents. Claude used that file to generate this link to a deck that explains how the URL format works:

Screenshot of a slide deck editor in a web app with a dark-themed presentation open. The document title field reads "How a Tiny Little Office link works", with a progress ring, share icon and menu icon at top right. Below is a formatting toolbar with an "Insert" dropdown followed by icon buttons for play, bold, italic, underline, strikethrough, highlight, code, link, superscript, emoji, outdent, indent, layout and color palette. The main canvas shows slide 1 with a blue chain-link icon and the text: "The whole document is the link" "No server, no database, no account" "Everything after the # stays in your browser" and a slide counter "1 / 9". Below the canvas is a "SPEAKER NOTES" heading. A sidebar on the right shows slide thumbnails. Slide 1 (selected): "The whole document is the link" "No server, no database, no account" "Everything after the # stays in your browser". Slide 2: "Anatomy of a link" with bullets "tinylittleoffice.com/#/v1/deck/y7Vj..." "v1: the format version" "deck: which app opens it" "y: the mode letter" "7Vj...: the document, compressed and encoded". Slide 3: "Step 1: write it as text" with bullets "Every document is TLO, a Markdown variant" "Slides split on --- lines" "Charts, drawings and animations are fenced blocks" "This deck is about 1 KB of plain text". Slide 4: "Step 2: squeeze it" with bullets "Raw DEFLATE, the same algorithm as zip and gzip" "z: plain DEFLATE" "y: DEFLATE with a preset dictionary" "r: no compression at all".

Tiny Little Office inspired me to have Claude Code (Opus 5.5 Extra) build a similar tool that works with LaTeX. Here's the sequence of prompts I used:

I want a tool where you can link to it with a fragment hash #code-here and it treats that code as LaTeX and renders it really effectively. It should also support a prefix which means the latex is compressed with a custom compression dictionary optimized for latex. Use the best available latex render library from a CDN (consider WebAssembly too). If loaded without a fragment hash show an editor you can paste latex into and then toggle to a "rendered" view. That rendered view should be bookmarkable. The #fragment view should let you switch to edit source too.

Since it was working in my tools repo I told it to take inspiration from the <iframe sandbox="..."> mechanism used by my existing SVG in Markdown tool as protection against XSS risks:

Safe from XSS? We could run in an iframe sandbox like we do on the SVG markdown render project

I had it copy the Gist/URL loading feature from that tool as well:

We should have an option to load latex from a URL (or gist) similar to the markdown SVG tool

Here's an example link. The tool uses Pako 2.1.0, MathJax 4.1.3, faster-latex 0.3.1, and DOMPurify 3.4.16.

Screenshot of a web app titled "LaTeX renderer" with a split-pane layout. The top bar has an Edit/Rendered toggle, a blue Copy link button, and a Share button. The left pane, labeled LaTeX source with a "Document · faster-latex (WASM)" badge, has a URL/GitHub Gist input with a Load button, a code editor containing a LaTeX document, and rows of example buttons (Quadratic formula, Gaussian integral, Maxwell, Attention, Matrix, Chemistry, Prose, TikZ, Document). The right pane shows the typeset output: a paper titled "Sums of Odd Numbers" by A. Student, with a section stating a theorem that the first n odd numbers sum to n squared, a Proof section with numbered equations, and a bulleted list of small cases.

For a while, I must admit, it looked as if software developer roles like mine were done for. How could we fight against tireless robots? But our industry is slowly realizing that making truly cutting-edge software still requires humans to think and work together, to maximize their skill sets and to practice their respective crafts. A.I. can write very good software, but it also makes it easy to do someone else’s job badly, which is part of why all those projects fail. Now that everyone can code, it’s become clearer why many shouldn’t.

— Paul Ford, A.I. Was Supposed to Give Us New Killer Apps. What Happened?

# 12th September 2026, 6 pm / paul-ford, ai, generative-ai, llms, deep-blue

The paper asked me to explain vibe coding, and I did so, because I think something big is coming there, and I'm deep in, and I worry that normal people are not able to see it and I want them to be prepared. But people can't just read something and hate you quietly; they can't see that you have provided them with a utility or a warning; they need their screech. You are distributed to millions of people, and become the local proxy for the emotions of maybe dozens of people, who disagree and demand your attention, and because you are the one in the paper you need to welcome them with a pastor's smile and deep empathy, and if you speak a word in your own defense they'll screech even louder.

— Paul Ford, on writing about vibe coding for the New York Times

# 23rd February 2026, 4 pm / new-york-times, paul-ford, vibe-coding

The A.I. Disruption We’ve Been Waiting for Has Arrived. New opinion piece from Paul Ford in the New York Times. Unsurprisingly for a piece by Paul it's packed with quoteworthy snippets, but a few stood out for me in particular.

Paul describes the November moment that so many other programmers have observed, and highlights Claude Code's ability to revive old side projects:

[Claude Code] was always a helpful coding assistant, but in November it suddenly got much better, and ever since I’ve been knocking off side projects that had sat in folders for a decade or longer. It’s fun to see old ideas come to life, so I keep a steady flow. Maybe it adds up to a half-hour a day of my time, and an hour of Claude’s.

November was, for me and many others in tech, a great surprise. Before, A.I. coding tools were often useful, but halting and clumsy. Now, the bot can run for a full hour and make whole, designed websites and apps that may be flawed, but credible. I spent an entire session of therapy talking about it.

And as the former CEO of a respected consultancy firm (Postlight) he's well positioned to evaluate the potential impact:

When you watch a large language model slice through some horrible, expensive problem — like migrating data from an old platform to a modern one — you feel the earth shifting. I was the chief executive of a software services firm, which made me a professional software cost estimator. When I rebooted my messy personal website a few weeks ago, I realized: I would have paid $25,000 for someone else to do this. When a friend asked me to convert a large, thorny data set, I downloaded it, cleaned it up and made it pretty and easy to explore. In the past I would have charged $350,000.

That last price is full 2021 retail — it implies a product manager, a designer, two engineers (one senior) and four to six months of design, coding and testing. Plus maintenance. Bespoke software is joltingly expensive. Today, though, when the stars align and my prompts work out, I can do hundreds of thousands of dollars worth of work for fun (fun for me) over weekends and evenings, for the price of the Claude $200-a-month plan.

He also neatly captures the inherent community tension involved in exploring this technology:

All of the people I love hate this stuff, and all the people I hate love it. And yet, likely because of the same personality flaws that drew me to technology in the first place, I am annoyingly excited.

# 18th February 2026, 5:07 pm / new-york-times, paul-ford, careers, ai, generative-ai, llms, ai-assisted-programming, ai-ethics, coding-agents, claude-code, deep-blue, november-2025-inflection

2020

I get asked a lot about learning to code. Sure, if you can. It's fun. But the real action, the crux of things, is there in the database. Grab a tiny, free database like SQLite. Import a few million rows of data. Make them searchable. It's one of the most soothing activities known to humankind, taking big piles of messy data and massaging them into the rigid structure required of a relational database. It's true power.

— Paul Ford

# 16th December 2020, 5:35 am / databases, paul-ford, sqlite

Fun with binary data and SQLite

This week I’ve been mainly experimenting with binary data storage in SQLite. sqlite-utils can now insert data from binary files, and datasette-media can serve content over HTTP that originated as binary BLOBs in a database file.

[... 957 words]

2019

Why I (Still) Love Tech: In Defense of a Difficult Industry (via) If you only read one longform piece this week, make it this one. Utterly delightful prose and a bunch of different messages that resonated with me deeply.

# 15th May 2019, 3:45 pm / paul-ford

Imagine if you were really into the group Swervedriver in the mid-’90s but by 2019 someone was on CNBC telling you that Swervedriver represented, I don’t know, 10 percent of global economic growth, outpacing returns in oil and lumber. That’s the tech industry.

— Paul Ford

# 15th May 2019, 3:44 pm / paul-ford

Usable Data (via) A Paul Ford essay from February 2016 in which he advocates for SQLite as the ideal format for sharing interesting data. I don’t know how I missed this one—it predates Datasette, but it perfectly captures the benefits that I’m trying to expose with the project. “In my dream universe, there would be a massive searchable torrent site filled with open, explorable data sets, in SQLite format, some with full text search indexes already in place.”

# 11th January 2019, 6:33 pm / open-data, paul-ford, sqlite, datasette

2018

Consider Bitcoin a grand middle finger. It’s a prank, almost a parody of the global financial system, that turned into a bubble. “You plutocrats of Davos may think you control the global money supply,” the pranksters seem to say. “But humans will make an economy out of anything. Even this!”

— Paul Ford

# 10th March 2018, 11:34 am / economics, paul-ford, bitcoin, blockchain

How I made a Who’s On First subset database. Inspired by Paul Ford on Twitter, I tried out a new trick with SQLite: connect to a database containing JSON, attach a brand new empty database file using “attach database”, then populate it using INSERT INTO ... SELECT plus the json_extract() function to extract out a subset of the JSON properties into a new table in the new database.

# 3rd February 2018, 5:25 am / json, paul-ford, sqlite, whosonfirst

[On SQLite] The JSON interface is like, "we save the text and when you retrieve it we parse the JSON at several hundred MB/s and let you do path queries against it please stop overthinking it, this is filing cabinet."

— Paul Ford

# 29th January 2018, 4:29 pm / json, paul-ford, sqlite

2017

Datasette: Ability to customize presentation of specific columns in HTML view. Still a work in progress, but Datasette master now allows you to inject links to one or more additional CSS and JavaScript resources (optionally with SRI hashes) which will be included on every page. Each template also
now provides CSS classes on the body element derived from the current database and table names to provide hooks for custom styling. Next up: custom template support.

# 30th November 2017, 7:27 am / css, paul-ford, datasette

If you’re a public data provider—and many large NGOs, government organizations, cultural organizations, historical archives, media organizations, medical orgs, and academic institutions are exactly that—you can publish gigabytes of data, and make it available as an API, and make it easy to browse on the web, too, with extremely low effort. Put it into SQLite, point this little guy at it, and you’ve just radically increased the accessibility and utility of your data. Because messing around in SQL from a web browser is orders of magnitude more immediately useful than downloading a CSV, processing it, and figuring out what comes next.

— Paul Ford

# 17th November 2017, 1:10 am / paul-ford, sqlite, datasette

2008

Learning to Fear the Semantic Web. Paul Ford raises the liability issue with regards to building sites around other people’s metadata, pointing out that OpenCalais is owned by Thomson Reuters who have a bad track record with regards to intellectual property lawsuits elsewhere in the organisation.

# 23rd October 2008, 4:14 pm / intellectualproperty, opencalais, paul-ford, semantic-web, thomson-reuters

2007

Harper’s Magazine (via) The site with the best metadata on the Web just relaunched, with even MORE metadata.

# 14th April 2007, 12:05 am / harpers, metadata, paul-ford

If your average iPod weighs five ounces with packaging, then Apple has moved about 21,875,000 pounds of them, equivalent in weight to 1,325 full-grown male African elephants, 35 times as many as Hannibal's force.

— Paul Ford

# 8th January 2007, 1:46 pm / apple, hannibal, ipod, paul-ford

2004

Screenscraping the Senate. Paul Ford’s new column for XML.com.

# 2nd September 2004, 1:35 am / paul-ford

Omit needless words, codified

I continue to try to improve my writing. “Omit needless words” is all well and good, but identifying needless words can be a difficult task for the untrained eye. Paul Ford’s Passivator bookmarklet highlights adverbs and passive verbs, both of which can indicate weak writing.

Gothamist Interviews: Paul Ford. “the only way to ignore advertising is to die”

# 25th February 2004, 11:47 pm / paul-ford

2003

A New Website for Harper’s Magazine. Paul Ford’s semantic web publishing system gets a commercial outing

# 2nd December 2003, 4:06 am / paul-ford, semantic-web