Deploying a live Datasette demo when the tests pass
I've implemented this pattern a bunch of times now - here's the version I've settled on for my [datasette-auth0 plugin](https://github.com/simonw/d...
470 words
|
2 minutes
Integrating Podman with Kubernetes - A Comprehensive Guide
A practical guide to seamlessly integrating Podman with Kubernetes workflows, including generating Kubernetes manifests, development practices, and migration strategies.
1425 words
|
7 minutes
Use DuckDB to convert parquet to JSON and then open it in Datasette Lite
[pickapic.io](https://pickapic.io/) is a new tool funded by [stability.ai](https://stability.ai/) which asks people to generate and then vote on im...
677 words
|
3 minutes
Converting HTML and rich-text to Markdown
If you copy and paste from a web page - including a full table - into a GitHub issue comment GitHub converts it to the corresponding Markdown for y...
120 words
|
1 minute
Interactive row selection prototype with Datasette
I added a new [llms](https://simonwillison.net/tags/llms/) tag to my blog, for my content about Large Language Models.
801 words
|
4 minutes
Redirects for Datasette
I made some changes to my https://til.simonwillison.net/ site that resulted in cleaner URL designs, so I needed to setup some redirects. I configur...
91 words
|
1 minute
Running Docker on an M1 Mac
*TLDR: Use `platform: linux/amd64` in `docker-compose.yml` and your containers will probably work!*
907 words
|
5 minutes
Writing tests for the ASGI lifespan protocol with HTTPX
Uvicorn silently ignores exceptions that occur during startup against the ASGI lifespan protocol - see [starlette/issues/486](https://github.com/en...
160 words
|
1 minute
Listen to a web page in Mobile Safari
I found a better way to listen to a whole web page through text-to-speech on Mobile Safari today.
170 words
|
1 minute
Complete Guide to Uninstalling Linkding from CoreOS
A comprehensive step-by-step guide for completely removing Linkding bookmark manager from CoreOS systems, including services, containers, data, and configuration files.
984 words
|
5 minutes
Usable horizontal scrollbars in the Django admin for mouse users
I got a complaint from a Windows-with-mouse user of a Django admin project I'm working on: they couldn't see the right hand columns in a table with...
321 words
|
2 minutes
Managing Packages in Fedora CoreOS - A Comprehensive DNF and rpm-ostree Guide
A detailed guide on package management in Fedora CoreOS using DNF and rpm-ostree, covering system updates, layered packages, troubleshooting, and best practices for container-optimized environments.
1222 words
|
6 minutes
Emulating a big-endian s390x with QEMU
I got [a bug report](https://github.com/simonw/sqlite-fts4/issues/6) concerning my [sqlite-fts4](https://github.com/simonw/sqlite-fts4) project run...
434 words
|
2 minutes
Preventing double form submissions with JavaScript
I needed this for [VIAL issue 722](https://github.com/CAVaccineInventory/vial/issues/722). I decided to disable form submissions for two seconds af...
108 words
|
1 minute
HTML video that loads when the user clicks play
2024-05-29
Today I figured out how to use the `<video>` tag to show a static thumbnail that gets replaced by the loaded video only when the user clicks play.
115 words
|
1 minute
Converting Airtable JSON for use with sqlite-utils using jq
The Airtable API outputs JSON that looks like this:
380 words
|
2 minutes
Syntax highlighted code examples in Datasette
I wanted to add syntax highlighting to the new tutorial [Data analysis with SQLite and Python](https://datasette.io/tutorials/data-analysis).
349 words
|
2 minutes
Annotated code for a demo of WebSocket chat in Deno Deploy
Deno Deploy is a hosted Deno service that promises [a multi-tenant JavaScript engine running in 25 data centers across the world](https://deno.com/...
649 words
|
3 minutes
Django Admin action for exporting selected rows as CSV
I wanted to add an action option to the Django Admin for exporting the currently selected set of rows (or every row in the table) as a CSV file.
407 words
|
2 minutes
Exploring Baseline with Datasette Lite
One of the announcements from Google I/O 2023 was [Baseline](https://web.dev/baseline/), a new initiative to help simplify the challenge of decidin...
518 words
|
3 minutes
Managing Git Repository Identity - Safely Rewriting Author History
A comprehensive guide to safely updating Git repository commit history to reflect correct author information, with detailed explanations of the risks involved and best practices to follow.
1484 words
|
7 minutes
Conditionally running a second job in a GitHub Actions workflow
My [simonwillisonblog-backup workflow](https://github.com/simonw/simonwillisonblog-backup/blob/main/.github/workflows/backup.yml) periodically crea...
411 words
|
2 minutes
get-graphql-schema
The GraphQL schema language is a concise way to represent the available schema provided by a GraphQL endpoint. It looks something like this:
297 words
|
1 minute
Running gdb against a Python process in a running Docker container
While investigating [Datasette issue #1268](https://github.com/simonw/datasette/issues/1268) I found myself with a Python process that was hanging,...
185 words
|
1 minute