And it looks like one of the killer apps of WebAssembly is providing 100% safe and reliable teaching environments for people who are just getting started learning complex technologies
Watching webvm.io load is interesting - it only needs loads 5.65MB to get to the interactive bash prompt, but any time you run other commands it fetches more data as it reads from the remote read-only filesystem
If you're interested in more examples of interesting applications of WebAssembly my blog now has 16 items under the WebAssembly tag, going back to 2018 simonwillison.net/tags/webassemb…
• • •
Missing some Tweet in this thread? You can try to
force a refresh
One of the biggest productivity improvements I ever made to my blogging was when I gave up on my desire to finish everything with a sparkling conclusion that ties together the whole post
Now I embrace abruptly ending when I've run out of things to say instead
I've been solving so many documentation problems with @nedbat's cog tool recently - it's fantastic for keeping documentation automatically up-to-date, in Markdown or rST)
And here's how it works - I have a cog code block embedded in the .rst file which iterates through the commands and calls --help on each one, then writes the output to the page: github.com/simonw/sqlite-…
Final trick: my GitHub Actions test.yml file calls "cog --check docs/*.rst" to confirm that the cog scripts have been run
If the test fails, I can run "cog -r docs/*.rst" to execute them, then commit the result. github.com/simonw/sqlite-…
What’s new in sqlite-utils - annotated release notes for my SQLite Python utility library and CLI tool, v3.20 and v3.21 simonwillison.net/2022/Jan/11/sq…
A bunch of powerful new features in these releases.
The new --convert option to "sqlite-utils insert" lets you run a Python conversion function against data you are importing from JSON or CSV - and --lines lets you import raw lines of code (e.g. from log files) too
Combining the new --text option with --convert lets you load in a full unstructured/semi-structured file in one go and use a Python fragment to parse it into a list of dictionaries which then get inserted into a table
If you are using it as a CLI tool I want it to to be guaranteed to work - if you install it you should get known tested versions of those dependencies
But... if you are using it as a library I want to let you make your own decision about those dependencies - if you want to use a more recent release of one of them you should be able to do that
If I explicitly pin to tested versions will that break your ability to upgrade them?
"Numbers as large as 64-bits can cause issues with programming languages that represent integers with fewer than 64-bits. An example of this is JavaScript, where integers are limited to 53-bits in size."