Things I've learned, collected in simonw/til. You may also enjoy my blog.
Browse by topic: ab 1 · amplitude 1 · asgi 1 · auth0 2 · aws 8 · awslambda 1 · azure 1 · bash 11 · caddy 1 · chrome 1 · clickhouse 2 · cloudflare 6 · cloudrun 8 · cocktails 3 · cookiecutter 2 · cooking 1 · cosmopolitan 1 · css 2 · datasette 18 · deno 3 · digitalocean 1 · discord 1 · django 19 · docker 9 · duckdb 3 · electron 6 · exif 1 · firefox 1 · fly 10 · gis 4 · git 7 · github 16 · github-actions 28 · go 1 · google 2 · google-sheets 1 · googlecloud 6 · gpt3 11 · graphql 3 · hacker-news 1 · ham-radio 1 · heroku 3 · homebrew 7 · html 5 · http 1 · httpx 1 · hugo 1 · ics 1 · imagemagick 2 · ios 1 · javascript 16 · jinja 3 · jq 8 · json 3 · jupyter 1 · kubernetes 2 · linux 4 · llms 17 · machinelearning 1 · macos 25 · markdown 3 · mastodon 4 · mediawiki 1 · midjourney 1 · misc 2 · networking 2 · nginx 1 · node 1 · npm 6 · observable 1 · observable-plot 2 · overture-maps 1 · pixelmator 1 · playwright 2 · pluggy 1 · postgresql 7 · presenting 1 · purpleair 1 · pyodide 1 · pypi 2 · pytest 21 · python 62 · quarto 1 · readthedocs 7 · reddit 1 · selenium 2 · service-workers 1 · shot-scraper 5 · spatialite 4 · sphinx 4 · sql 5 · sqlite 54 · svg 1 · tailscale 1 · tesseract 1 · twitter 4 · typescript 1 · valtown 1 · vega 1 · vim 1 · vscode 2 · web-components 1 · webassembly 2 · webauthn 1 · wikipedia 1 · yaml 1 · youtube 1 · zeit-now 2 · zsh 2
Here's what I learned about publishing a single file JavaScript package to NPM for my Prompts.js project. …
My tools.simonwillison.net site is a growing collection of small HTML and JavaScript applications hosted as static files on GitHub Pages. …
I really like Cog (previously) as a tool for automating aspects of my Python project documentation - things like the SQL schemas shown on the LLM logging page. …
I was experimenting with wasmtime-py today and found the current documentation didn't quite give me the information that I needed. …
If you ever run into instructions that tell you to do this: …
I finally figured out a process that works for me for hacking on Python CLI utilities using uv to manage my development environment, thanks to a little bit of help from Charlie Marsh. …
I ran https://simonwillison.net/ through PageSpeed Insights and it warned me that my static assets were not being served with browser caching headers: …
I'm still working towards adding multi-modal support to my LLM tool. In the meantime, here are notes on running prompts against images and PDFs and audio and video files from the command-line using the Google Gemini family of models. …
With Claude's help I figured out what I think is the most basic version of a static site generated using Hugo. …
I live in El Granada, California. Wikipedia calls us a census designated place - we don't have a mayor or city council. But we do have a Community Services District - originally responsible for our sewers, and since 2014 also responsible for our parks. And we get to vote for the board members in the upcoming November election! …
I managed to get my Homebrew installation back into shape today. The first problem I was having is that it complained that macOS Sequoia was unsupported: …
I ran a survey on Twitter the other day to try and figure out what people mean when they use the term "agents" with respect to AI. …
Today I heard about the sqlite3-rsync command, currently available in a branch in the SQLite code repository. It provides a mechanism for efficiently creating or updating a copy of a SQLite database that is running in WAL mode, either locally or via SSH to another server. …
OpenAI's DevDay event yesterday (October 1st 2024) didn’t invite press (as far as I can tell), didn’t livestream the event and didn’t allow audience livestreaming either. I made a last minute decision to live blog the event myself. …
I decided to have a poke around and see if I could figure out how the HTTP streaming APIs from the various hosted LLM providers actually worked. Here are my notes so far. …
I figured out this pattern today for testing an HTML table dynamically added to a page by JavaScript, using Playwright Python: …
I'm writing some quite complex pytest parameterized tests this morning, and I was finding it a little bit hard to read the test cases as the number of parameters grew. …
Alex Garcia's sqlite-vec SQLite extension provides a bunch of useful functions for working with vectors inside SQLite. …
I published a reusable Django application today: 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. …
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. …
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 came from I ran across Tim Berner-Lee's original code for the WorldWideWeb application for NeXT on the W3C's website: …
Via Mariatta I found my PyVideo speaker page, and thanks to that page I learned that a talk I gave in 2009 had been rescued from the now-deceased Blip.tv and is now hosted by the Internet Archive: …
Inspired by 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. …
I save things like API keys in 1Password. Today I figured out how to access those from macOS terminal scripts. …
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. …
I really like auto-formatting tools like Black. I've been hoping to find one that works with Django and Jinja templates for years. …
I've been using Postgres.app to run PostgreSQL on my Mac for years. I like that it's easy to install, gives me a task tray icon to control it and means I don't have to run a full Docker environment just to hack on projects like my blog. …
I wanted to ensure https://niche-museums.com/
would redirect to https://www.niche-museums.com/
- including any path - using Cloudflare. …
I found a better way to listen to a whole web page through text-to-speech on Mobile Safari today. …
I scraped a pass on my Ham radio general exam today, on the second attempt (you can retake on the same day for an extra $15, thankfully). …