Email or username:

Password:

Forgot your password?
248 posts total
Simon Willison

I really enjoyed this interview with John Oliver about the process involved in producing Last Week Tonight youtube.com/watch?v=Q9kNMJ8Sgu

"Those jokes have no structural integrity if the facts underneath them are bullshit"

Show previous comments
Maria Langer | 📝 🎬 ⚒️🛥️

@simon @feoh Great interview. I was wondering what happened to Lulu Garcia-Navarro from @NPR. Glad she landed on her feet somewhere that seems like a good match for her.

Brian Dear

@simon

That was a great conversation.

Glad Oliver is still loving making his show, and hasn't fallen into the exhaustion that Jon Stewart fell into w/ Daily Show.

Nik

@simon Having watched a couple of episodes of LWT off the back of that interview... Does anyone put together supercuts without the jokes? Or a #sponsorblock feed to skip them?

Eg, the piece on the history of Boeing was powerful. It doesn't need the asides about the CEO's marriage, or some guy in a corporate video being too close to the camera.

Simon Willison

This is the time of the year when you can contribute to the rapid development of the Django framework and get a professional IDE for your Django development.

Until October 6, buy PyCharm at a 30% discount, and an amount equal to your purchase will be donated to the Django Software Foundation.

Link: jb.gg/e742yn

Simon Willison

I put together a whole bunch of notes on the new "Audio Overview" feature of Google's NotebookLM, where you can dump a bunch of source documents in and get a ~10m long utterly weird (and surprisingly convincing) artificial podcast episode generated where two AI characters perform a "deep dive" conversation about those sources simonwillison.net/2024/Sep/29/

Show previous comments
Hynek Schlawack

@simon man this is so believable; I tried it with my own article and they even pronounced my name wrong like every self-respecting podcaster ;)

Christopher Bailey :python:

@simon The host sounds like it was trained on Leo LaPorte TWIT, not sure who the female voice is.

Simon Willison

Here's a recipe for running the Qwen2-VL vision LLM models on Apple Silicon using Python and the mlx-vlm library, via a uv shell one-liner

Full details on my blog: simonwillison.net/2024/Sep/29/ - and here's the full output from that example prompt gist.github.com/simonw/9e02d42

I used uv to run it against this image with this shell one-liner:

uv run --with mlx-vlm \
  python -m mlx_vlm.generate \
  --model Qwen/Qwen2-VL-2B-Instruct \
  --max-tokens 1000 \
  --temp 0.0 \
  --image https://static.simonwillison.net/static/2024/django-roadmap.png \
  --prompt "Describe image in detail, include all text"

This first downloaded 4.1GB to my ~/.cache/huggingface/hub/models--Qwen--Qwen2-VL-2B-Instruct folder and then output this result, which starts:

    The image is a horizontal timeline chart that represents the release dates of various software versions. The timeline is divided into years from 2023 to 2029, with each year represented by a vertical line. The chart includes a legend at the bottom, which distinguishes between different types of software versions. [...]
Simon Willison

A friend of mine suggested that we stop using the sparkle ✨ emoji as the symbol for AI and replace it with a magic eight ball 🎱 as it more realistically conveys how the technology works. I've been thinking about that a lot lately. 😂

Simon Willison

The key thing here is not that I built a lot of features, but that they all come with imo solid documentation, examples, tests, tooling. And it’s absolutely minimal software, built to do exactly what I want with barely an external dependency.

This is way better than what I used to do for my open source, and I did it without eating up my weekend.

It’s an incredible improvement to my creativity and love of software. I get to have a life and build the things I want to build that inspire me.

3/

Simon Willison

🎉 Announcing DjangoTV.

djangotv.com

I'm ~10 minutes away from boarding my flight which means, I technically still launched this project while at #DjangoCon #Django #Python

micro.webology.dev/2024/09/27/

Show previous comments
Seth Michael Larson

@webology What an awesome idea, I would love to see this done for PyCons too (there are just so any it's hard to keep track of them all when they upload VODs!)

Jason :django: :neovim: :i3:

@webology when you're rested and have some time, would love to know how to help out while I have some free time.

Simon Willison

My first update to Niche Museums in a while... the Vincent and Ethel Simonetti Historic Tuba Collection in Durham, North Carolina!

I went with a group of five during this year's DjangoCon US 2024 - it was utterly delightful niche-museums.com/112

Simon Willison

Sent out he latest issue of my newsletter - everything from my blog for the last two weeks turns out to be quite a lot of stuff this time round simonw.substack.com/p/llama-32

Simon Willison

Llama 3.2 is out, and it's a much more substantial release than the 3.1 to 3.2 version bump might indicate

Four new models, including Meta's first two vision models (11B and 90B) and two new text-only small models (1B and 3B)

My notes so far: simonwillison.net/2024/Sep/25/

Simon Willison

You can try out the vision models on lmarena.ai/ by navigating to "Direct Chat" and then selecting those models from the dropdown menu

llama-3.2-vision-90b-instruct

A photo of two capybaras

Prompt: Describe this photo in detail

The image depicts two capybaras standing in a body of water, with one positioned on the edge of a metal grate. The capybara on the right is partially submerged in the water, while the other is standing on the grate.

Key Features:

    Capybaras: Two capybaras are visible in the image.
    Water: The capybaras are standing in a body of water, which appears to be murky or dirty.
    Metal Grate: A metal grate is visible at the bottom right of the image, with one capybara standing on it.
    Background: The background of the image is not clearly visible due to the presence of the water and the capybaras.
Simon Willison

here's some home-brewed software for ya; personal image search using @simon's llm-clip in a little wee webpage flask thingy. And you could run it on your own customized version of CLIP too, if you really dug into things.

github.com/shawngraham/persona

Shawn Graham

maybe I'll try to figure out how to make that thing into a little wee electron app.

Simon Willison

Gergely Orosz has a new podcast, and I was the guest for the first episode: "AI tools for software engineers, but without the hype" newsletter.pragmaticengineer.c

We covered a bunch of ground, but my favorite topic was an exploration of the (very legitimate) reasons that many engineers are resistant to taking advantage of AI-assisted programming tools.

Simon Willison

Here's a detailed write-up of my new project: DJP: A plugin system for Django - which I introduced yesterday at #djangoconUS simonwillison.net/2024/Sep/25/

tante

@simon So reading this, it's basically Django Apps without the manual fiddling to integrate?

Simon Willison

New in DJP 0.2: @carlton suggested it would be useful if plugins could say “this middleware needs to be inserted directly before/after this other middleware” - that’s now supported:

djp.Position("my_plugin.middleware.MyPluginMiddleware", before="django.middleware.common.CommonMiddleware")

github.com/simonw/djp/releases

Simon Willison

I'm really impressed by nanodjango (by @radiac, presented in a lightning talk at #djangoconUS just now) - it's the latest in a long line of attempts to have Django work for Flask-style single file apps but it's got WAY more features than previous attempts I've seen, like model and admin support and even async

My notes here: simonwillison.net/2024/Sep/24/

nanodjango docs and tutorial: nanodjango.readthedocs.io/

Simon Willison

The getting started fits in a single image

pip install nanodjango

Create a counter.py file:

from django.db import models
from nanodjango import Django

app = Django()

@app.admin # Registers with the Django admin
class CountLog(models.Model):
    timestamp = models.DateTimeField(auto_now_add=True)

@app.route("/")
def count(request):
    CountLog.objects.create()
    return f"<p>Number of page loads: {CountLog.objects.count()}</p>"

Then run it like this (it will run migrations and create a superuser as part of that first run):

nanodjango run counter.py
Michael Morisy

@simon @radiac Oh that's awesome! Will have to kick the tires for the next project in that scope I try. Flask has been my default but this looks great.

markwalker

@simon @radiac I came across this a few weeks back. Really impressive package for throwing together ideas with the features to then expand into a fully fledged project if you need to.

Simon Willison

Pretty cool that the Django Software Foundation is about 1/3 funded by individual donors (from a @jacob talk at DjangoCon US)

Financial breakdown diagram with the following numbers:

PLATINUM & GOLD: $125,000
CORPORATE DONORS: $160,000
BUDGET: $255,000
SILVER & BELOW: $35,000
INDIVIDUAL DONORS: $90,000

Spending:

WAGES (FELLOWS): $200,000
GRANTS: $35,000
OTHER: $5,000
FEES/HOSTING: $10,000
SURPLUS: $10,000

These are "Rounded, rough averages, 2020-2024".​​​​​​​​​​​​​​​​
Simon Willison

Jacob’s talk is exploring what the DSF could do if revenue quadrupled from $250,000/year to $1,000,000/year

Simon Willison

It's the ten year anniversary of XKCD 1425, one of the all-time greats and one that resonates slightly differently today. Wrote up some notes on that here: simonwillison.net/2024/Sep/24/

XKCD comic. Cueball: When a user takes a photo, the app should check whether they're in a national park... Ponytail: Sure, easy GIS lookup gimme a few hours. Cueball: ...and check whether the photo is of a bird. Ponytail: I'll need a research team and five years. Caption: In CS, it can be hard to explain the difference between the easy and the virtually impossible.
Matt May

@simon 10 years later, this is basically my job now.

Richard Rutter

@simon I do find it incredible that I don't find it incredible that I can take a crappy photo of a bird and very quickly get the bird identified (using pre-AI-hype google image search for example)

Mikołaj Hołysz

@simon To be honest, the fact that we now have this power is extremely scary, and I don't think we're seeing the ramifications just yet.

Tech companies will soon have the ability to scan every picture we send, every article we write and every conversation we have, in a way that can't easily be beaten by euphemisms or thinly-veiled references.

The obvious use cases are fighting CSAM, fighting spam, child safety, censoring all evidence of protests and finding everybody who expresses anti-government sentiments. The non-obvious use cases, which are, in many ways, even scarrier, are ensuring that people don't break platform rules.

Think "dating app where you can chat for free, but the app will ban you if you try to meet up IRL without paying a fee first."

This gives tech platforms weird powers and business models they never had before.

This won't affect Whats App (as long as end-to-end encryption holds), but it will definitely affect Tinder, Airbnb, Craigslist, Instagram, Uber, eBay etc.

@simon To be honest, the fact that we now have this power is extremely scary, and I don't think we're seeing the ramifications just yet.

Tech companies will soon have the ability to scan every picture we send, every article we write and every conversation we have, in a way that can't easily be beaten by euphemisms or thinly-veiled references.

Simon Willison

New TIL: How streaming LLM APIs work

I put together some notes after poking around with the OpenAI, Anthropic and Google Gemini streaming APIs

til.simonwillison.net/llms/str

Show previous comments
velaia

@simon Great post, Simon.

Do you have any idea why all 3 providers use POST and not GET that would work with the EventSource API?

Stefan Eissing

@simon Nice.

Little note: on a recent curl, you can POST JSON with `curl --json <string>, saving the header setting.
Also, `--no-buffer` should no longer be necessary.

Update: `--no-buffer` always `fflush()`es the output in curl. So it might still be beneficiary.

Go Up