Simon Willison’s Weblog

Subscribe

December 2020

52 posts: 5 entries, 12 links, 7 quotes, 28 beats

Dec. 13, 2020

Release sqlite-utils 3.1 — Python CLI utility and library for manipulating SQLite databases

datasette.io, an official project website for Datasette

Visit datasette.io, an official project website for Datasette

This week I launched datasette.io—the new official project website for Datasette.

[... 1,971 words]

Build v.s. buy: how billing models affect your internal culture

Something to pay attention to when making a build v.s. buy decision is the impact that billing models will have on your usage of a tool.

[... 410 words]

Dec. 14, 2020

Release datasette-publish-vercel 0.9 — Datasette plugin for publishing data using Vercel

Dec. 16, 2020

I get asked a lot about learning to code. Sure, if you can. It's fun. But the real action, the crux of things, is there in the database. Grab a tiny, free database like SQLite. Import a few million rows of data. Make them searchable. It's one of the most soothing activities known to humankind, taking big piles of messy data and massaging them into the rigid structure required of a relational database. It's true power.

Paul Ford

# 5:35 am / databases, paul-ford, sqlite

Release github-to-sqlite 2.8.2 — Save data from GitHub to a SQLite database
Release dogsheep-beta 0.10 — Build a search index across content from multiple SQLite database tables and run faceted searches against it using Datasette

Dec. 17, 2020

At GitHub, we want to protect developer privacy, and we find cookie banners quite irritating, so we decided to look for a solution. After a brief search, we found one: just don’t use any non-essential cookies. Pretty simple, really. 🤔

So, we have removed all non-essential cookies from GitHub, and visiting our website does not send any information to third-party analytics services.

Nat Friedman

# 7:44 pm / cookies, github, privacy

Commits are snapshots, not diffs (via) Useful, clearly explained revision of some Git fundamentals.

# 10:01 pm / git, github

Dec. 19, 2020

Release dogsheep-beta 0.10.1 — Build a search index across content from multiple SQLite database tables and run faceted searches against it using Datasette

How Shopify Uses WebAssembly Outside of the Browser (via) I’m fascinated by applications of WebAssembly outside the browser. As a Python programmer I’m excited to see native code libraries getting compiled to WASM in a way that lets me call them from Python code via a bridge, but the other interesting application is executing untrusted code in a sandbox.

Shopify are doing exactly that—they are building a kind-of plugin mechanism where partner code compiled to WASM runs inside their architecture using Fastly’s Lucet. The performance numbers are in the same ballpark as native code.

Also interesting: they’re recommending AssemblyScript, a TypeScript-style language designed to compile directly to WASM without needing any additional interpreter support, as required by dynamic languages such as JavaScript, Python or Ruby.

# 4:46 pm / performance, security, webassembly

Building a search engine for datasette.io

Visit Building a search engine for datasette.io

This week I added a search engine to datasette.io, using the search indexing tool I’ve been building for Dogsheep.

[... 1,391 words]

Dec. 23, 2020

Dec. 27, 2020

Weeknotes: Datasette internals

Visit Weeknotes: Datasette internals

I’ve been working on some fundamental changes to Datasette’s internal workings—they’re not quite ready for a release yet, but they’re shaping up in an interesting direction.

[... 760 words]

Dec. 28, 2020

While copywriting is used to persuade a user to take a certain action, technical writing exists to support the user and remove barriers to getting something done. Good technical writing is hard because writers must get straight to the point without losing or confusing readers.

Stephanie Morillo

# 3:58 pm / copywriting, writing

TIL Replicating SQLite with rqlite — I tried out [rqlite](https://github.com/rqlite/rqlite) today, a "lightweight, distributed relational database, which uses SQLite as its storage engine". It uses the Raft consensus algorithm to allow multiple SQLite instances to elect a leader and replicate changes amongst themselves.
Release datasette-publish-vercel 0.9.1 — Datasette plugin for publishing data using Vercel

Replicating SQLite with rqlite (via) I’ve been trying out rqlite, a “lightweight, distributed relational database, which uses SQLite as its storage engine”. It’s written in Go and uses the Raft consensus algorithm to allow a cluster of nodes to elect a leader and replicate SQLite statements between them. By default it uses in-memory SQLite databases with an on-disk Raft replication log—here are my notes on running it in “on disk” mode as a way to run multiple Datasette processes against replicated SQLite database files.

# 7:51 pm / replication, sqlite, datasette

Dec. 29, 2020

TIL Relinquishing control in Python asyncio — `asyncio` in Python is a form of co-operative multitasking, where everything runs in a single thread but asynchronous tasks can yield to other tasks to allow them to execute.

You know Google Maps? What I do is, like, build little pieces of Google Maps over and over for people who need them but can’t just use Google Maps because they’re not allowed to for some reason, or another.

Joe Morrison

# 8:32 pm / google-maps

Dec. 30, 2020

TIL Using Jest without a package.json — I wanted to try out [Jest](https://jestjs.io/) for writing JavaScript unit tests, in a project that wasn't set up with `package.json` and other NPM related things.

Dec. 31, 2020

TIL Using Prettier to check JavaScript code style in GitHub Actions — I [decided](https://github.com/simonw/datasette/issues/1166) to adopt [Prettier](https://prettier.io/) as the JavaScript code style for Datasette, based on my success with [Black](https://github.com/psf/black) for Python code.

2020 » December

MTWTFSS
 123456
78910111213
14151617181920
21222324252627
28293031