Simon Willison’s Weblog

Subscribe
Atom feed

Elsewhere

Filters: Sorted by date

Release datasette-public 0.3a4 — Make selected Datasette databases and tables visible to the public
Release datasette-events-db 0.1a1 — Log Datasette events to a database table
Release datasette-edit-schema 0.8a4 — Datasette plugin for modifying table schemas
Release datasette-query-assistant 0.1a4 — Query databases and tables with AI assistance
Release datasette-remote-actors 0.1a6 — Datasette plugin for fetching details of actors from a remote endpoint
Release datasette-extract 0.1a11 — Import unstructured data (text and images) into structured tables
Release datasette-pins 0.1a5 — Pin databases, tables, and other items to the Datasette homepage
Release datasette-checkbox 0.1a3 — Add interactive checkboxes to columns in Datasette
Release datasette-column-sum 0.1a1 — Sum the values in numeric Datasette columns
Release pytest-unused-port 0.1 — pytest fixture finding an unused local port
Release datasette-tail 0.1a1 — Tools for tailing your database
Release datasette-remove-database 0.1a1 — Remove a database from Datasette
Release datasette-queries 0.1.2a1 — Save SQL queries in Datasette
Release datasette-llm-usage 0.1a1 — Track usage of LLM tokens in a SQLite table
Release datasette-enrichments-llm 0.1a1 — Enrich data by prompting LLMs
Release datasette-debug-events 0.1a1 — Print Datasette events to standard error
Release datasette-acl 0.4a5 — Advanced permission management for Datasette
Research sqlite-permissions-poc — A proof-of-concept implements a fully SQLite-based hierarchical permission system that computes allowed database/table pairs by cascading rules across child (table), parent (database), and global levels with DENY-over-ALLOW semantics; it uses only plain SQL (CTEs + SQLite JSON functions) and is built on SQLite (https://sqlite.org).
Research deepseek-ocr-nvidia-spark — Successfully deployed DeepSeek-OCR on an NVIDIA GB10 (ARM64, sm_121) by upgrading to PyTorch 2.9.0+cu130 so CUDA 13.0 wheels could be used instead of building from source. The repo includes automated scripts (setup.sh, run_ocr.py) that load the 6.3GB safetensors model (~34s) and run GPU inference (~58s for a 3503×1668 image), producing annotated images, markdown/text outputs and bounding boxes with validated multi-column accuracy.
Research datasette-plugin-alpha-versions — Datasette Plugins Analysis presents a systematic evaluation of 44 key plugins from the Datasette ecosystem, focusing on dependencies, permissions hooks, and release patterns as of October 2025. The study finds that 89% of these plugins rely on ALPHA versions of Datasette, with only 8 plugins having stable releases and just 5 supporting stable Datasette while using advanced hooks like `register_permissions()`.
Tool Query String Stripper — Remove query parameters and tracking data from URLs with this Query String Stripper tool. Paste any URL to instantly extract the base address by stripping away everything after the question mark, then copy the cleaned result to your clipboard with a single click. This utility is helpful for sharing clean URLs, removing analytics parameters, or simplifying web addresses for documentation purposes.
Research node-pyodide — A compact demo shows how to run Python scripts inside a WebAssembly sandbox from Node.js using Pyodide: after npm install, launching node server-simple.js executes example-simple.py and writes generated files to the output/ directory. The project demonstrates a minimal server-side integration pattern for Pyodide (https://pyodide.org/) under Node.js (https://nodejs.org/) and is aimed at quick experimentation with sandboxed Python execution.
Research minijinja-vs-jinja2 — Benchmarking the Python bindings for minijinja (https://github.com/mitsuhiko/minijinja) against Jinja2 (https://palletsprojects.com/p/jinja/) on Python 3.14 and 3.14t measured template render performance using a realistic e-commerce template with inheritance, loops, and ~65KB HTML output. The suite runs 200 iterations per scenario, captures mean/median/std/min/max, and provides reproducible scripts (run_benchmark.sh, benchmark.py) plus matplotlib charts to visualize results.
TIL Exploring OpenAI's deep research API model o4-mini-deep-research — I was reviewing some older PRs and landed [this one](https://github.com/simonw/llm-prices/pull/9) by Manuel Solorzano adding pricing for [o4-mini-deep-research](https://platform.openai.com/docs/models/o4-mini-deep-research) and [o3-deep-research](https://platform.openai.com/docs/models/o3-deep-research) to my [llm-prices.com](https://www.llm-prices.com/) site. I realized I hadn't tried those models yet so I decided to give one of them a go.
Tool Deep Research Session Viewer — # Deep Research Session Viewer Documentation
Tool OpenAI Prompt Caching Playground — Explore OpenAI's prompt caching feature by testing different prompt structures and observing cache hit rates across multiple requests. This interactive playground lets you compose system instructions, document context, and user questions, then send them to the Chat Completions or Responses API to track how cached tokens reduce costs and improve performance.
Release llm-anthropic 0.20 — LLM access to models by Anthropic, including the Claude series

Beats

Years

Tags