Email or username:

Password:

Forgot your password?
120 posts total
Simon Willison

I like this idea, but I worry about accessibility

I just tried using the Mobile Safari “read this page” feature and it skipped right over the ⁂ symbol as if it wasn’t even there
typo.social/@FediverseSymbol/1

James Scholes

@simon My screen reader (NVDA) announces it, but it's four syllables so might get a bit tedious. No idea about other SRs or how it manifests in braille.

Simon Willison

@FediverseSymbol maybe this is an Apple bug? At least one screen reader, NVDA, pronounces the symbol correctly as “Asterism” dragonscave.space/@jscholes/11

Fediverse Symbol ⁂

@simon Ah, that’s annoying, would have expected “asterism” or some description. Depending on the usage, the symbol might be decorative and that’s maybe okay. But we need to think about cases where it convey meaning.

Simon Willison

Awesome new Anthropic API feature: you can now enable CORS support with a (currently undocumented) anthropic-dangerous-direct-browser-access: true request header - which means you can call their API directly from browser JavaScript now!

My notes here: simonwillison.net/2024/Aug/23/

Simon Willison

I used it to upgrade my fun little Haiku app, which uses your webcam to take a photo and then writes a Haiku about it using the Claude Haiku model

tools.simonwillison.net/haiku

Simon Willison

Armin’s take on what happens if Astral turn out to be a bad steward of uv is interesting: “[…] having seen the code and what uv is doing, even in the worst possible future this is a very forkable and maintainable thing. I believe that even in case Astral shuts down or were to do something incredibly dodgy licensing wise, the community would be better off than before uv existed.”
hachyderm.io/@mitsuhiko/112999

Andrea Grandi 🦕

@simon what if uv is the nose and nobody is looking at the Moon yet?

I'm pretty sure their next product will be a PyPi alternative. Then they will add proprietary stuff. This will fragment the market and devs/companies will have to release Python packages to two places instead of one. Then it will become paid only etc... (one can only imagine the possibilities).

I'm not saying this will 100% happens, but it's definitely possible.

uv alone, is not an issue.

Simon Willison

Wow there is a LOT of stuff in the new release of uv - lockfiles, a pipx alternative, Poetry-style project management, even the ability to manage and download standalone Python versions directly

It's taking me a while to dig through all of this astral.sh/blog/uv-unified-pyth

Show previous comments
Paul Everitt

@simon So much to unpack. As a minor-minor-nice-to-have (but really wish Python would settle on something here)...scaffold/template support: github.com/astral-sh/uv/issues

Simon Willison

New prompt injection data exfiltration attack today, this time against Slack and Slack AI

It's a bit of a subtle one, but the net effect is that if you can get your malicious tokens into a Slack you can get their AI bot to trick users into exfiltrating private data by clicking on links

My notes here: simonwillison.net/2024/Aug/20/

Original report by PromptArmor here: promptarmor.substack.com/p/dat

Simon Willison

i quit my job just over 5 years ago to explain computer things (jvns.ca/blog/2019/09/13/a-year). I had no idea if I would like being my own boss but ultimately it's been really cool and I'm happy to have this weird job writing zines about computers.

("I’m not planning to hire employees or anything” turned out to not be an accurate prediction, now I work with 2 part-time employees who I don't know how I would manage without)

Show previous comments
Ron Jeffries

@b0rk
Watching from afar, I admire you for trying it, and admire you more for the success you are finding. Well done!

Julia Evans

someone asked me recently how long it took me to get used to the rhythm of working for myself and I said “uh, maybe 3 years?”. I thought working for myself would be hard to adjust to and it was, but I'm happy I did it anyway

Simon Willison

My notes on trying out whisperfile, the new cross-platform executable packaging for the Whisper speech-to-text model, released as part of the latest update to llamafile
simonwillison.net/2024/Aug/19/

Simon Willison

Fixed a bug in my @covidsewage bot caused by a change to the underlying website - details on the bug fix here: github.com/simonw/covidsewage-

It now uses this nested shot-scraper monstrosity which delights me greatly:

shot-scraper -o /tmp/covid.png $(
shot-scraper javascript \
$URL \
'document.querySelector("iframe").src' \
-b firefox \
--user-agent 'Mozilla/5.0 (Macintosh...' \
--raw
) --wait 5000 -b firefox --retina

fedi.simonwillison.net/@covids

Fixed a bug in my @covidsewage bot caused by a change to the underlying website - details on the bug fix here: github.com/simonw/covidsewage-

It now uses this nested shot-scraper monstrosity which delights me greatly:

shot-scraper -o /tmp/covid.png $(
shot-scraper javascript \
$URL \
'document.querySelector("iframe").src' \
-b firefox \
--user-agent 'Mozilla/5.0 (Macintosh...' \
--raw
) --wait 5000 -b firefox --retina

Simon Willison

Everyone who builds web applications should read the Reckoning series by @slightlyoff infrequently.org/series/reckon

My own notes here, but you should work through the entire thing: simonwillison.net/2024/Aug/18/

Seriously, take a look at the case-study in which the California food stamps signup site takes 29.5s to become interactive on a slow rural mobile connection, and tell me we don't urgently need to do better! infrequently.org/2024/08/objec

Show previous comments
Bill Zaumen

@simon @slightlyoff It is not just javascript. In spite of a high-bandwidth connection, I've been getting very bad response loading web pages recently. After diagnosing the problem, I found that there was 76% to 91% packet loss on DNS requests to the servers my ISP configures! I'm about to file a service request, but in the meantime, I changed DNS servers to publicly available ones.

What made it worse was the number of DNS requests now needed to load a web page.

Tursilion

@simon @slightlyoff
Nice to see someone writing about this. I was working in China for 18 months, and the Great Firewall and large numbers of people meant that internet back to the states was very, very slow and very lossy every day. Most US sites were nearly unusable - I was able to get much of the information I needed only by using download managers that would fetch the data with all the needed retries, and viewing it offline. At the time I wondered just how badly people even in the US with slower internet could even cope.

@simon @slightlyoff
Nice to see someone writing about this. I was working in China for 18 months, and the Great Firewall and large numbers of people meant that internet back to the states was very, very slow and very lossy every day. Most US sites were nearly unusable - I was able to get much of the information I needed only by using download managers that would fetch the data with all the needed retries, and viewing it offline. At the time I wondered just how badly people even in the US with slower...

razze

@simon @slightlyoff I don't think saying Javascript is the cause of this is honest or helpful.

Simon Willison

I built a fun new Datasette plugin: datasette-checkbox, which looks for columns on a table called is_* or has_* or should_* and upgrades them to interactive checkboxes, provided the current user has update-row permission for that table simonwillison.net/2024/Aug/16/

Casey Gollan

@simon I love that you share your transcripts. So cool to see the behind the scenes. 🙌 Eventually I wonder if we’ll land on a standardized/automated way to attach prompt transcripts to commits as a kind of provenance artifact.

Simon Willison

Interesting notes from Paul Gauthier on how asking an LLM to return code wrapped in a JSON object can result in a quality reduction compared to asking for that code in a less complex format such as fenced code Markdown blocks aider.chat/2024/08/14/code-in-

(Cross-posted from my blog: simonwillison.net/2024/Aug/16/)

Martin Owens :inkscape:

@simon

Format encoding robs the network of capacity I said. Better to write encoder/decoders I said. Just because it can write #svg don't mean it should I said. 😉

Good to have data though.

This might be interesting for you @diacritica

Simon Willison

I have a Mac. If I want to test something on the kind of Windows machine that developers who use Windows would use (so I guess Windows 11 and not Windows Server?) what are my best options for doing that? Any good online providers where I can spend a few dollars on the ability to remote-desktop into a Windows machine?

I tried using Azure for this earlier and got to the bit with this checkbox and noped right out of there:

Show previous comments
Daniel

@simon Get a Windows 11 key off eBay, then click that checkbox…

Brian Reiter

@simon you could try a Windows 365 Cloud PC which corporations definitely do use but they are idealized and cleaned up Windows images.

I do use Windows 11 on VMWare Fusion for building projects for Windows with Visual Studio but you will get the ARM version that almost nobody uses outside of that scenario. I also have an Intel Mac with VMWare but I rarely need to fall back to that for my use case.

Simon Willison

Have you ever used SpatiaLite on Windows? If so, how did you install it?

The MS Windows Binaries on gaia-gis.it/gaia-sins/ give you the options in the first screenshot, linking to the files in the second screenshot

Which of mod spatialite-5.1.0-win-×86.7z or spatialite-tools-5.1.0a-win-x86.7z did you download, what software did you use to decompress it and what did you do with the files inside those .7z files?

Asking because I want to bulk up Datasette's SpatiaLite installation documentation

Have you ever used SpatiaLite on Windows? If so, how did you install it?

The MS Windows Binaries on gaia-gis.it/gaia-sins/ give you the options in the first screenshot, linking to the files in the second screenshot

Which of mod spatialite-5.1.0-win-×86.7z or spatialite-tools-5.1.0a-win-x86.7z did you download, what software did you use to decompress it and what did you do with the files inside those .7z files?

Show previous comments
Simon Willison

Giving this another bump: I still want to hear from Windows users who have successfully installed SpatiaLite

As far as I can tell you download the mod_spaitalite 7z file from gaia-gis.it/gaia-sins/windows- then place its content somewhere on your PATH - but I’m stuck on that step, what’s the recommended way of putting files on the PATH?

I’ve found instructions that involve right clicking on things, but I’m running windows-latest in GitHub Actions so I need to do it entirely through powershell or bash

Giving this another bump: I still want to hear from Windows users who have successfully installed SpatiaLite

As far as I can tell you download the mod_spaitalite 7z file from gaia-gis.it/gaia-sins/windows- then place its content somewhere on your PATH - but I’m stuck on that step, what’s the recommended way of putting files on the PATH?

Alex Hudson

@simon in theory, winget should be able to handle a .zip install and get the path right (I think it installs to user profile by default). It doesn't handle .7z, but it knows how to install 7zip and in principle converting the file format should be straightforward... I don't know if you need to write a local manifest though, or whether it can figure it all out itself.

Simon Willison

Miscellaneous thought about Python development environment usability: maybe a good focus could be ensuring that developers don’t have to understand the concept of their $PATH in order to debug problems with their environment

I’m not sure how that could be achieved, but it’s an interesting angle to think about the problem

Show previous comments
Jaanus Kase

@simon not only Python

I use other tools, and $PATH is equally annoying there too

Carlton Gibson 🇪🇺

@simon I know @wsvincent has spent a lot of time battling this for his Django for Beginners book. (“First learn some esoterica…”, it feels like.)

capotej

@simon respectfully disagree: $PATH is such a fundamental part to how computers execute programs, we should be educating here, not abstracting

Simon Willison

Neat, succinct example of using github.com/jxnl/instructor and GPT-4o to extract opening hours from a photo of a shop window sign
mastodon.social/@lemonodor/112

Simon Willison

New feature from Anthropic today: you can ask their Claude API to cache parts of your prompt, resulting in a large price discount and performance boost provided your app reuses the same prompt at least once every five minutes.

Blogged a few notes here: simonwillison.net/2024/Aug/14/

Alex Bradbury

@simon This is an exciting evolution! DeepSeek started offering this as well in the last couple of weeks, though there's no cost for storage and you just get a lower charge based on any hits in the cache platform.deepseek.com/api-docs This has advantages, but of course leaves your cache hit rate dependent on how long DeepSeek choose to keep the cache around.

For individual personal usage I'd probably prefer the DeepSeek "do your best and don't make me think about it" pricing model.

@simon This is an exciting evolution! DeepSeek started offering this as well in the last couple of weeks, though there's no cost for storage and you just get a lower charge based on any hits in the cache platform.deepseek.com/api-docs This has advantages, but of course leaves your cache hit rate dependent on how long DeepSeek choose to keep the cache around.

Simon Willison

Some notes on mlx-whisper - it's now really easy to run transcriptions through an Apple Silicon (and GPU) optimized Whisper model using Python on macOS simonwillison.net/2024/Aug/13/

Matt Campbell

@simon Nitpick: Whisper is speech-to-text. Text-to-speech is speech synthesis.

Saurabh

@simon Do you know how this compares to whisper.cpp (which also uses the GPU on Macs)?

Bill Mill

@simon I wanted to know how the speed compares to `whisper.cpp`, since the openAI whisper is very slow on my mac, so I ran a test: notes.billmill.org/link_blog/2

mlx ran almost 3x faster than whisper.cpp with a model of the same size, and both were using the GPU. I would love to know why it's so much faster!

Simon Willison

@simon I've been using the new Datasette 1.0 JSON Write API for a small labeling website and I'm amazed by its simplicity. Thanks for adding it!
A brief description of my usage: madflex.de/using-datasette-jso

Simon Willison

Sent out the latest edition of my newsletter (a week of content from my blog repackaged as en email): simonw.substack.com/p/django-h

I experimented with using Claude to generate this table of contents summary, but ended up hand-editing almost every line of that before I hit send

Paula

@simon I find LLMs useful for assisting with a few things, but like you’re saying, any suggestion that they can do this on their own is utterly misguided

Go Up