Simon Willison’s Weblog

Subscribe

TILs

Filters: Sorted by date

TIL TOML in Python — I finally got around to fully learning [TOML](https://toml.io/). Some notes, including how to read and write it from Python.
TIL Automatically maintaining Homebrew formulas using GitHub Actions — I previously wrote about [Packaging a Python CLI tool for Homebrew](https://til.simonwillison.net/homebrew/packaging-python-cli-for-homebrew). I've now figured out a pattern for automatically updating those formulas over time, using GitHub Actions.
TIL Using ChatGPT Browse to name a Python package — I needed a name for my new Python CLI tool.
TIL Syncing slide images and audio in iMovie — I found an MP3 recording of an old talk I gave and decided to use the slides from that talk to create a video using iMovie.
TIL Using fs_usage to see what files a process is using — Today I wanted to figure out where the `vercel` CLI tool on my Mac kept its authentication tokens.
TIL Running OpenAI's large context models using llm — OpenAI [announced new models](https://openai.com/blog/function-calling-and-other-api-updates) today. Of particular interest to me is the new `gpt-3.5-turbo-16k` model, which provides GPT 3.5 with a 16,000 token context window (up from 4,000) priced at 1/10th of GPT-4 - $0.003 per 1K input tokens and $0.004 per 1K output tokens.
TIL Consecutive groups in SQL using window functions — I have a database table with all of my Swarm checkins since 2011, created using my [swarm-to-sqlite](https://datasette.io/tools/swarm-to-sqlite) tool.
TIL Testing the Access-Control-Max-Age CORS header — Today I noticed that [Datasette](https://datasette.io/) wasn't serving a `Access-Control-Max-Age` header.
TIL Comparing two training datasets using sqlite-utils — [WizardLM](https://github.com/nlpxucan/WizardLM) is "an Instruction-following LLM Using Evol-Instruct". It's a fine-tuned model on top of Meta's LLaMA. The fine-tuning uses 70,000 instruction-output pairs from this JSON file:
TIL mlc-chat - RedPajama-INCITE-Chat-3B on macOS — MLC (Machine Learning Compilation) on May 22nd 2023: [Bringing Open Large Language Models to Consumer Devices](https://mlc.ai/blog/2023/05/22/bringing-open-large-language-models-to-consumer-devices)
TIL hexdump and hexdump -C — While exploring null bytes in [this issue](https://github.com/simonw/ttok/issues/3) I learned that the `hexdump` command on macOS (and presumably other Unix systems) has a confusing default output.
TIL 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 deciding which web platform features are now widely enough supported by modern browsers to be safe to use.
TIL Running Python code in a Pyodide sandbox via Deno — I continue to seek a solution to the Python sandbox problem. I want to run an untrusted piece of Python code in a sandbox, with limits on memory and time.
TIL Expanding ChatGPT Code Interpreter with Python packages, Deno and Lua — The ChatGPT Code Interpreter alpha remains incredibly interesting. I wrote about how I was using it [for Python and SQLite benchmarking](https://simonwillison.net/2023/Apr/12/code-interpreter/) a few weeks ago. Today I found a neat pattern for expanding its capabilities with custom binaries.
TIL Social media cards generated with shot-scraper — My [TIL website](https://til.simonwillison.net/) has social media card images to make links shared from it look slightly more interesting when shared on sites like Mastodon and Twitter.
TIL Deno KV — *Initial article: April 28th 2023 - see below for an update*
TIL The location of the pip cache directory — `pip` uses a cache to avoid downloading packages again:
TIL A few notes on Rye — [Rye](https://github.com/mitsuhiko/rye) is Armin Ronacher's new experimental Python packaging tool. I decided to take it for a test-run.
TIL Interpreting photo orientation and locations in EXIF data — I upgraded my [Niche Museums](https://www.niche-museums.com/) site to use [PhotoSwipe](https://photoswipe.com/) for its photo galleries today. Here's [my issue](https://github.com/simonw/museums/issues/37).
TIL Running Dolly 2.0 on Paperspace — [Dolly 2.0](https://www.databricks.com/blog/2023/04/12/dolly-first-open-commercially-viable-instruction-tuned-llm) looks to be a big deal. It calls itself "the first open source, instruction-following LLM, fine-tuned on a human-generated instruction dataset licensed for research and commercial use."
TIL Creating desktop backgrounds using Midjourney — I decided to create a new desktop background for my Mac using [Midjourney](https://midjourney.com/). My laptop has a 16:10 aspect ratio and a retina screen, so I wanted as high a resolution image as possible.
TIL Unix timestamp in milliseconds in SQLite — I wanted to retrieve the time in milliseconds since the Unix epoch in SQLite.
TIL Saving an in-memory SQLite database to a file in Python — I was messing around in Python with an in-memory SQLite database, when I decided I actually wanted to save my experimental database to a file so I could explore it using [Datasette](https://datasette.io/).
TIL GPT-4 for API design research — I came up with a really useful prompt for GPT-4 today. I was [considering options](https://github.com/simonw/datasette/issues/2054#issuecomment-1499491258) for refactoring how Datasette's core view functions work, and was contemplating alternative ways to dispatch to different functions based on a combination of the URL path and the HTTP verb.
TIL Copy tables between SQLite databases — I figured out a pattern for doing this today using the `sqlite3` CLI tool - given two SQLite databases in the current folder, called `tils.db` and `simonwillisonblog.db`:
TIL Reading thermometer temperatures over time from a video — [Natalie](https://www.instagram.com/natbat.art/) has been experimenting with using a microwave as a kiln for pottery, specifically for [Raku](https://en.wikipedia.org/wiki/Raku_ware).
TIL Using the ChatGPT streaming API from Python — I wanted to stream the results from the ChatGPT API as they were generated, rather than waiting for the entire thing to complete before displaying anything.
TIL 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.
TIL Using jq in an Observable notebook — I use the `jq` language quite a lot these days, mainly because I can get ChatGPT to write little JSON transformation programs for me very quickly.
TIL Convert git log output to JSON using jq — I just spent way too long messing around with ChatGPT ([transcript here](https://gist.github.com/simonw/c3b486fa90d7c32a0e8dfb47e151090a)) trying to figure this out. After much iteration, here's a recipe that works (mostly written by me at this point):

Years