Bulk fetching repository details with the GitHub GraphQL API
2024-07-09
I wanted to be able to fetch details of a list of different repositories from the GitHub GraphQL API by name in a single operation.
134 words
|
1 minute
Deploying Backstage on Kubernetes - A Comprehensive Guide
2024-07-05
A detailed, step-by-step guide to deploying Spotify's Backstage developer portal on Kubernetes using Docker, Terraform, and best practices for production environments.
2507 words
|
13 minutes
Using the Chrome DevTools console as a REPL for an Electron app
2024-07-03
I figured out how to use the Chrome DevTools to execute JavaScript interactively inside the Electron main process. I always like having a REPL for ...
167 words
|
1 minute
Building a blog in Django
2024-07-03
We launched the [Datasette Cloud blog](https://www.datasette.cloud/blog/) today. The Datasette Cloud site itself is a Django app - it uses Django a...
1361 words
|
7 minutes
Run pytest against a specific Python version using Docker
2024-07-02
For [datasette issue #1802](https://github.com/simonw/datasette/issues/1802) I needed to run my `pytest` test suite using a specific version of Pyt...
321 words
|
2 minutes
Running OCR against a PDF file with AWS Textract
2024-07-02
[Textract](https://aws.amazon.com/textract/) is the AWS OCR API. It's very good - I've fed it hand-written notes from the 1890s and it read them be...
871 words
|
4 minutes
Automating OpenVPN GUI Connections on Windows Startup - A Complete Guide
2024-06-30
A comprehensive guide to setting up and configuring OpenVPN GUI to automatically connect on Windows startup, including Task Scheduler configuration, troubleshooting, and security best practices.
1312 words
|
7 minutes
Writing tests for the Django admin with pytest-django
2024-06-29
I'm using [pytest-django](https://pytest-django.readthedocs.io/) on a project and I wanted to write a test for a Django admin create form submissio...
211 words
|
1 minute
Using curl to run GraphQL queries from the command line
2024-06-29
I wanted to run a query against the GitHub GraphQL API using `curl` on the command line, while keeping the query itself as readable as possible. He...
809 words
|
4 minutes
Redirecting a whole domain with Cloudflare
2024-06-29
I had to run this site on `til.simonwillison.org` for 24 hours due to a domain registration mistake I made.
164 words
|
1 minute
Managing Podman Containers with Systemd - Traditional Methods vs. Quadlet
2024-06-28
A comprehensive guide to integrating Podman containers with systemd, comparing the traditional service file approach with the modern Quadlet method, with detailed examples and best practices.
1644 words
|
8 minutes
Implementing a "copy to clipboard" button
2024-06-28
I had to figure this out while building [datasette-copyable](https://github.com/simonw/datasette-copyable/) - demo [here](https://covid-19.datasett...
194 words
|
1 minute
Converting no-decimal-point latitudes and longitudes using jq
2024-06-25
I had some data with weird co-ordinates in it:
236 words
|
1 minute
Testing cookiecutter templates with pytest
2024-06-25
I added some unit tests to my [datasette-plugin](https://github.com/simonw/datasette-plugin) cookiecutter template today, since the latest features...
167 words
|
1 minute
Paginating through the GitHub GraphQL API with Python
2024-06-25
(See also [Building a self-updating profile README for GitHub](https://simonwillison.net/2020/Jul/10/self-updating-profile-readme/) on my blog)
343 words
|
2 minutes
Managing Multiple GitHub Accounts on a Single Machine - A Comprehensive Guide
2024-06-25
A step-by-step guide to effectively setting up and managing multiple GitHub accounts on a single machine using SSH keys, custom hosts, and repository-specific configurations.
1376 words
|
7 minutes
How to create a tarball of a git repository using "git archive"
2024-06-23
I figured this out in [a Gist in 2016](https://gist.github.com/simonw/a44af92b4b255981161eacc304417368) which has attracted a bunch of comments ove...
189 words
|
1 minute
Editing an iPhone home screen using macOS
2024-06-23
My iPhone has a weird bug: I can no longer re-arrange the app icons on the home screen (or in the dock) by dragging them around on my phone. It let...
224 words
|
1 minute
Publishing to a public Google Cloud bucket with gsutil
2024-06-22
I decided to publish static CSV files to accompany my https://cdc-vaccination-history.datasette.io/ project, using a Google Cloud bucket (see [cdc-...
142 words
|
1 minute
Deploying CoreDNS and StepCA on CoreOS using Podman Quadlet
2024-06-22
A comprehensive guide to deploying and managing CoreDNS and StepCA on Fedora CoreOS using Podman Quadlet for systemd integration, providing robust DNS and certificate management services.
1829 words
|
9 minutes
Conditionally creating directories in cookiecutter
2024-06-21
I wanted my [datasette-plugin](https://github.com/simonw/datasette-plugin) cookiecutter template to create empty `static` and `templates` directori...
103 words
|
1 minute
Tailing Google Cloud Run request logs and importing them into SQLite
2024-06-21
The `gcloud` CLI tool has [the alpha ability to tail log files](https://cloud.google.com/logging/docs/reference/tools/gcloud-logging#live-tailing) ...
849 words
|
4 minutes
Lazy loading images in HTML
2024-06-21
[Most modern browsers](https://caniuse.com/loading-lazy-attr) now include support for the `loading="lazy"` image attribute, which causes images not...
150 words
|
1 minute
Upgrading Homebrew and avoiding the failed to verify attestation error
2024-06-20
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 unsupp...
430 words
|
2 minutes