soft-shell crabvietnam crab exporter

Simon Willison’s Weblog

Newsletter

Posts in 2020

Filters: Year: 2020 × Sorted by date

None
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.
None
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.

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

# 29th December 2020, 8:32 pm / google-maps

None
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.

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.

# 28th December 2020, 7:51 pm / replication, sqlite, datasette

Release datasette-publish-vercel 0.9.1 — Datasette plugin for publishing data using Vercel
None
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.

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

# 28th December 2020, 3:58 pm / copywriting, writing

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]

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]

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.

# 19th December 2020, 4:46 pm / performance, security, webassembly, shopify

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

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

# 17th December 2020, 10:01 pm / git, github

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

# 17th December 2020, 7:44 pm / cookies, github, privacy

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

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

# 16th December 2020, 5:35 am / databases, paul-ford, sqlite

Sighting 1:58 PM – 4:02 PM — Red-tailed Hawk, American White Pelican, Osprey, in Santa Clara County, US, CA
Red-tailed Hawk
Red-tailed Hawk
Red-tailed Hawk
Red-tailed Hawk
Red-tailed Hawk
Red-tailed Hawk
American White Pelican
American White Pelican
Osprey
Osprey
Release datasette-publish-vercel 0.9 — Datasette plugin for publishing data using Vercel

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]

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]

Release sqlite-utils 3.1 — Python CLI utility and library for manipulating SQLite databases
Sighting 4:09 PM — Great Blue Heron, in Crissy Field including Fort Point, CA, US
Great Blue Heron
Great Blue Heron
Release datasette-publish-fly 1.0.1 — Datasette plugin for publishing data using Fly
None
TIL Skipping CSV rows with odd numbers of quotes using ripgrep — I'm working with several huge CSV files - over 5 million rows total - and I ran into a problem: it turned out there were a few lines in those files that imported incorrectly because they were not correctly escaped.

If you are pre-product market fit it's probably too early to think about event based analytics. If you have a small number of users and are able to talk with all of them, you will get much more meaningful data getting to know them than if you were to set up product analytics. You probably don't have enough users to get meaningful data from product analytics anyways.

— Michael Malis

# 11th December 2020, 6:39 am / analytics, startups

Release datasette-auth-passwords 0.3.3 — Datasette plugin for authentication using passwords

datasette.io (via) Datasette finally has an official project website, three years after the first release of the software. I built it using Datasette, with custom templates to define the various pages. The site includes news, latest releases, example sites and a new searchable plugin directory.

# 11th December 2020, 4:11 am / projects, datasette

Release datasette 0.53 — An open source multi-tool for exploring and publishing data