Comprehensive Guide to Service Metrics Exporters - Implementation, Validation, and Monitoring
2024-07-10
A detailed guide to implementing, validating, and troubleshooting metrics exporters for monitoring service performance, with practical examples using both built-in exporters and custom Python implementations.
2178 words
|
11 minutes
Protocols in Python
2024-07-10
[Datasette](https://datasette.io/) currently has a few API internals that return `sqlite3.Row` objects. I was thinking about how this might work in...
442 words
|
2 minutes
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
Creating a minimal SpatiaLite database with Python
2024-07-08
When writing a test for [datasette-leaflet-freedraw](https://github.com/simonw/datasette-leaflet-freedraw) I realized I didn't have a simple tiny r...
116 words
|
1 minute
Using cog to update --help in a Markdown README file
2024-07-08
My [csvs-to-sqlite README](https://github.com/simonw/csvs-to-sqlite/blob/main/README.md) includes a section that shows the output of the `csvs-to-s...
519 words
|
3 minutes
Exporting and editing a Twitter Spaces recording
2024-07-06
I hosted [a Twitter Spaces conversation](https://twitter.com/simonw/status/1504604448202518529) the other day. The recording is only available for ...
663 words
|
3 minutes
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
Trying out cr-sqlite on macOS
2024-07-04
[cr-sqlite](https://github.com/vlcn-io/cr-sqlite) is fascinating. It's a loadable SQLite extension by Matt Wonlaw that "allows merging different SQ...
1962 words
|
10 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
Compiling the SQLite spellfix.c module on macOS
2024-07-02
I wanted to browse a backup copy of my Plex database, which is a SQLite file. I tried this:
179 words
|
1 minute
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
Check spelling using codespell
2024-07-02
Today I discovered [codespell](https://github.com/codespell-project/codespell/) via [this Rich commit](https://github.com/willmcgugan/rich/commit/9...
375 words
|
2 minutes
The pdb interact command
2024-07-01
Today [Carlton told me](https://twitter.com/carltongibson/status/1587155176590385159) about the [interact command](https://docs.python.org/3.10/lib...
203 words
|
1 minute
Upgrading packages with npm
2024-06-30
There's a new version of [Vite](https://vitejs.dev/) out (3.0) and I wanted to upgrade my [datasette-table](https://github.com/simonw/datasette-tab...
340 words
|
2 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
Async fixtures with pytest-asyncio
2024-06-29
I wanted to use a fixture with `pytest-asyncio` that was itsef as `async def` function, so that it could execute `await` statements.
136 words
|
1 minute
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
Closest locations to a point
2024-06-29
Here's a PostgreSQL SQL query that returns the closest locations to a point, based on a brute-force approach where the database calculates the dist...
249 words
|
1 minute
Installing flash-attn without compiling it
2024-06-29
If you ever run into instructions that tell you to do this:
306 words
|
2 minutes
Tracking SQLite table history using a JSON audit log
2024-06-29
I continue to collect ways of tracking the history of a table of data stored in SQLite - see [sqlite-history](https://simonwillison.net/2023/Apr/15...
1290 words
|
6 minutes