Querying the GitHub archive with the ClickHouse playground
2024-03-25
Via [this comment](https://news.ycombinator.com/item?id=34197637) on Hacker News I started exploring the [ClickHouse Playground](https://clickhouse...
654 words
|
3 minutes
Scroll page to form if there are errors
2024-03-25
For a Django application I'm working on ([this issue](https://github.com/simonw/django-sql-dashboard/issues/44)) I have a form that can be quite a ...
88 words
|
1 minute
DevOps Metrics and KPIs
2024-03-25
Day 85 of 90 Days of DevOps - DevOps Metrics and KPIs. Part of the Best Practices & Culture series covering essential DevOps concepts and hands-on practices.
433 words
|
2 minutes
Recovering data from AWS Lightsail using EC2
2024-03-25
I ran into problems with my AWS Lightsail instance: it exceeded the CPU burst quota for too long and was suspended, and I couldn't figure out how t...
359 words
|
2 minutes
Geopoly in SQLite
2024-03-24
I noticed this morning that one of my Datasette installations had the [Geopoly](https://www.sqlite.org/geopoly.html) SQLite extension enabled. I do...
1012 words
|
5 minutes
Counting SQLite virtual machine operations
2024-03-24
When SQLite executes a query, it does so by executing a sequence of virtual machine operations.
548 words
|
3 minutes
Continuous Learning Culture
2024-03-24
Day 84 of 90 Days of DevOps - Continuous Learning Culture. Part of the Best Practices & Culture series covering essential DevOps concepts and hands-on practices.
458 words
|
2 minutes
Bundling Python inside an Electron app
2024-03-23
For [Datasette Desktop](https://datasette.io/desktop) I chose to bundle a full version of Python 3.9 inside my `Datasette.app` application. I did t...
381 words
|
2 minutes
Documentation and Knowledge Sharing
2024-03-23
Day 83 of 90 Days of DevOps - Documentation and Knowledge Sharing. Part of the Best Practices & Culture series covering essential DevOps concepts and hands-on practices.
594 words
|
3 minutes
Piping echo to a file owned by root using sudo and tee
2024-03-23
I wanted to create a file with a shell one-liner where the file lived somewhere owned by root.
155 words
|
1 minute
Team Collaboration and Communication
2024-03-22
Day 82 of 90 Days of DevOps - Team Collaboration and Communication. Part of the Best Practices & Culture series covering essential DevOps concepts and hands-on practices.
493 words
|
2 minutes
DevOps Best Practices Compilation
2024-03-21
Day 81 of 90 Days of DevOps - DevOps Best Practices Compilation. Part of the Best Practices & Culture series covering essential DevOps concepts and hands-on practices.
446 words
|
2 minutes
Granting a PostgreSQL user read-only access to some tables
2024-03-21
I wanted to grant a PostgreSQL user (or role) read-only access to a specific list of tables.
183 words
|
1 minute
Using the undocumented Fly GraphQL API
2024-03-21
[Fly](https://fly.io/) has a GraphQL API which is used by some of their own tools - I found it while [browsing around their code](https://github.co...
456 words
|
2 minutes
Copy rich text to the clipboard
2024-03-20
I've been experimenting with a tool for generating the content for a weekly Substack newsletter by querying the Datasette API for my blog and assem...
433 words
|
2 minutes
WebAssembly and Future Tech
2024-03-20
Day 80 of 90 Days of DevOps - WebAssembly and Future Tech. Part of the Serverless & Advanced Topics series covering essential DevOps concepts and hands-on practices.
509 words
|
3 minutes
Installing and upgrading Datasette plugins with pipx
2024-03-20
If you installed `datasette` using `pipx install datasette` you can install additional plugins with `pipx inject` like so:
171 words
|
1 minute
Useful Markdown extensions in Python
2024-03-20
I wanted to render some markdown in Python but with the following extra features:
201 words
|
1 minute
Commit a file if it changed
2024-03-19
This recipe runs a Python script to update a README, then commits it back to the parent repo but only if it has changed:
302 words
|
2 minutes
Edge Computing and CDN
2024-03-19
Day 79 of 90 Days of DevOps - Edge Computing and CDN. Part of the Serverless & Advanced Topics series covering essential DevOps concepts and hands-on practices.
382 words
|
2 minutes
Running a Django and PostgreSQL development environment in GitHub Codespaces
2024-03-19
Helping people setup development environments (and fix them when they break) can be incredibly frustrating. I'm really excited about cloud-based de...
862 words
|
4 minutes
GraphQL and Modern APIs
2024-03-18
Day 78 of 90 Days of DevOps - GraphQL and Modern APIs. Part of the Serverless & Advanced Topics series covering essential DevOps concepts and hands-on practices.
629 words
|
3 minutes
Running tests against PostgreSQL in a service container
2024-03-18
I wanted to run some Django tests - using `pytest-django` and with Django configured to pick up the `DATABASE_URL` environment variable via [dj-dat...
233 words
|
1 minute
Rate limiting by IP using Cloudflare's rate limiting rules
2024-03-17
My [blog](https://simonwillison.net/) was showing poor performance, with some pages taking several seconds to load or even failing entirely.
498 words
|
2 minutes