Timeline

explore river

Every post and feed across this instance

  • Tragic reporting from Bloomberg about how safer TikTok algorithms were withheld from some users so TikTok could A/B test engagement:

    Chase’s account was stuck in a so-called filter bubble, an online echo chamber that pumped out repetitive content the algorithm predicted he’d want to watch. There he received an “onslaught” of suicide and self-harm content, according to the document.

    If you accidentally create a harmful product, that's one thing. It can be fixed to prevent future harm. But if you have the fix and refuse to deploy it widely, to me that's inexcusable.

  • Election Day in an Unsettled Country

    Kate and Josh talk Abdul El-Sayed's Michigan victory, big progressive ballot wins and more in this post-primary day special.


    To watch this episode on video, go to our YouTube page.

    We also have newsletters: subscribe here!


    Follow us on:

    Bluesky: https://bsky.app/profile/talkingpointsmemo.com

    Facebook: https://facebook.com/talkingpointsmemo

    Twitter: https://twitter.com/tpm

    Instagram: https://www.instagram.com/talkingpointsmemo/

    See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.

    rss.art19.com
  • Good news that the iPhone announcement will likely be an in-person live event. It’s past time. And it’ll be a more personable way to introduce John Ternus.

  • “ In this video , I’ll take you from farm to...

    In this video, I’ll take you from farm to factory to show you how chocolate is made, and at the end, we’ll use all the chocolate you’ll see in this video to attempt the Guinness World Record for the world’s largest chocolate bar.”

  • Trump’s War On Journalists Also Includes Targeting A Freelance NYT Contributor

    Donald Trump took possession of a $400 million “gift” plane from the Qatari government earlier this year. Trump claimed it was a coup for taxpayers and a boon for America, even as he made it clear this was all about him. According to Trump, no plane was more luxurious than this graft-y replacement for the […]
  • One-shotting a Raccoon Heist game using Claude Fable 5

    Back in 2022 I tweeted screenshots of a game concept generated by GPT-3 and some concept "art" created using DALL-E. Today, on the fourth anniversary of that tweet, I decided to see if Claude Fable 5 (running in Claude Code for web) could build the entire game from the content of that tweet. It did a pretty good job of it!

    You can play the game here. Here's the GitHub repo, and a short video demo:

    Your browser does not support HTML5 video.

    How I built this

    This is the August 5th, 2022 tweet:

    My GPT-3 prompt back then was:

    Write a detailed product description of a computer game where a team of raccoons go on heists.

    This was in the text completion days, where you asked GPT-3 to complete the rest of the text. It completed:

    In "Raccoon Heist", you and your team of thieving raccoons are tasked with pulling off a series of daring heists. From robbing banks to stealing priceless art, no job is too big or too small for your furry crew. You'll need to use your wits and your skills to avoid the police and make a clean getaway with the loot. With exciting gameplay and a charming cast of characters, "Raccoon Heist" is the perfect game for anyone looking for a light-hearted caper.

    My prompt to DALL-E was short:

    Screenshot from a video game where a team of raccoons go on a heist

    Today's experiment: can I dump those screenshots into Fable 5 with a prompt telling it to write a game, then leave it to its own devices and get a working game at the end?

    Setting Claude Code for web up to use GitHub Pages

    A frustrating thing about Claude Code for web is that it can be hard to test what it's working on while it's still working.

    I've been using GitHub Pages to work around that limitation, and found it to work really well.

    Here's my process:

    1. Create a new repository for the project at https://github.com/new - this can be public or private, the trick works equally well for both.
    2. Start a Claude Code for web session, in the Claude iPhone or Desktop apps or in the browser at https://claude.ai/code
    3. Tell Claude what to work on, and encourage it to commit an index.html page as quickly as possible. This will create a branch with a name like claude/3d-raccoon-heist-game-50n293
    4. Navigate to the Settings -> Pages area for the repository (github.com/simonw/raccoon-heist/settings/pages in my case), select "Deploy from a branch", pick the branch name, and hit Save.

    That's all it takes! Within about 30 seconds of each push the latest content will be visible at yourname.github.io/your-repo/.

    If you do this with a private repo, anyone who can guess the name of the repo will be able to view the published content. I don't worry much about this myself.

    The Fable 5 prompt

    Here's the prompt I gave Fable 5 (written in the notes app on my phone - this entire project was conducted on mobile). I accompanied it with the two images from the original tweet.

    Build this 3D game, for the browser.

    This repo is configured to serve static files so make sure there is an index.html that loads everything else.

    Make sure it is mobile-friendly (touch controls, works well on small screens).

    You have an OpenAI API key and access to their image generation model APIs, use that for textures to use with your 3D models. Docs here: https://developers.openai.com/api/docs/guides/image-generation - use gpt-image-2

    Work independently - do not ask me to make any further design decisions. Make sure the game is fun, a little surprising, has good raccoon heist vibes, and is visually pleasing.

    Commit and push as often as possible so I can preview your work - start with an index.html that presents a title screen, then build from there.

    Append to a notes.md file as you work, including your changes to that as part of every commit.

    I didn't make any technology choices. I assumed (correctly) that it would probably use Three.js based on previous experiments.

    Giving Claude access to an OpenAI key turns out to work really well for filling in gaps in its capabilities - in this case we needed some way to generate images to use as textures. Fable is very good at prompting image generators!

    I said "Work independently - do not ask me to make any further design decisions" because I wanted to see if it could produce a full, working game without any further input from me.

    I also said "Commit and push as often as possible so I can preview your work". When you use Claude Code in the Claude iPhone app you give it a GitHub repository and it works in a branch. Telling it to "push as often as possible" means commits start landing in that branch straight away.

    I like asking for notes.md as a bit of added flavor - here's that finished file, and the entry it made when it added the dog:

    New escalation: from night 3 the yards get a patrolling guard dog — a low-poly brown hound with a spiked red collar and a wagging tail. It wanders between random spots, and within 12 units it catches your scent and tracks you by smell (line of sight is irrelevant — it's all nose, shown by a 👃 over its head and barking). It gives up if you open a 17-unit gap. Getting caught messages are now source-specific: guard / headlights / hound. Verified wander → track → caught with an automated test.

    Reviewing the transcript

    You can access the Claude Code shared session, and I also used my claude-code-transcripts tool to export my own HTML version which you can find here.

    Fable started with an index page, vendored a copy of Three.js, then wrote its own gen_textures.py script (copy here).

    It generated the textures and spot-checked them to make sure they looked OK. The metal.jpg file it generated for the trash can looks like this, though I don't think it was applied exactly right in the game itself:

    Then it built out the first basic version of the game, then decided to "smoke-test in the pre-installed Chromium" using Playwright. This meant it could take screenshots of its own work and eyeball them. It did that for both desktop and mobile widths of the page, then noticed that the raccoon was invisible at mobile widths, so it fixed that:

    The raccoon, dumpster hideout, and both crew raccoons are now perfectly visible on mobile. Committing this critical fix.

    It decided to generate a title screen, which it did using this gen_title.py script. Here's the gpt-image-2 prompt it used for that:

    Video game key art, low-poly 3D render style, moody nighttime scene: a cute low-poly raccoon wearing a tiny black burglar mask sneaking on its hind legs carrying a glowing gold coin, next to a tipped-over metal trash can, suburban house with warm glowing windows in the background, deep blue night, full moon, fireflies, cinematic rim lighting, charming heist caper mood. No text, no words, no logos.

    And the resulting image (which Claude thought was "gorgeous") - though I note that when it's shown on desktop it gets cropped to just the top third without the raccoon!

    Then my favorite change: it added the dog:

    export function makeDog() {
      const g = new THREE.Group();
      const BROWN = 0x8a6440, DARK = 0x5e4128;
      const body = new THREE.Mesh(new THREE.SphereGeometry(0.42, 10, 8), M(BROWN));
      body.scale.set(0.9, 0.8, 1.5);
      body.position.y = 0.55;
      body.castShadow = true;
      g.add(body);
      const head = new THREE.Mesh(new THREE.SphereGeometry(0.3, 10, 8), M(BROWN));
      head.position.set(0, 0.85, 0.62);
      g.add(head);
      const snout = new THREE.Mesh(new THREE.SphereGeometry(0.16, 8, 6), M(DARK));
      snout.scale.set(0.9, 0.7, 1.3);
      snout.position.set(0, 0.76, 0.9);
      g.add(snout);
      const nose = new THREE.Mesh(new THREE.SphereGeometry(0.06, 6, 6), M(BLACK));
      nose.position.set(0, 0.78, 1.08);
      g.add(nose);
      for (const s of [-1, 1]) {
        const ear = new THREE.Mesh(new THREE.SphereGeometry(0.12, 6, 6), M(DARK));
        ear.scale.set(0.7, 1.3, 0.5);
        ear.position.set(0.2 * s, 1.08, 0.55);
        g.add(ear);
        const eye = new THREE.Mesh(new THREE.SphereGeometry(0.05, 6, 6), M(0x1a1a1a, { emissive: 0x331111 }));
        eye.position.set(0.13 * s, 0.92, 0.86);
        g.add(eye);
      }
      const tail = new THREE.Mesh(new THREE.CylinderGeometry(0.05, 0.09, 0.5, 6), M(DARK));
      tail.position.set(0, 0.8, -0.62);
      tail.rotation.x = 0.8;
      g.add(tail);
      // spiked collar
      const collar = new THREE.Mesh(new THREE.TorusGeometry(0.22, 0.05, 6, 12), M(0xc0392b));
      collar.position.set(0, 0.78, 0.5);
      collar.rotation.x = Math.PI / 2.4;
      g.add(collar);
      const legGeo = new THREE.CylinderGeometry(0.07, 0.09, 0.34, 6);
      const legs = [];
      for (const [x, z] of [[-0.22, 0.35], [0.22, 0.35], [-0.22, -0.35], [0.22, -0.35]]) {
        const leg = new THREE.Mesh(legGeo, M(DARK));
        leg.position.set(x, 0.17, z);
        g.add(leg);
        legs.push(leg);
      }
      let phase = Math.random() * 10;
      return {
        group: g,
        animate(dt, speed) {
          phase += dt * (3 + speed * 10);
          const amp = Math.min(0.6, 0.1 + speed * 0.6);
          legs[0].rotation.x = Math.sin(phase) * amp;
          legs[3].rotation.x = Math.sin(phase) * amp;
          legs[1].rotation.x = -Math.sin(phase) * amp;
          legs[2].rotation.x = -Math.sin(phase) * amp;
          tail.rotation.z = Math.sin(phase * 1.5) * 0.4;
          body.position.y = 0.55 + Math.abs(Math.sin(phase)) * 0.04 * (0.3 + speed);
        },
      };
    }

    And did a round of testing on it using Playwright, including another screenshot.

      // walk near the dog
      await page.evaluate(() => { const d = window.__rh.dog; window.__rh.teleport(d.x + 6, d.z); });
      await page.waitForTimeout(2000);
      info = await page.evaluate(() => JSON.stringify({ dog: window.__rh.dog, state: window.__rh.state, player: window.__rh.debug().player }));
      console.log('after approach:', info);
      await page.waitForTimeout(3000);
      info = await page.evaluate(() => JSON.stringify({ dog: window.__rh.dog, state: window.__rh.state }));
      console.log('after chase:', info);
      await page.screenshot({ path: __dirname + '/shot-dog.png' });

    It made a few more tweaks, then declared itself done:

    Raccoon Heist is built, tested, and pushed — 7 commits on claude/3d-raccoon-heist-game-50n293, all verified with automated Playwright playthroughs on desktop, portrait-phone, and landscape-phone viewports.

    The game: You're a masked raccoon sneaking out of your crew's dumpster hideout into a moonlit cul-de-sac. Grab coins, gems, rings, donuts, and fish (they visibly stack on your back and slow you down), then waddle home and bank them before dawn. Each night raises the goal and the heat: night 1 has one flashlight-sweeping guard, night 2 has two, night 3 adds a scent-tracking hound that ignores line-of-sight entirely. A police cruiser sweeps the street with headlights, homeowners randomly peek out of windows, a seagull periodically dive-bombs your unclaimed loot, pizza slices trigger a 6-second speed FRENZY, and a rare golden TV is worth 120 points if you can haul its weight home. Win ranks: TRASH PANDA ⭐ → CAT BURGLAR ⭐⭐ → MASTER OF DISGUISE ⭐⭐⭐, with your best run saved to localStorage.

    How it's built: Vendored Three.js (no CDN), procedural low-poly characters, and a procedural WebAudio soundtrack (sneaky walking-bass jazz plus all sound effects — zero audio files). All seven ground/wall textures and the title-screen hero art were generated with gpt-image-2 and committed as static assets, so the deployed game makes no API calls. Mobile gets a dynamic touch joystick (appears wherever you touch) plus a DASH button; desktop uses WASD/arrows and Space.

    Testing caught two real bugs worth mentioning: the canvas rendered at 2× size on any real phone (a cssText assignment was wiping Three.js's inline sizing — desktop DPR-1 tests masked it completely), and the win screen's star-rating div inherited the title screen's full-screen .stars CSS and silently swallowed every tap on the "next night" button. Both are fixed and regression-tested, along with pickup, banking, chase/caught, dawn, night progression, and lose/retry flows.

    notes.md has the full build log. The game is live on the branch — just serve the repo root and open index.html.

    Is the game any good?

    It's an impressive starting point, but it's not a good game.

    You move your raccoon around a yard collecting items - donuts, fish, gold coins, jewels - while avoiding guards with flashlights and, in later levels, a dog. You have a limited carrying capacity, and once that's full you need to drop stuff off at the dumpster. If you pick up a pizza slice you get a temporary speed boost.

    There are no team mechanics at all - there are two other static raccoons next to the dumpster but they're purely decoration.

    It gets slightly more challenging as the levels progress - the dog introduced in level 3 is the most interesting new mechanic - but it's very, very easy to beat. It's also pretty boring - each night has a fixed duration and you can collect all of the items and then have nothing else to do while waiting for the dawn.

    I was impressed by the implementation. It's fully 3D, there are trash cans, the flashlight illumination cones are fun, and it has a reasonably coherent visual style. It works on mobile. The music ("a procedural WebAudio soundtrack (sneaky walking-bass jazz plus all sound effects — zero audio files)" according to Claude) is simple but feels about right.

    As a finished game project, it's mediocre. As a starting point from a single prompt I think it's very impressive.

    I've vibe coded up quite a few games now. They've all been deeply disappointing from a gameplay perspective - it turns out designing games that are fun remains a uniquely human trait, and one which requires significantly more skill and experience than either Claude or I can bring to bear.

    That said, I thoroughly recommend tinkering with game development projects as a way to explore the capabilities of agents. It's a fun, low-risk way to try out new things. If you stick at it long enough you might even produce something that's worth playing!

    Update 7th August 2026: I posed the same prompt to OpenAI Codex Desktop running GPT-5.6 Sol Ultra and got a significantly better result - GPT-5.6 Sol picked up on the importance of the squad of raccoons going on a heist, and built a game where you must rescue your two crewmates in a museum and then stack on top of them to steal the Golden Sardine.

    You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options.

  • 💬 Life is defined by change, chance, and choice.

  • The Computer That Helped Win World War II . “…it...

    The Computer That Helped Win World War II. “…it is not possible to give an adequate idea of the fascination of a Colossus at work: its sheer bulk and apparent complexity; the fantastic speed of thin paper tape round the glittering pulleys…”

  • WebSub support for RSS.chat

    Previously we were only able to notify via rssCloud.

    Now we also support WebSub because there are also a fair number of feed readers that only use WebSub.

    We're using Andrew Shell's rsscloud.io as our WebSub hub, as we have for a long time with rssCloud.

    Andrew please help us figure out if this is working correctly.

    The source is in the repo, along with a worknote.

  • WebSub support in RSS.chat

    Previously we were only able to notify via rssCloud.

    Now we also support WebSub because there are also a fair number of feed readers that only use WebSub.

    We're using Andrew Shell's rsscloud.io as our WebSub hub, as we have for a long time with rssCloud.

    Andrew please help us figure out if this is working correctly.

    The source is in the repo, along with a worknote.

  • Micro.blog mission, short recap

    Micro.blog is often confused with systems like Mastodon or Twitter. They are really very different. Those platforms connect your writing to people. Micro.blog connects it to the web.

    The community is amazing too. I'm as committed as ever to the idea that small, open platforms can focus on safety. But what separates the platform from everything else is its open web principles. Every feature — from conversations to cross-posting — exists first to support writing on the web. Making blogs better and your presence on the web better.

    Some people prefer the engagement they get on Mastodon or Instagram or whatever other social platform. That's okay. It's a big world and you should use whatever best suits you. And I'll remain clear-eyed about what we're doing and what we're not doing.

  • Ninth Circuit: Your AI Agent Can’t Violate Hacking Law. But You Might.

    The rise of AI is bringing a bunch of fascinating legal questions that are harder to answer than many expect. The latest one: who is liable if an agentic system running on its own hacks someone? That’s the question a bunch of people have been asking this past week in the wake of multiple stories […]
  • Daily Deal: The Ultimate Python & Artificial Intelligence Bundle

    The Ultimate Python and Artificial Intelligence Bundle has 9 courses to help you take your Python and AI knowledge to the next level. You’ll learn about data pre-processing and visualization, artificial neural networks, how to use the Keras framework, and more. It’s on sale for $40. Note: The Techdirt Deals Store is powered and curated […]
  • How to Store Ebooks in Instagram Reels and Other Covert Data Storage Tricks

    Do you remember the video I posted last summer of YouTuber Benn Jordan where he “uploaded a picture of a bird to a bird and then downloaded the bird picture from the bird”? So cool. Jordan is back with more data encoding tricks in his latest video, There Are Files Stored in This Video (or: How To Hide Shit In Media).

    Here’s his intro, which sounds completely bonkers but he demonstrates everything he says he’s going to:

    This video is a very deep dive on all of the different ways that you can covertly send and receive data. I’m going to show you how to secretly store encrypted files in music that sounds completely normal to the human ear. I even made a little web app where somebody could paste a link to a Spotify song and it unlocks a completely secret separate audio stream. I’m going to show you how you can send and receive encrypted messages via ultrasound with no cell service or Wi-Fi required by turning your phone into a modem. We’re going to be exploiting Meta’s copyright protection to store ebooks inside Instagram videos. And I’m going to show you how I stored, hosted, and shared malware inside of a harmless Facebook photo of my [dog].

    This is a pretty dense video and, I’m going to be honest, some of it went right over my head. But it is also genuinely mind-blowing and makes me want to watch a Sneakers-esque hackers movie where the characters do things like:

    So if you ever want to send someone a selfie over PA system in a place with no Wi-Fi or cell service, I guess we’ve made that possible today.

    If you want to play around with any of the stuff in the video, Jordan coded a bunch of demos and tools and put them up on his website.

    I also ran across this recently: a system that can transfer data at 190 KB/s between two phones by pointing the camera of one phone at a QR video.

    Tags: audio · Benn Jordan · remix · video

  • I had missed that mastodon.cloud is shutting down. While its active user base has been shrinking, it still has a lot of total users and millions of posts. There's still no way to migrate posts between Mastodon servers. (Mastodon posts → Micro.blog and some other fediverse servers works.)

  • Lidar and other discoveries continue to show that the...

    Lidar and other discoveries continue to show that the Amazon rainforest was home to a “sprawling ancient civilization much bigger than researchers expected” (possibly up to 3 million people around 100-300 CE).

  • Trump’s Mass Detention Policy Shut Down By Two Appeals Courts On The Same Day

    The Trump administration has been shut down more than 10,000 times by federal courts over its novel interpretation of the law — one it claims allows it to indefinitely detain migrants without giving them a bond hearing. Some of those 10,000 adverse decisions have been significant, with implications that stretch far beyond single cases or […]
  • Heading On Out…

    Hey folks. I just wanted to hop in here quickly to let a cat out of a bag: I am in the midst of moving. Not going to get into the wheres, whys, and hows right now; there’s a bigger post coming at some point about all of that. I’m excited and anxious about the transition (it’s a pretty big one), but it’s been taking up a lot of time, energy, and bandwidth that I would usually be putting into KDO.

    The move is happening in early Sept, and I’m probably going to be taking some time off between now and then (timing tbd) to get everything packed & organized, spend time with family & friends before I go, and generally not run myself completely into the ground. Thanks for your patience & understanding; I’m excited to get back to focusing on the site in mid-Sept. ✌️

    Tags: Jason Kottke · kottke.org

  • Added a river to I ♥ RSS: https://iheartrss.com/river

  • This is an old list but still interesting: the 12 most...

    This is an old list but still interesting: the 12 most linguistically influential American movies since 1980. If you were compiling a list of linguistically influential movies since 2000, what would be on it?

  • all the bootstrap things, i love watching this boot up! Still digging :-) etc. Thanks Dave and all the developers and testers

  • Staying Human

    It’s not so much staying alive, it’s staying human that’s important. What counts is that we don’t betray each other.” -- George Orwell

  • Tressie McMillan Cottom’s reading list for fighting back...

    Tressie McMillan Cottom’s reading list for fighting back against Big Tech. “Put simply, there is too much money, some of it too untraceable, giving a small group of unelected people too much power over the people.”

  • Cops Used Flock to Track a Man Across State Lines to Create Pretext to Search His Car for Weed

    "The vehicle travels to Michigan frequently which is a known source state for marijuana as it is legal there," a probable cause justification reads.
  • A Beautiful Hand-Drawn Map Of The British Isles during the First War of Scottish Independence

    Map created by reddit user Fiff02 The map above shows what British Isles looked like during the First War of Scottish Independence (1296 – 1328). According to the map author: “The First War of Scottish Independence (1296–1328) was the conflict between Scotland and England over the independence of the Scottish kingdom. The crisis arose after […]
  • Podcast: This Man Might Go to Prison for Wiping His Phone

    The case of Samuel Tunick allegedly wiping a phone before DHS could search it; inside an AI-powered TIkTok Shop; and Google Earth's dumb AI tool.
  • Emily Wilson takes another crack at a critique of...

    Emily Wilson takes another crack at a critique of Nolan’s “visually stunning, emotionally empty” Odyssey. “Verbally, we are told that people matter; visually, we are shown that they do not.”

  • Feeds that block my VPS IP and how i get them anyway

    My reader runs on a cheap VPS. Most feeds work fine there. But a few keep giving me 403. Reddit .rss, Tumblr, and sometimes YouTube. Same urls opens fine from my laptop at home, so it is the datacenter IP getting blocked, not the feed.

    What helps me: - set a real User-Agent, not the default from the http library - slow the polling, one time per 30 min instead of every 5 - route only these domains through a residental proxy

    For reddit the format is reddit.com/r/rss/.rss or reddit.com/user/name/.rss. Youtube is youtube.com/feeds/videos.xml?channel_id=ID.

    I keep a small allowlist for proxy, rest stay direct. Tumblr still flaky even with this. If someone found better way i want to hear.

    submitted by /u/ajay9452
    [link] [comments]
  • Apple's ‘Private Relay’ Is Exposing Users’ Real IP Addresses

    Researchers found a group of issues that mean Private Relay isn't actually protecting users' real IP addresses. 404 Media verified the issues do expose IP addresses.
  • Wavelength 2.0 for iOS seems hung up in Apple app review. It has been a few days. In the meantime, I have plenty to work on, but I'd love to ship it this week. 🤞

  • Poland’s Fertility Rate Has Fallen To Just 1.10 But What Does That Mean?

    Map Credit: Geo Universe The map above shows a rather socking fact: Poland’s fertility rate has fallen to just 1.10 children per woman in 2025 one of the lowest levels in Europe. Some more key facts (according to the map author): 👶 Fertility rate (2025): 1.10 👥 Population (2026): 37.3 million 📉 Population change since […]
  • Surfing Alaska’s Turnagain Arm (home to a twice-daily...

    Surfing Alaska’s Turnagain Arm (home to a twice-daily tidal bore wave) can be fun (10-foot waves you can ride for miles) but also dangerous: “You need a Plan B, a Plan C and a Plan D because no one is coming to rescue you.”

  • I built a feed reader (free, opensource, self hosted web app)

    Howdy,

    I came here to advertise my feed reader. Then I saw that there is a huge wave of new readers competing for your attention.

    After some debating with myself whether to post it at all, I decided to just drop it here with some keyfacts and no ai generated marketing blabla.
    Maybe someone is interested, maybe not. I built it mainly for myself and my portfolio. I'm a freelance webdeveloper with 25+ years of experience.

    • Open source (MIT licence)
    • frontend: Angular
    • backend: php/Symfony
    • dockerized, self hosted, one line installer
    • multi user capable
    • built with my phone in mind, but works well on desktop
    • fetches full linked article to display for distraction free reading inside the app
    • OPML import/export
    • login via apple and google possible (after some configuration)

    https://github.com/larspohlmann/simple-feed-reader

    submitted by /u/malanalars
    [link] [comments]
  • REDIFF. Voyage du beau vers le bon avec Pia Renaudat

    Dans cet ancien épisode de Bombo, j’ai rencontré Pia Renaudat, co-fondatrice du Petit Mercado, comptoir-épicerie inspiré des Mercado argentins à Saint-Gilles. Avec Mano, son mari, meilleur ami et associé, ils ont concrétisé leur rêve d’ouvrir leur lieu à eux après 3 mois sur les routes sud américaines.

    Passionnée par le beau dans un premier temps, en tant que graphiste, le bon a rapidement été une évidence. Jusqu’à devenir la cheffe de cuisine de leur comptoir alors qu’elle ne savait pas cuisiner. Sa touche graphique a persisté et pris sa place dans les étagères.

    De petite fille très solitaire à hôtesse de son propre établissement, à force d’amour et de courage, Pia est aujourd’hui une des portes paroles de l’Horeca. Elle amène à réfléchir quant à l’avenir de ces petits établissements si chers à notre vie sociale, à notre vie de quartier ou d’amitiés. Dans ses mots, la réflexion est de mise et prendre action, une nécessité.


    C’est avec joie que je vous invite à entrer dans ce petit mercado déguster les mots et mets de Pia.

    Bonne écoute


    Liens externes : 

    Le Petit Mercado, rue de l'Hôtel des monnaies 82 à Saint-Gilles

    https://www.instagram.com/lepetitmercadobxl/

    https://www.facebook.com/lepetitmercadobxl/

    Campagne "J'aime mon Horeca" : https://www.horecabruxelles.be/jaime-mon-horeca-appel-a-la-solidarite-pour-preserver-nos-lieux-preferes/

    Liens de Bombo : www.instagram.com/bombopodcast/

    -------------------

    ➡️ Rejoignez la communauté sur Instagram.


    Bombo est disponible gratuitement sur toutes les plateformes : Apple Podcasts, Spotify, Deezer, PodcastAddict, Amazon Music .. Si vous avez aimé cet épisode, laissez moi des étoiles ⭐ et abonnez-vous pour ne rater aucun nouvel épisode.


    Bombo, le podcast, donne la parole à des passionnés, des rêveurs, des artistes afin de créer, questionner et propager la joie ! Le propos de mes invité.e.s n’a pas la valeur d’expertise mais est le reflet de leur vécu, leur liberté et leur intimité. 

    -------------------

    Bombo est une émission créée par Frédérique Scarnière

    Générique : Frédérique Scarnière sur une musique composée par Christophe Gérard.

    Montage et mixage : Frédérique Scarnière et Christophe Gérard.

    Photographe : Gisèle Lépine


    Hébergé par Ausha. Visitez ausha.co/politique-de-confidentialite pour plus d'informations.

    audio.ausha.co
  • “Treat the agent as an operator of primitives you understand and could fall back to, not as a replacement for understanding them. Keep the formats open and the exit cheap”

    Thoughtful post by Simon Carstensen

    Can you be indie with an LLM?
    https://simonbc.com/can-you-be-indie-with-an-llm

  • Meta Backs Off Sloppy Gambit To Nickel-And-Dime AI Glasses Customers

    Last month we reported how Meta had decided to try and sloppily nickel-and-dime its AI glasses customers. More specifically, the company decided it would be a good idea to introduce new “rate limits” to smart glasses usage, forcing customers to pony up a $20 per month Meta One Premium subscription if they didn’t want their glasses’ “conversation […]
  • Spent the last week mostly on the backend of RSC to be able to better moderate, govern an instance.

    Admins can now moderate own instance and also moderate how remote users from other RSC instances are ingested/displayed on/with the instances an admin federate with.

    Later on we'll need roles so that an instance can have users with moderation capabilities, allowing an admin to share governance with members

    The moment we federated even just with demo RSC instance, the lack of observability, control and moderation quickly became problematic

    The whole point was to give admins a full view of all the feeds added by users with the capabilities to moderate if necessary.

    I think the current backend controls + API admin capabilities will be enough to build on top without much friction

    There is also a simplification of the backend code ongoing, we'll constantly face this kind of targeted refactoring because the project is very new and still finding its way.

    Anyway, more news soon :)

  • New Pets, Sick Pets, and Hemorrhaging Money

    Wooh! The last few weeks have been absolutely mental here in Casa del Quirk.

    Around 2 months ago we started renovating the stables to make things better for the goats and chickens. We've had an extraction system put in so fresh air is always circulating, as chickens are very dusty and goats don't like it too hot and stuffy.

    While we were at it, we also had some new fencing and gates put in, as well as better hard standing around the stables. Finally we had the old, rotten windows and doors replaced with lovely new ones that have shutters so we can control the air flow depending on the weather.

    Our stables with the new windows and doors

    As you can imagine, this has been a significant expense, but we planned for it. So it's all good, but then...

    Sick pet

    Around a month ago we noticed that our older (and favourite) dog, Tia, had rather smelly breath and her mouth was bleeding when she was playing with her ball. We figured it's just old age and bad teeth, so we took her to the vet to have her mouth checked and properly cleaned.

    Unfortunately it was bad news. Tia has a benign but aggressive tumour growing in her gum. Apparently they're relatively common in older dogs (she's nearly 14) but if left untreated it would get very painful and we ultimately end up having to have her euthanised as it would significantly effect her quality of life.

    So we paid the unexpected £1,000 (~$1,350) bill to have the initial tumour removed, her teeth cleaned, and a biopsy. In the meantime we were also referred to a specialist to hopefully get the issue sorted properly.

    Last week Tia went to the specialist to have a full body CT scan. This would give them more info about the tumour in her mouth and what our options are, but also (because she's so old) let us know if there's anything more malicious going on in her body.

    We have to be pragmatic about this - the treatment was going to be expensive, and we had to make a call on whether we wanted it doing if they found something like cancer lingering somewhere in her body. Luckily for us the old girl came back with a clean bill of health and the tumour was treatable. That was another £1,500 (~$2,020) down the drain, but well spent.

    The procedure to treat the tumour involved taking around 40mm (~1.5") of her lower jaw away. It's a significant operation and the recovery, especially for an older dog, will be difficult. On Monday she had the procedure, it went really well, and yesterday she came home a day earlier than we expected. She's a tough old girl.

    She's much better today, but still struggling as she's been through a lot. Having a pet that's in pain is the worst - you can't really reassure them like you can a human, so you find yourself hopelessly watching them suffer.

    It's heartbreaking, but it's for the best. We're still to get the bill for this procedure, but the vet has estimated an eye-watering £4,400 (~$6,000).

    If anyone is playing along, that's £6,900 (~$9,200) in unexpected vet bills over the last few weeks. She also isn't insured as it's prohibitively expensive for a dog of her age. So we need to foot the entire bill.

    Anyway, on to more positive news...

    New pet

    Last Saturday we welcomed the newest addition to our family, Nelly the 8 week old Labrador/cocker spaniel cross. The breed is known as a Cockador apparently - very unfortunate name if you ask me.

    Nelly on her first visit to the vet, being very good.

    Like any puppy, Nelly is a lot of work. Especially if you add into the mix a very sick dog, and the kids being off school for the summer holidays. I've also been working long hours recently, so my poor wife has been juggling most of this on her own. She's at her whits end.

    Nelly, Tia, and our other dog Sidney are all getting on well though. Nelly is even helping distract Tia from the pain she's in.

    It's fair to say that all our savings are gone, and the last of Tia's treatment will need to be thrown on a credit card so we can pay it off over the next few months.

    Things are extremely busy and stressful at the moment. But hopefully we will have Tia for a couple more years so her, Nelly, and Sid will become a proper little pack that gives us lots of lovely memories.

    Pets are a gift and we wouldn't have it any other way. I just wish vets bills were a little cheaper!

    Thanks for reading this post via RSS. RSS is ace, and so are you. ❤️

    You can reply to this post by email, or leave a comment.

  • API

    Oops we are about to have an API now..

    Still polishing a few things but you'll be able to use a user generated/governed api keys to read/write on your account and read the firehose
    There is also a anonymous firehose entrypoint, this could allow anyone to create a completely different UI for any given RSC instance or God knows what other applications on top 😊

  • This Man Might Go to Prison for Wiping His Phone

    Get 15% off OneSkin with the code 404 at https://oneskin.co/404 We start this week with Joseph’s article about Samuel Tunick, the man charged with allegedly wiping his phone before DHS officials could search it. It’s a wild case with a lot to unpack. After the break, Jason tells us all about a TikTok Shop scheme powered by AI. In the subscribers-only section, we talk about possibly the dumbest AI tool ever made. You're Invited: 404 Media's Third Anniversary Live Podcast and Party! ‘The Government Hopes To Set a Precedent’: An Interview With the Man Charged for Allegedly Wiping His GrapheneOS Phone Inside an AI TikTok Shop Slop Factory That Shills Supplements Recalled By the FDA Google Earth’s New AI Lets Anyone Fabricate Completely Bullshit Satellite Images Youtube Version: https://youtu.be/lmikqHw1lX8 This is a production of 404 Media, a journalist-owned tech website. Learn more and subscribe at: htttps://404media.co Listen to our weekly podcasts: Apple Podcasts: https://podcasts.apple.com/us/podcast/the-404-media-podcast/id1703615331?ref=404media.co Spotify: https://open.spotify.com/show/0F3oY47l2XgoBMaAmIaw29?ref=404media.co Google Podcasts: https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5hY2FzdC5jb20vcHVibGljL3Nob3dzL3RoZS00MDQtbWVkaWEtcG9kY2FzdA?ref=404media.co Become a paid subscriber for access to bonus content: https://404media.co/membership Learn more about your ad choices. Visit megaphone.fm/adchoices
    pdst.fm
  • Sen. John Fetterman on the Democratic Divide

    As the Democratic Party wrestles with its identity and direction, Jon is joined by U.S. Senator John Fetterman (D-PA) to discuss his unconventional place within it. Together, they explore his frustrations with the party's left flank, examine where he still stands firmly with Democrats, and dig into his steadfast support for Israel. Plus, Jon answers listeners’ questions about Trump and Blanche’s pinky promise, Tucker’s political party, and trying to understand James Carville! This episode is brought to you by: GROUND NEWS - Go to https://groundnews.com/stewart to see all sides of every story. Subscribe for 40% off the Vantage Subscription only for a limited time through our link https://groundnews.com/stewart FACTOR - https://FactorMeals.com/TWS50OFF BOMBAS - Head over to https://Bombas.com/weekly and use code WEEKLY for 20% off your first purchase. QUINCE - Head to https://Quince.com/tws for free shipping on your order and 365-day returns. Now available in Canada, too. BOLL + BRANCH - https://BollAndBranch.com/tws Follow The Weekly Show with Jon Stewart on social media for more:  > YouTube: https://www.youtube.com/@weeklyshowpodcast > Instagram: https://www.instagram.com/weeklyshowpodcast > TikTok: https://tiktok.com/@weeklyshowpodcast  > X: https://x.com/weeklyshowpod   > BlueSky: https://bsky.app/profile/theweeklyshowpodcast.com Host/Executive Producer – Jon Stewart Executive Producer – James Dixon Executive Producer – Chris McShane Executive Producer – Caity Gray Producer – Brittany Mehmedovic  Producer – Gillian Spear Video Editor & Engineer – Rob Vitolo Audio Editor & Engineer – Nicole Boyce Music by Hansdle Hsu Learn more about your ad choices. Visit podcastchoices.com/adchoices
    www.podtrac.com
  • Anke Richter, Part 1 - Ecstatic Dancing, Tantric Sex, and Joining ISTA

    Today is part 1 with Anke Richter, journalist, author of Cult Trip, former member of Tantric group International School of Temple Arts, and founder and director of New Zealand’s cult conference DeCult. In this week’s episode she shares how she began as a journalist investigating cults, but when she went to a tantric sex festival, she had a peak experience with ecstatic dancing that made her never want to go back to her old way of life.

    She’ll talk about doing her first training in tantric pleasure, which got her deeper into ISTA and the idea of tantric polarity and exploring her feminine energy that she’d felt she’d been missing, and how the intensity and the highs she felt in these communities made real life seem boring. Plus, how there often aren’t a lot of sexual communities to choose from in general, which can create room for the sketchier ones to flourish.

    SOURCES

    Cult Trip

    DECULT 

    See omnystudio.com/listener for privacy information.

    podtrac.com
  • Risky Business #847 -- Oops! Claude's accidental hacking spree

    On this week’s show Patrick Gray, and James Wilson are joined by bearded man of leisure Adam Boileau to discuss the week’s cybersecurity news, including:

    • Accidental AI agent hacking sprees have the world’s media freaking out, but we think it’s all pretty funny
    • The bugpocalypse is so chaotic, Microsoft can’t patch fast enough
    • A ColdCard wallet flaw led to millions in Bitcoin theft, but the back story behind the bug is bonkers
    • Iran hacks and disrupts water infrastructure in multiple American states
    • North Korea’s state-backed hackers turn criminal. Or their criminals turn into state-backed hackers. Or something. It’s all a bit confusing, actually.
    • Much, much more!

    This week’s show is brought to you by Sondera. Co-founder Josh Devon joins Patrick and James to talk through some absolutely hilarious LLM horror stories.

    This episode is also available on YouTube

    Show notes

    dts.podtrac.com
  • How Elon Musk Is Re-Engineering the World

    More To The Story: Boston University professor Quinn Slobodian discusses his book “Muskism: A Guide for the Perplexed,” which he co-authored with Ben Tarnoff. They outline how Elon Musk’s background and political views have reshaped capitalism and coin new terms to describe the unique ways Musk has been able to forge a close and symbiotic relationship with the government. On this week’s More To The Story, host Al Letson talks with Slobodian about how the world’s richest person has reimagined the relationship between business and government, his unique brand of futurism, and how Musk’s early life in apartheid South Africa ultimately shaped his worldview.

    Producers: Joni Binder and Josh Sanburn | Editor: Kara McGuirk-Allison | Theme music: Fernando Arruda and Jim Briggs | Copy editor: Nikki Frick | Digital producer: Artis Curiskis  | Deputy executive producer: Taki Telonidis | Executive producer: Brett Myers | Executive editor: James West | Host: Al Letson

    Read: Muskism: A Guide for the Perplexed (Harper)

    Read: Elon Musk’s Reward for Calling for a Race War? Becoming a Trillionaire. (Mother Jones)

    Listen: How Project 2025 Is Reshaping Our Country (More To The Story)

    Learn more: Quinn Slobodian's website


    Learn about your ad choices: dovetail.prx.org/ad-choices
    dts.podtrac.com
  • Austin landmark.

  • RFK Jr. Just Embarrassed Himself Publicly On CNN

    This post is going to come with something of a warning label. RFK Jr. went on CNN this past weekend for an interview with Dana Bash. I’m going to post the entirety of that interview immediately below. Before you watch it, get yourself a bib, or some paper towels, or wrap yourself in one of […]
  • Pourquoi tu m’aimes pas ? | “Une histoire de timing” ? (4/5)

    Lorsque l’été s’achève et que Camille rentre chez elle, un tout autre quotidien se met en place, bien loin des copains de la base de rafting, des parties de pétanque qui s’éternisent et des cool kids au teint hâlé. Mais une chose reste intacte : son obsession pour Alban et sa certitude qu’il finira par lui avouer ses sentiments malgré la distance. L’été suivant, l'heure des retrouvailles a enfin sonné.

    Profitez d'une remise exclusive de 15 % sur les forfaits de données Saily ! Utilisez le code COEUR lors du paiement. Téléchargez l'application Saily ou rendez-vous sur https://saily.com/coeur

    Toutes les références citées dans la série sont disponibles sur le site : https://www.binge.audio/podcast/le-coeur-sur-la-table/pourquoi-tu-maimes-pas-par-camille-olive

    CRÉDITS : Pourquoi tu m’aimes pas est une série du Cœur sur la table, un podcast de Binge. Écriture et incarnation : Camille Olive. Co-écriture, direction artistique et production : Juliette Livartowski. Réalisation et mixage : Mathieu Thévenon. Prise de son : Octave Bothier et Paul Bertiaux. Les épisodes ont été enregistrés aux studios Badje et Marcel Lods. Merci à Mathieu Gilbert et à toutes les voix Binge et URBANIA. Responsable des productions éditoriales : Charlotte Baix. Assistante de production et d’édition : Aude Miquel. Directrice de production : Albane Fily. Responsable administrative et financière : Adrienne Marino. Responsable sponsoring : Betty-Maeva Wendling. Identité graphique : Lucile Lissandre. Communication : Lilou Delclitte. Développement éditorial : Naomi Titti. Rédaction en chef : Thomas Rozec. Direction des contenus : Sophie Marchand. Binge est une marque URBANIA.

    Hébergé par Audiomeans. Visitez audiomeans.fr/politique-de-confidentialite pour plus d'informations.

    audio.audiomeans.fr
  • New release of LLM adds support for reasoning traces, OpenAI Responses, server-side tools, and smarter logging

    I released LLM 0.32 this morning, the most significant new version of LLM since the initial launch of the project. The new version includes support for visible reasoning traces, server-side provider tools, redesigned content-addressable SQLite logs, new models, and new features enabled by the OpenAI Responses API. I also released a new version of the llm-anthropic plugin with substantial updates of its own.

    Headline features for LLM CLI users

    Running LLM against reasoning models now displays their reasoning traces to standard error, so you can see what they are "thinking" without that information being included in the standard output that you might pipe to another tool. Add -R/--hide-reasoning to turn this off.

    LLM includes support out-of-the-box for the GPT-5.6 model family, and the new default model used with llm "prompt" is now the inexpensive but capable GPT-5.6 Luna.

    LLM calls can now use server-side tools from various providers. OpenAI provide a code execution environment as a server-side tool; LLM can now run prompts that benefit from that like so:

    llm --tool CodeInterpreter 'Show current python and SQLite versions'

    OpenAI also gets a WebSearch tool.

    The llm-anthropic plugin adds WebSearch, WebFetch, CodeExecution, and AnthropicMCP, which looks like this:

    llm -m claude-sonnet-5 -T 'AnthropicMCP("https://datasette.simonwillison.net/-/mcp")' \
      'how many rows in the blog_blogmark table?'

    That causes Anthropic to execute MCP calls against my new datasette-mcp plugin as part of a single request/response interaction with their API.

    The new llm openai endpoint command provides a tool for executing prompts against any OpenAI compatible endpoint as a one-liner. These aren't logged, which makes this a handy tool for running one-off prompts against anything that speaks the lingua franca of the LLM API world.

    Here's how I use that to run prompts against Gemma 4 12B running in my localhost LM Studio API, via uvx (no LLM installation required) and mixing in the llm-tools-quickjs tool plugin for good measure:

    uvx --with llm-tools-quickjs \
      llm openai endpoint http://localhost:1234/v1 -m google/gemma-4-12b \
      -T QuickJS 'Use QuickJS to multiply 3434 * 2434' --td

    New features in the Python API

    LLM's Python API previously required you to create a conversation and then send messages to it one at a time. This was an abstraction over the true nature of LLMs, where each request carries a complete history of the messages that came before it. That abstraction started to get in the way for some more advanced cases, so the new release introduces a model.prompt(messages=[]) parameter that can be used like this:

    import llm
    from llm import user, assistant, system
    
    model = llm.get_model("gpt-5.6-luna")
    
    response = model.prompt(messages=[
        system("You are a helpful pirate."),
        user("What is the capital of France?"),
        assistant("Paris, matey."),
        user("And Germany?"),
    ])
    print(response.text())

    LLM previously returned an iterable sequence of strings from each prompt. This worked great when models returned a string response, but failed to predict the weird shape that models would evolve towards. Today many models return a mix of reasoning text, output strings, tool calls, and even image attachments. With LLM 0.32 you can do this instead:

    for event in model.prompt("Explain cats").stream_events():
        if event.type == "reasoning":
            print(f"[thinking] {event.chunk}", end="", flush=True)
        elif event.type == "text":
            print(event.chunk, end="", flush=True)
        else:
            print(f"Other event: {event}")

    Combine these features and we can finally provide a robust implementation of the semi-standard OpenAI chat completions API, which I've now released as the llm-chat-completions-server plugin:

    llm install llm-chat-completions-server
    llm chat-completions-server --port 9000
    # Server is now running on http://127.0.0.1:9000/v1

    Now you can run prompts against LLM via that server, using the new llm openai endpoint command!

    llm openai endpoint http://127.0.0.1:9000/v1 'hello' -m gpt-5.4-mini

    The bigger challenge with that kind of API concerns logging. If we're going to support the pattern where the message sequence is appended to on every request, ideally we can avoid logging all of that duplicate JSON for every turn.

    The solution is the new content-addressable message store, modeled after Git. You can see the new schema for that in the documentation, but the llm logs and llm logs --json commands have both been upgraded to convert that format back into something that's easy to consume.

    And the rest

    There is a whole lot more in this release. The 0.32 release notes are pretty comprehensive, and the notes for 0.32rc2, 0.32rc, 0.32a3, 0.32a2, and 0.32a0 should fill in any gaps.

    Existing LLM plugins should all continue to work, but plugins that provide extra models will need to be upgraded to 0.32 in order to participate fully in the new streaming events system. There's a guide to implementing plugins with Structured messages and streaming events in the documentation.

    I've updated some of my own plugins:

    I guess LLM is an agent framework now

    Quite a few of the lower-level tools changes in this release were driven by the needs of Datasette Agent. When I started work on LLM, the term "agent" had such a vague definition that I refused to use it. In September 2025 I came around to the idea that "An LLM agent runs tools in a loop to achieve a goal" is well established enough now that I could stop avoiding the term entirely.

    Tool chains can now pause for human approval and resume from a stored message history - both needed by Datasette Agent.

    Looking at LLM today it's beginning to look very agent-shaped to me. There's something neat about having a CLI utility that can mix and match different tools from different sources with different models all as a one-liner, and that includes a Python library powerful enough to build systems like Datasette Agent and llm-coding-agent.

    Maybe the next version of LLM will bake the concept of an "agent" into the core library. I'm still trying to figure out what that would look like.

    You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options.

  • Using Trust & Safety Tycoon In The Classroom

    Early in the media law and ethics course I teach, as I shift gears from the ethics section to the law and core free speech issues, I try to build a foundation by introducing the many kinds of legal issues they may face as communicators. By this time, we have already discussed social media platforms […]
  • Is there more info on how something appears on the explore timeline?

    I subscribed to a feed-of-feeds that i put together from a folder on inoreader. It's a feed of my posts on mastodon, lemmy, etc.

    I expected it to only appear on my Following timeline, but a couple of posts appeared on the explore timeline.

    Should users consider anything added to Following to be public? Or can we know more about what will stay on our private Following timeline and what appears on Explore?

    I'm not complaining, as I don't know if something has gone wrong exactly and this isn't a security or privacy issue, it would just be good to know what to expect.

Older posts