Using DuckDB in Python to access Parquet data
2024-08-20
Did a quick experiment with [DuckDB](https://duckdb.org/) today, inspired by the [bmschmidt/hathi-binary](https://github.com/bmschmidt/hathi-binary...
291 words
|
1 minute
Set environment variables for all steps in a GitHub Action
2024-08-19
From [this example](https://github.com/GoogleCloudPlatform/github-actions/blob/20c294aabd5331f9f7b8a26e6075d41c31ce5e0d/example-workflows/cloud-run...
89 words
|
1 minute
Simplest possible OAuth authentication with Auth0
2024-08-19
[Auth0](https://auth0.com/) provides an authentication API which you can use to avoid having to deal with user accounts in your own web application.
576 words
|
3 minutes
Allowing a container in Docker Desktop for Mac to talk to a PostgreSQL server on the host machine
2024-08-18
I like using [Postgres.app](https://postgresapp.com/) to run PostgreSQL on my macOS laptop. I use it for a bunch of different projects.
290 words
|
1 minute
Using the GitHub Actions cache with npx and no package.json
2024-08-18
Some of my repositories have GitHub Actions workflows that execute commands using `npx`, for example my [graphql-scraper](https://github.com/simonw...
263 words
|
1 minute
Athena error: The specified key does not exist
2024-08-17
I was trying to run Athena queries against compressed JSON log files stored in an S3 bucket.
267 words
|
1 minute
Testing the Access-Control-Max-Age CORS header
2024-08-16
Today I noticed that [Datasette](https://datasette.io/) wasn't serving a `Access-Control-Max-Age` header.
543 words
|
3 minutes
Serving MBTiles with datasette-media
2024-08-15
The [MBTiles](https://github.com/mapbox/mbtiles-spec) format uses SQLite to bundle map tiles for use with libraries such as Leaflet.
160 words
|
1 minute
Adding a CORS policy to an S3 bucket
2024-08-14
Amazon S3 buckets that are configured to work as public websites can support CORS, allowing assets such as JavaScript modules to be loaded by JavaS...
550 words
|
3 minutes
Ensure labels exist in a GitHub repository
2024-08-13
I wanted to ensure that when [this template repository](https://github.com/simonw/action-transcription) was used to create a new repo that repo wou...
161 words
|
1 minute
Registering new Datasette plugin hooks by defining them in other plugins
2024-08-13
I'm experimenting with a Datasette plugin that itself adds new plugin hooks which other plugins can then interact with.
150 words
|
1 minute
Configuring auto-update for an Electron app
2024-08-11
This is _almost_ really simple. I used [electron/update-electron-app](https://github.com/electron/update-electron-app) for it, the instructions for...
391 words
|
2 minutes
Setting cache-control: max-age=31536000 with a Cloudflare Transform Rule
2024-08-06
I ran https://simonwillison.net/ through [PageSpeed Insights](https://pagespeed.web.dev/) and it warned me that my static assets were not being ser...
646 words
|
3 minutes
Redirecting a domain using Cloudflare Pages
2024-08-05
I wanted to redirect https://global-power-plants.datasettes.com/ to https://datasette.io/ - I decided to spin up a Cloudflare Pages site to do the ...
682 words
|
3 minutes
Limited JSON API for Google searches using Programmable Search Engine
2024-08-05
I figured out how to use a JSON API to run a very limited Google search today in a legit, non-screen-scraper way.
538 words
|
3 minutes
Loading lit from Skypack
2024-08-05
[Lit 2](https://lit.dev/blog/2021-09-21-announcing-lit-2/) stable was released today, offering a tiny, feature-full framework for constructing web ...
108 words
|
1 minute
Bulk editing status in GitHub Projects
2024-08-05
GitHub Projects has a mechanism for bulk updating the status of items, but it's pretty difficult to figure out how to do it.
137 words
|
1 minute
Writing an Azure Function that serves all traffic to a subdomain
2024-08-04
[Azure Functions](https://docs.microsoft.com/en-us/azure/azure-functions/) default to serving traffic from a path like `/api/FunctionName` - for ex...
157 words
|
1 minute
Remember to commit when using datasette.execute_write_fn()
2024-08-04
I was writing some code for [datasette-auth-tokens](https://github.com/simonw/datasette-auth-tokens) that used [db.execute_write_fn()](https://docs...
190 words
|
1 minute
GitHub Pages: The Missing Manual
2024-08-04
[GitHub Pages](https://pages.github.com/) is an excellent free hosting platform, but the documentation is missing out on some crucial details.
519 words
|
3 minutes
Setting up a custom subdomain for a GitHub Pages site
2024-08-03
This is so much easier than I was expecting it to be.
246 words
|
1 minute
Using SQL with GDAL
2024-08-03
Inspired [by Brad Neuberg](https://twitter.com/bradneuberg/status/1633875601789681666) I decided to take a look at the SQL features in the GDAL fam...
985 words
|
5 minutes
Removing a git commit and force pushing to remove it from history
2024-08-03
I accidentally triggered a commit which added a big chunk of unwanted data to my repository. I didn't want this to stick around in the history fore...
97 words
|
1 minute
How to get Cloudflare to cache HTML
2024-08-02
To my surprise, if you setup a [Cloudflare](https://www.cloudflare.com/) caching proxy in front of a website it won't cache HTML pages by default, ...
227 words
|
1 minute