Simon Willison’s Weblog

Subscribe

December 2022

45 posts: 8 entries, 13 links, 5 quotes, 19 beats

Dec. 1, 2022

People are complex, and they get energy in complex ways. Some managers get energy from writing some software. That’s great, particularly if you avoid writing software with strict dependencies. Some managers get energy from coaching others. That’s great. Some get energy from doing exploratory work. Others get energy from optimizing existing systems. That’s great, too. Some get energy from speaking at conferences. Great. Some get energy from cleaning up internal wiki’s. You get the idea: that’s great. All these things are great, not because managers should or shouldn’t program/speak at conferences/clean up wiki’s/etc, but because folks will accomplish more if you let them do some energizing work, even if that work itself isn’t very important.

Will Larson

# 6:35 pm / will-larson, management

TIL Workaround for google-github-actions/setup-gcloud errors — I used the [google-github-actions/setup-gcloud](https://github.com/google-github-actions/setup-gcloud) action in all of my GitHub Actions workflows that deploy applications to Cloud Run.
Release datasette 1.0a1 — An open source multi-tool for exploring and publishing data

three.js examples: webgl_postprocessing_pixel (via) Neat new example for three.js that uses a pixel-shader postprocessor to apply an isometric pixel-art feel to a 3D scene.

# 9:57 pm / 3d, javascript, pixelart, webgl

Dec. 2, 2022

Release datasette-ephemeral-tables 0.2.2 — Provide tables that expire after a time limit
Release datasette-public 0.2.2 — Make selected Datasette databases and tables visible to the public

Datasette’s new JSON write API: The first alpha of Datasette 1.0

Visit Datasette's new JSON write API: The first alpha of Datasette 1.0

This week I published the first alpha release of Datasette 1.0, with a significant new feature: Datasette core now includes a JSON API for creating and dropping tables and inserting, updating and deleting data.

[... 2,817 words]

Dec. 4, 2022

A new AI game: Give me ideas for crimes to do

Visit A new AI game: Give me ideas for crimes to do

Less than a week ago OpenAI unleashed ChatGPT on the world, and it kicked off what feels like a seismic shift in many people’s understand of the capabilities of large language models.

[... 1,069 words]

Dec. 5, 2022

Building A Virtual Machine inside ChatGPT (via) Jonas Degrave presents a remarkable example of a creative use of ChatGPT: he prompts it to behave as a if it was a Linux shell, then runs increasingly complex sequences of commands against it and gets back surprisingly realistic results. By the end of the article he’s getting it to hallucinate responses to curl API requests run against imagined API versions of itself.

# 1:43 am / ai, gpt-3, openai, generative-ai, chatgpt, llms

AI assisted learning: Learning Rust with ChatGPT, Copilot and Advent of Code

Visit AI assisted learning: Learning Rust with ChatGPT, Copilot and Advent of Code

I’m using this year’s Advent of Code to learn Rust—with the assistance of GitHub Copilot and OpenAI’s new ChatGPT.

[... 2,661 words]

Weeknotes: datasette-ephemeral-tables, datasette-export

Most of what I’ve been working on for the past week and a half is already documented:

[... 603 words]

Dec. 6, 2022

The primary problem is that while the answers which ChatGPT produces have a high rate of being incorrect, they typically look like they might be good and the answers are very easy to produce. There are also many people trying out ChatGPT to create answers, without the expertise or willingness to verify that the answer is correct prior to posting. Because such answers are so easy to produce, a large number of people are posting a lot of answers. The volume of these answers (thousands) and the fact that the answers often require a detailed read by someone with at least some subject matter expertise in order to determine that the answer is actually bad has effectively swamped our volunteer-based quality curation infrastructure.

StackOverflow Temporary policy: ChatGPT is banned

# 12:16 am / stackoverflow, ai, gpt-3, openai, generative-ai, chatgpt, llms

Understanding a Protocol. Andrew’s latest notes on how ActivityPub and Mastodon work under the hood, based on his extensive development work building out Takahē.

# 12:50 am / andrew-godwin, mastodon, activitypub

I Taught ChatGPT to Invent a Language (via) Dylan Black talks ChatGPT through the process of inventing a new language, with its own grammar. Really fun example of what happens when someone with a deep understanding of both the capabilities of language models and some other field (in this case linguistics) can achieve with an extended prompting session.

# 7:30 pm / linguistics, gpt-3, openai, prompt-engineering, generative-ai, chatgpt, llms

Dec. 7, 2022

talk.wasm (via) “Talk with an Artificial Intelligence in your browser”. Absolutely stunning demo which loads the Whisper speech recognition model (75MB) and a GPT-2 model (240MB) and executes them both in your browser via WebAssembly, then uses the Web Speech API to talk back to you. The result is a full speak-with-an-AI interface running entirely client-side. GPT-2 sadly mostly generates gibberish but the fact that this works at all is pretty astonishing.

# 10:52 pm / ai, webassembly, gpt-3, openai, generative-ai, whisper, speech-to-text

Introducing sqlite-loadable-rs: A framework for building SQLite Extensions in Rust. Alex Garcia has built a new Rust library for creating SQLite extensions—initially supporting custom scalar functions, virtual tables and table functions and with more types of extension coming soon. This looks very easy to use, partly because the documentation and examples are already delightfully thorough, especially for an initial release.

# 11:08 pm / sqlite, rust, alex-garcia

Dec. 9, 2022

TIL Finding uses of an API with the new GitHub Code Search — The [GitHub Code Search beta](https://docs.github.com/en/search-github/github-code-search) is really powerful - it allows advanced search - including regular expression matches - against every public repo on GitHub.

Data-driven performance optimization with Rust and Miri (via) Useful guide to some Rust performance optimization tools. Miri can be used to dump out a detailed JSON profile of a program which can then be opened and explored using the Chrome browser’s performance tool.

# 5:19 pm / chrome, performance, rust

TIL Reformatting text with Copilot — I wanted to write alt text for the following screenshot ([of this page]()), so I could include it in [this post on Mastodon](https://fedi.simonwillison.net/@simon/109484810256112309).

Dec. 10, 2022

Playing with ActivityPub (via) Tom MacWright describes his attempts to build the simplest possible ActivityPub publication—for a static site powered by Jekyll, where he used Netlify functions to handle incoming subscriptions (storing them in PlanetScale via their Deno API library) and wrote a script which loops through and notifies all of his subscriptions every time he publishes something new.

# 12:58 am / deno, tom-macwright, mastodon, activitypub

Release datasette-render-binary 0.3.1 — Datasette plugin for rendering binary data
Release datasette-secret-santa 0.1a0 — Run secret santa gift circles using Datasette

Dec. 11, 2022

Release datasette-secret-santa 0.1 — Run secret santa gift circles using Datasette

Over-engineering Secret Santa with Python cryptography and Datasette

We’re doing a family Secret Santa this year, and we needed a way to randomly assign people to each other without anyone knowing who was assigned to who.

[... 2,044 words]

Dec. 12, 2022

TIL Show files opened by pytest tests — My test suite for [Datasette](https://github.com/simonw/datasette) has grown so large that running the whole thing sometimes causes me to run out of file handles.
TIL Viewing GeoPackage data with SpatiaLite and Datasette — I managed to display polygons fom a GeoPackage database file today, using SpatiaLite and Datasette.
TIL SQLite can use more than one index for a query — I was trying to figure out if SQLite has the ability to use more than one index as part of executing a single query, or if it only ever picks a single index that it thinks will give the best performance.

Dec. 13, 2022

Release datasette-media 0.5.1 — Datasette plugin for serving media based on a SQL query

Dec. 14, 2022

TIL Comparing database rows before and after with SQLite JSON functions — Here's a trick I've been using to compare the rows in a table before and after I perform an operation against it. It works well for a few hundred (and maybe a few thousand) rows.

Dec. 15, 2022

Release datasette-ripgrep 0.8 — Web interface for searching your code using ripgrep, built as a Datasette plugin

2022 » December

MTWTFSS
   1234
567891011
12131415161718
19202122232425
262728293031