Simon Willison’s Weblog

Subscribe
Atom feed

Elsewhere

Filters: Sorted by date

Release asgi-csrf 0.10 — ASGI middleware for protecting against CSRF attacks
None
TIL Using sqlite-vec with embeddings in sqlite-utils and Datasette — Alex Garcia's [sqlite-vec](https://github.com/asg017/sqlite-vec) SQLite extension provides a bunch of useful functions for working with vectors inside SQLite.
None
TIL Using pytest-django with a reusable Django application — I published a reusable Django application today: **[django-http-debug](https://github.com/simonw/django-http-debug)**, which lets you define mock HTTP endpoints using the Django admin - like `/webhook-debug/` for example, configure what they should return and view detailed logs of every request they receive.
Release django-http-debug 0.2 — Django app for creating endpoints that log incoming request and return mock data
Release django-http-debug 0.1a0 — Django app for creating endpoints that log incoming request and return mock data
Release datasette-remote-metadata 0.2a0 — Periodically refresh Datasette metadata from a remote URL
Release datasette 1.0a14 — An open source multi-tool for exploring and publishing data
None
TIL Assistance with release notes using GitHub Issues — I like to write the release notes for my projects by hand, but sometimes it can be useful to have some help along the way.
None
TIL Back-dating Git commits based on file modification dates — I fell down a bit of a rabbit hole this morning. In trying to figure out [where the idea of celebrating World Wide Web Day on August 1st](https://simonwillison.net/2024/Aug/1/august-1st-world-wide-web-day/) came from I ran across Tim Berners-Lee's original code for the WorldWideWeb application for NeXT on the W3C's website:
None
TIL HTML video with subtitles — Via [Mariatta](https://fosstodon.org/@mariatta/112883308634473940) I found my [PyVideo speaker page](https://pyvideo.org/speaker/simon-willison.html), and thanks to that page I learned that a talk I gave in 2009 had been rescued from the now-deceased [Blip.tv](https://en.wikipedia.org/wiki/Blip.tv) and is now hosted by the Internet Archive:
Release fetch-github-issues 0.1.2 — Fetch all GitHub issues for a repository
Release fetch-github-issues 0.1.1 — Fetch all GitHub issues for a repository
Release fetch-github-issues 0.1 — Fetch all GitHub issues for a repository
Release datasette-extract 0.1a8 — Import unstructured data (text and images) into structured tables
Tool Image resize, crop, and quality comparison — Compare images at different sizes and quality levels by uploading a photo, defining a crop area, and generating multiple preview versions with varying dimensions and compression settings. The tool displays file sizes for each variant and allows interactive toggling between normal and full-width viewing modes, as well as direct downloads. Transparency detection automatically reveals a background color picker when needed for images with alpha channels.
Release llm-mistral 0.5 — LLM plugin providing access to Mistral models using the Mistral API
Release llm-gguf 0.1a0 — Run models distributed as GGUF files using LLM
Release llm 0.15 — Access large language models from the command-line
Release sqlite-utils 3.37 — Python CLI utility and library for manipulating SQLite databases
Tool EXIF Data Viewer — View EXIF metadata and GPS coordinates from uploaded images using this tool. Upload or drag-and-drop an image file to instantly display all embedded EXIF data, including GPS latitude and longitude with a link to Google Maps if available. The tool supports common image formats such as JPEG, PNG, and HEIC.
Release llm-mistral 0.4 — LLM plugin providing access to Mistral models using the Mistral API
None
TIL Trying out free-threaded Python on macOS — Inspired by [py-free-threading.github.io](https://py-free-threading.github.io/) I decided to try out a beta of Python 3.13 with the new free-threaded mode enabled, which removes the GIL.
Release datasette-python 0.1 — Run a Python interpreter in the Datasette virtual environment
None
TIL Accessing 1Password items from the terminal — I save things like API keys in [1Password](https://1password.com/). Today I figured out how to access those from macOS terminal scripts.
Tool Box shadow CSS generator — Generate custom CSS box-shadow effects with interactive controls and real-time preview. Adjust horizontal and vertical offsets, blur radius, spread radius, color, and opacity using intuitive sliders and color picker to visualize shadow changes instantly. Copy the generated CSS code directly to your clipboard for immediate use in your stylesheets.
Tool Timezone Meeting Planner — Plan meetings across multiple time zones by selecting two locations and viewing their local times side-by-side. The comparison table displays 48 consecutive hours of UTC times with corresponding local times for each timezone, making it easy to identify overlapping working hours. Your timezone selections are automatically saved in the URL for convenient sharing and bookmarking.
Tool Chrome LanguageModel Playground — Interact with Chrome's built-in language model API through this web-based playground interface. The application allows users to check model availability, download the model if needed, and execute text prompts to generate responses directly in the browser. A persistent history feature maintains records of previous prompts and responses for easy reference.
Tool Compare PDFs — Compare two PDF documents side-by-side to identify differences between them. Upload or drag and drop two PDF files to view their pages rendered as images, with a third panel highlighting any pixel-level differences in red. This tool is useful for detecting changes between document versions, comparing drafts, or verifying document modifications.
None
TIL Mocking Stripe signature checks in a pytest fixture — I'm writing some code that accepts webhooks from Stripe. I wanted to simulate hits to this endpoint in my Django tests. Stripe uses a `Stripe-Signature` header and I wanted a way to mock my code so that I didn't need to calculate the correct signature.
Tool Language Model Elo Ratings — Compare Elo ratings across different language models and dates using this interactive animated bar chart. Load your own JSON data with model names, dates, and Elo scores, then watch the rankings evolve over time with customizable animation speed. The visualization displays the top 20 models at each time point, making it easy to track performance trends and competitive dynamics in the AI landscape.