Built my first Web Component and released it to npm! It lets you embed a basic Datasette table on any page:
<datasette table url="..."></datasette-table>
It's super early, mainly an exercise to learn how to write Web Components and release npm packages: github.com/simonw/dataset…
I learned a whole bunch while putting this together - first Web Component, first time using Vite, first time publishing to npm - here's my TIL write-up til.simonwillison.net/npm/publish-we…
The feature I most want from iOS is a search bar in the photo selection dialog that comes up when an app prompts me to pick one of my photos to share
My process for sharing a specific non-recent photo in a reply to a tweet right now is to go to the Photos app, find it with search, add it to an album called "Tweet", then navigate to that album from the "pick photo" dialog. It's really annoying!
Apparently this feature does exist for some people! Normally I'd suspect an A/B test but I thought Apple had more respect for us than that
I want the ability to "pause" HTTP traffic at a load balancer - so if you send a request it will look like it took a few extra seconds to respond, but actually the load balancer is holding it until the backend has been swapped out for a new version (for example) - what can I use?
Here's Braintree describing how they did that back in 2011 (original link is broken now but I have a quote on my blog) simonwillison.net/2011/Jun/30/br…
Presumably this is possible today using HAProxy or Traefik or some kind of nginx module... is there terminology for this that I should be searching for? "Pause traffic" doesn't appear to be a commonly used term
Trying to run two processes in a single Docker container on Cloud Run (Apache 2 and Datasette, to explore some reported bugs with mod_proxy) - urgh, this is so hard!
Found several recipes that work on my laptop but fail when I deploy them to Cloud Run github.com/simonw/dataset…
I'd love to figure this out because running two processes in the same container feels like a really useful trick to have in my pocket, but I may have to give up and run two separate containers instead - annoying when I'm just trying to provide a tiny interactive demo
I did get a new TIL out of this exercise - I figured out how to use the equivalent of "docker build --build-arg" with Google Cloud Build (you have to generate a cloudbuild.yml file and pass it to "gcloud builds submit --config") til.simonwillison.net/cloudrun/using…
I've had a bit of a breakthrough with this over the past couple of years: maintaining detailed progress notes in a GitHub issues comment thread has dropped my "getting back on track" time down to a fraction of what it was
The reason it takes 25 minutes to spin back up again is that you're holding a ton of stuff exclusively on your own memory - so write it down!
Something I've realized is that 90% of software engineering is research, not typing code - figuring out what the code needs to do, which APIs to use, how best to test it etc
So all of that research goes in issue comments. Here's my best recent example: github.com/simonw/s3-cred…
If I write a couple of KBs of data to the Biitcoin or Ethreum bloockchains that data still gets copied to every single active node, right?
Any estimates as to how much total disk space those 2KB take up worldwide?
Asking because evidently the idea of "storing data on the bloockchain" is a frequent point of confusion, I wonder if explaining how many copies that entails would help clarify things at all
In January 2021 there were an estimated 83,000 active full nodes, so presumably any data you write to the bloockchain gets duplicated 83,000 times? coindesk.com/tech/2021/01/2…
One of the biggest productivity tricks I'm using in the Datasette ecosystem is continuous deployment of live demos - every time I push to Datasette (+ a few other repos) it deploys a demo of latest main - it's fantastic for both catching bugs and linking to from issue comments
I've been working on the datasette-graphql plugin today and the live demo at datasette-graphql-demo.datasette.io/graphql helped me catch a bug where JS files were loading in the wrong order, breaking things - a problem that didn't occur on my laptop