Lotu RadarAbout · RSS

Latest News Archive - Page 530

Cloud & Infrastructure · The New Stack

Anthropic launches Claude Science, an AI workbench for scientific research

On Tuesday, Anthropic launched Claude Science, a new application for scientists that can run locally on macOS and Linux or The post Anthropic launches Claude Science, an AI workbench for scientific research appeared first on The New Stack .

AI · TechCrunch AI

Anthropic’s Claude Science bets on workflow, not a new model, to win over scientists

Anthropic's Claude Science is a workbench that gives scientists one environment to do computational research, saving them from the need to bounce between databases, pipelines, and tools.

Products & Consumer Tech · Ars Technica

Trump's plan to redesign every .gov website leads to AI-designed horrors

A year in, National Design Studio delays plan to update government web standards.

Startups & Funding · Hacker News Best

We Are the Last People Who Know How It Works

Article URL: https://unix.foo/posts/last-people-who-know-how-it-works/ Comments URL: https://news.ycombinator.com/item?id=48735633 Points: 298 # Comments: 247

Notable Blogs · Simon Willison

Have your agent record video demos of its work with shot-scraper video

shot-scraper video is a new command introduced in today's shot-scraper 1.10 release which accepts a storyboard.yml file defining a routine to run against a web application and uses Playwright to record a video of that routine. I've written before about the importance of having coding agents produce demos of their work; this is my latest attempt at enabling them to do that. Here's an example video created using shot-scraper video , exercising a still in development feature adding the ability to create new tables in Datasette from pasted CSV, TSV or JSON data: That video was created by running this command : shot-scraper video datasette-bulk-insert-storyboard.yml \ --auth datasette-demo-auth.json --mp4 (That --auth JSON file contains a cookie , as described here in the documentation.) Here's the datasette-bulk-insert-storyboard.yml file: output : /tmp/datasette-bulk-insert-demo.webm server : - uv - --directory - /Users/simon/Dropbox/dev/datasette - run - datasette - -p - 6419 - --root - --secret - " 1 " - /tmp/demo.db url : http://127.0.0.1:6419/demo/tasks viewport : width : 1280 height : 720 cursor : true wait_for : ' button[data-table-action="insert-row"] ' javascript : | (() => { let clipboardText = ""; Object.defineProperty(navigator, "clipboard", { configurable: true, get: () => ({ writeText: async (text) => { clipboardText = String(text); }, readText: async () => clipboardText, }), }); })(); scenes : - name : Bulk insert existing table rows do : - pause : 0.8 - click : ' button[data-table-action="insert-row"] ' - wait_for : " #row-edit-dialog[open] " - pause : 0.5 - click : " .row-edit-bulk-insert " - wait_for : " .row-edit-bulk-textarea " - pause : 0.5 - click : " .row-edit-copy-template " - wait_for : " text=Copied " - pause : 0.8 - fill : into : " .row-edit-bulk-textarea " text : | title,owner,status,priority,notes Prepare release video,Ana,doing,1,Recorded with shot-scraper Check pasted CSV import,Ben,review,3,Previewed before inserting Share the branch demo,Chen,queued,2,Bulk insert creates three rows - pause : 0.8 - click : " .row-edit-save " - wait_for : " text=Previewing 3 rows. " - pause : 1.2 - click : " .row-edit-save " - wait_for : " text=3 rows inserted. " - pause : 1.0 - click : " .row-edit-cancel " - wait_for : " text=Prepare release video " - pause : 1.0 - name : Create a table from pasted CSV open : http://127.0.0.1:6419/demo wait_for : ' details.actions-menu-links summary ' do : - pause : 0.8 - click : ' details.actions-menu-links summary ' - click : ' button[data-database-action="create-table"] ' - wait_for : " #table-create-dialog[open] " - pause : 0.5 - fill : into : " .table-create-table-name " text : " launch_metrics " - click : " .table-create-from-data " - wait_for : " .table-create-data-textarea " - pause : 0.5 - fill : into : " .table-create-data-textarea " text : | metric_id,name,score,recorded_on m001,Activation rate,87.5,2026-06-29 m002,Retention check,72.25,2026-06-30 m003,CSV import health,95,2026-07-01 - pause : 0.8 - click : " .table-create-save " - wait_for : " text=Previewing 3 rows. " - pause : 1.2 - click : " .table-create-save " - wait_for_url : " **/demo/launch_metrics " - wait_for : " text=Activation rate " - pause : 1.2 The video command documentation includes simpler examples, but for the purpose of this post I thought I'd go with something more comprehensive. That demo YAML storyboard was constructed entirely by GPT-5.5 xhigh running in Codex Desktop, using the following prompt run inside my ~/dev/datasette checkout of this branch : Review the changes on this branch. cd to ~/dev/shot-scraper and run the command "uv run shot-scraper video --help" Now use that new video command to record a video demo of the new features from this branch, including running a "uv run datasette -p 6419 --root --secret 1 /tmp/demo.db" development server so you can record the video against a demo DB that you first create. Now that I've released the feature the prompt could say " run uvx shot-scraper video --help " instead and it should achieve the same result. I really like this pattern where the --help output for a command provides enough detail that a coding agent can use it - it works kind of like bundling a SKILL.md file directly inside the tool. I used the same pattern for showboat and rodney . How I built this shot-scraper video started as an experimental prototype. shot-scraper is built on top of Playwright , and the key feature it needed was for Playwright to be able to record video of browser sessions with enough control to create the desired demo. I first tried this a few years ago and found that the Playwright-produced videos included additional chrome that was useful for debugging a test failure but unwanted for a product demo. They fixed that a while ago, but there were still some minor blockers. In particular I was getting a few white frames at the start of the videos , since the recording mechanism kicked in before the first URL was loaded by the browser. Playwright 1.59 added a new screencast mechanism providing much more finely grained control over video recording. This was very nearly what I needed, but the resulting videos were fixed at 800px wide. I found a landed PR fixing that but it wasn't yet in a release. Then yesterday they shipped it in playwright-python 1.61.0 and I was finally unblocked to finish implementing the feature! The code itself was all written by GPT-5.5 xhigh in Codex Desktop. I had it write the documentation as well which gave me a very useful frame for reviewing the design - much of the iteration on the feature came from reviewing that documentation, spotting things that were redundant, inconsistent or confusing, and requesting (or dictating) a better design. The YAML format itself was mostly defined by the coding agent. I had it use Pydantic to both define and validate the format, partly to make the design easier to review. This is a great example of the kind of feature that I almost certainly wouldn't have taken on without coding agent support. I filed the original issue in February 2024, and had difficulty finding the necessary time to solve this in amongst all of my other projects. Tags: projects , python , yaml , ai , datasette , playwright , shot-scraper , generative-ai , llms , pydantic , coding-agents , agentic-engineering

Products & Consumer Tech · Product Hunt

ClinicFrame

Like Granola, but for healthcare. Fully HIPAA-compliant. Discussion | Link

Startups & Funding · Hacker News Best

Nano Banana 2 Lite

Article URL: https://deepmind.google/models/gemini-image/flash-lite/ Comments URL: https://news.ycombinator.com/item?id=48735444 Points: 296 # Comments: 116

Business · BBC Business

Cruise passengers 'stranded' after air con failure to be flown home

Tui has apologised and told passengers it has arranged flights home for tomorrow and a full refund.

World · The Guardian World

‘They will attack me if I stay’: immigrants in South Africa flee for safety amid violence and anti-foreigner protests

More than 2,000 anti-foreigner protesters march through Durban city centre as the arbitrary deadline passes for undocumented migrants to leave the country South Africa was holding its breath on Tuesday as mass anti-immigration protests were held across the country. They come after a weeks-long campaign against foreigners that has seen at least four killed and tens of thousands fleeing for safety. In the coastal city of Durban, where violence had been expected, the streets were unusually quiet and shops were shuttered as tension hung thick in the air. Continue reading...

World · The Guardian Ukraine

Is the UK spending enough on defence? - The Latest

The prime minister has unveiled his long-delayed defence investment plan, promising an extra £15bn in defence spending over the next four years. The funding, which will be spent on drones, nuclear projects and RAF fighter jets, has been made available through cuts to energy, transport and housing projects. Keir Starmer urged his likely successor, the Labour MP Andy Burnham, not to borrow more money to pay for it. Lucy Hough speaks to Guardian policy editor Kiran Stacey. Continue reading...

Developers & Open Source · GitHub Changelog

GitHub code coverage merge protection for pull requests

You can now use branch rulesets to block pull requests from merging when test coverage drops below thresholds you set. You can set a minimum coverage percentage, a maximum allowed… The post GitHub code coverage merge protection for pull requests appeared first on The GitHub Blog .

World · Al Jazeera

The path from Gaza to Trump’s return

How the Biden administration’s response to October 7 reshaped US politics and influenced the 2024 presidential election.

Developers & Open Source · cloudflare/workers-sdk Releases

wrangler@4.106.0

Minor Changes #14490 75d8cb0 Thanks @petebacondarwin ! - Add wrangler ai-search jobs commands for managing AI Search indexing jobs You can now list, trigger, inspect, cancel, and read the logs of indexing jobs for an AI Search instance: wrangler ai-search jobs create --description "manual reindex" wrangler ai-search jobs get wrangler ai-search jobs cancel wrangler ai-search jobs logs "> wrangler ai-search jobs list wrangler ai-search jobs create --description "manual reindex" wrangler ai-search jobs get wrangler ai-search jobs cancel wrangler ai-search jobs logs All commands accept --namespace / -n (defaults to default ). All commands except cancel also accept --json for clean machine-readable output. #14490 75d8cb0 Thanks @petebacondarwin ! - Add --source-jurisdiction to wrangler ai-search create for R2-backed instances R2 buckets can live in a specific jurisdiction (for example eu or fedramp ). You can now point an AI Search instance at a bucket in one of those jurisdictions: wrangler ai-search create my-instance --type r2 --source my-bucket --source-jurisdiction eu When run interactively, the R2 source flow also prompts for a jurisdiction and lists (and can create) buckets within it. The value is a free-form string forwarded to the API as source_params.r2_jurisdiction (server-side validated); omit the flag for no specific jurisdiction. This AI Search command is in open beta. #14490 75d8cb0 Thanks @petebacondarwin ! - Add auth profiles for managing multiple OAuth logins Auth profiles let you maintain separate OAuth logins and bind them to directories, so you can switch between different accounts for different projects without having to re-login. For example: wrangler auth create work wrangler auth activate work ~ /projects/work wrangler auth create personal wrangler auth activate personal ~ /projects/personal New commands under wrangler auth : wrangler auth create — create or re-authenticate a named profile via OAuth wrangler auth delete — delete a profile and all its directory bindings wrangler auth activate [dir] — bind a profile to a directory (defaults to cwd). Sub-directories will inherit this profile. wrangler auth deactivate [dir] — remove a directory binding wrangler auth list — list all profiles and their corresponding directories There is also a new global --profile flag, which you can use to activate a profile for just that command run. Note that if you have CLOUDFLARE_API_TOKEN set, that will still take precedence over all profiles. Any account id settings (via CLOUDFLARE_ACCOUNT_ID or wrangler config) will also still be respected. #14490 75d8cb0 Thanks @petebacondarwin ! - Add --strict flag to wrangler versions upload and improve pre-upload safety checks wrangler versions upload now runs the same pre-upload checks as wrangler deploy : When the Worker was last edited via the Cloudflare Dashboard, the local and remote configurations are diffed and you are warned only if the diff is destructive (previously, an unconditional warning was shown). When local configuration values conflict with remote secrets, a warning is shown before proceeding. When deploying workflows that belong to a different Worker, a warning is shown before proceeding. The new --strict flag (already available on wrangler deploy ) causes wrangler versions upload to abort in non-interactive/CI environments when any of these conflicts are detected, instead of auto-continuing. #14490 75d8cb0 Thanks @petebacondarwin ! - Add D1 migration setup to createTestHarness() Worker handles Tests using createTestHarness() can now apply local D1 migrations before running requests: { await worker.applyD1Migrations("DATABASE"); });"> const worker = server . getWorker ( ) ; beforeEach ( async ( ) => { await worker . applyD1Migrations ( "DATABASE" ) ; } ) ; #14490 75d8cb0 Thanks @petebacondarwin ! - Add Workflow introspection to createTestHarness() Worker handles can now introspect Workflow bindings by name, allowing tests to disable sleeps, mock step results, and wait for Workflow outcomes. Tests can introspect a known Workflow instance by ID or track instances created after introspection starts. modifier.disableSleeps([{ name: "wait-for-approval" }]) ); const response = await worker.fetch("/start-workflow"); const [instance] = await workflow.get(); await instance.waitForStatus("complete");"> const harness = createTestHarness ( { workers : [ { configPath : "./wrangler.json" } ] , } ) ; const worker = harness . getWorker ( ) ; await using workflow = await worker . introspectWorkflow ( "MY_WORKFLOW" ) ; await workflow . modifyAll ( ( modifier ) => modifier . disableSleeps ( [ { name : "wait-for-approval" } ] ) ) ; const response = await worker . fetch ( "/start-workflow" ) ; const [ instance ] = await workflow . get ( ) ; await instance . waitForStatus ( "complete" ) ; #14446 e0cc2cb Thanks @edmundhung ! - Add bindingOverrides and getExport() to createTestHarness() Test harness workers loaded from Wrangler config files can now replace a configured binding with a Worker in the same harness. This is useful for replacing platform bindings with test Workers while keeping the source Worker config production-like. You can also call getExport() on a Worker returned by server.getWorker(name) to access JSRPC methods on the default Worker export, including mock Workers used as override targets. ("mock-browser") .getExport(); await mockBrowser.setScreenshot(stubPng); const response = await server.fetch("/reports/2026-05-29.png"); expect(await response.bytes()).toEqual(stubPng);"> const server = createTestHarness ( { workers : [ { configPath : "./workers/app/wrangler.jsonc" , bindingOverrides : { BROWSER : "mock-browser" } , } , { // A mock Worker implementing the Browser Rendering binding named "mock-browser". configPath : "./workers/mock-browser/wrangler.jsonc" , } , ] , } ) ; const mockBrowser = await server . getWorker WebEnv , typeof import ( "./workers/mock-browser" ) > ( "mock-browser" ) . getExport ( ) ; await mockBrowser . setScreenshot ( stubPng ) ; const response = await server . fetch ( "/reports/2026-05-29.png" ) ; expect ( await response . bytes ( ) ) . toEqual ( stubPng ) ; #14490 75d8cb0 Thanks @petebacondarwin ! - Improve wrangler tail resilience and shutdown behaviour wrangler tail previously crashed with a raw stack trace when the keep-alive ping to the Worker timed out, and could exit with an ugly error on Ctrl-C. Errors now flow through wrangler's usual error pipeline instead of escaping as uncaught exceptions. The keep-alive timeout message now clearly explains what happened and no longer prints a stack trace. When the tail connection drops unexpectedly, wrangler tail now automatically tries to reconnect with exponential back-off (up to 5 retries). Ctrl-C now prints a short "Stopping tail..." message (in pretty mode), awaits the server-side tail deletion, and exits cleanly with code 0. Patch Changes #14490 75d8cb0 Thanks @petebacondarwin ! - Update dependencies of "miniflare", "wrangler" The following dependency versions have been updated: Dependency From To workerd 1.20260625.1 1.20260629.1 #14478 f10d4ad Thanks @dependabot ! - Update dependencies of "miniflare", "wrangler" The following dependency versions have been updated: Dependency From To workerd 1.20260629.1 1.20260630.1 #14490 75d8cb0 Thanks @petebacondarwin ! - Improve the deploy warning shown when a Workflow name already belongs to another Worker The warning still notes that deploying reassigns the workflow to the current Worker, and now also explains why this happens (workflow names must be unique per account) and how to resolve it (rename the workflow in the Wrangler config). #14490 75d8cb0 Thanks @petebacondarwin ! - use stream instead of deprecated pipeline key in pipelines setup config snippet The wrangler pipelines setup and wrangler pipelines create commands now output the correct stream property name in the configuration snippet, matching the rename from pipeline to stream that was applied across the rest of the codebase. #14490 75d8cb0 Thanks @petebacondarwin ! - Improve KV error messages to be clearer and more actionable Error messages for KV namespace and key operations now consistently explain what went wrong, which flags or config fields to use, and what commands to run as alternatives. This covers namespace selection errors (delete, rename), binding resolution errors, config file issues, and preview namespace ambiguity. #14479 d292046 Thanks @dario-piotrowicz ! - Improve R2 error messages to be clearer and more actionable Error messages for r2 bucket lifecycle , r2 bucket lock , r2 bucket catalog , and r2 sql commands now include the specific flag or argument that is missing or invalid, along with usage examples showing the correct syntax. #14490 75d8cb0 Thanks @petebacondarwin ! - Improve wrangler versions deploy error messages for non-interactive usage Error messages in wrangler versions deploy are now clearer and more actionable, especially for non-interactive and agent-driven usage. Each error now explains what went wrong, what was expected, and how to fix it (e.g. suggesting the correct flag or command syntax). #14490 75d8cb0 Thanks @petebacondarwin ! - Fix the remote secrets override check during deploy targeting the wrong Worker when --name is passed The check that warns when a config value would override an existing remote secret was using the Worker name from the config file rather than the resolved name. If you passed --name , the check ran against the config-file Worker name instead of the Worker actually being uploaded. #14490 75d8cb0 Thanks @petebacondarwin ! - Abort in-flight custom builds when wrangler dev exits or restarts a build Previously, wrangler dev marked in-flight custom builds as stale but did not pass the abort signal to the spawned build command. This meant Ctrl-C could appear to hang while Wrangler waited for a custom build command to finish naturally. Custom build commands are now cancelled when the dev session tears down or a newer watched build supersedes them. #14490 75d8cb0 Thanks @petebacondarwin ! - Replace existing bindings when adding newly created resources to Wrangler configuration When config updates are authorized interactively or through --update-config or --binding , Wrangler now replaces an existing resource binding with the selected name instead of adding a duplicate entry. This allows template bindings with placeholder resource IDs to be updated in both interactive and non-interactive workflows. #14490 75d8cb0 Thanks @petebacondarwin ! - Verify Docker is installed and running before wrangler containers build Previously, running wrangler containers build without Docker installed or with the Docker daemon stopped would fail with an unhelpful spawn error. Now the command checks that Docker is reachable upfront and shows a clear, actionable error message with installation and troubleshooting steps. #14490 75d8cb0 Thanks @petebacondarwin ! - Add images as a valid --source for queues subscription create The Cloudflare Images service can emit events (e.g. image.uploaded ) to a Cloudflare Queue via the event subscriptions API, and this is supported by both the REST API and the Cloudflare Dashboard. However, the wrangler CLI was missing images from the hardcoded --source choices list, causing the command to reject it with an "Invalid values" error. You can now subscribe a queue to Cloudflare Images events via the CLI: --source images --events image.uploaded"> wrangler queues subscription create queue > --source images --events image.uploaded Updated dependencies [ 75d8cb0 , f10d4ad , 75d8cb0 , 75d8cb0 ]: miniflare@4.20260630.0

Developers & Open Source · GitHub Changelog

Releases: Sidebar navigation and per-asset download counts

You can now scan and navigate release pages more easily with a dedicated sidebar table of contents. We also updated release metadata placement for a more consistent layout so it’s… The post Releases: Sidebar navigation and per-asset download counts appeared first on The GitHub Blog .

World · Al Jazeera

How severe is Russia’s energy shortage because of Ukrainian strikes?

Analysts say Russia's fuel crisis may affect its domestic economy, but the war in Ukraine will remain the priority.

Society · NPR Top Stories

Rep. Tom Kean returns to Congress, says depression is why he went missing for months

The New Jersey Republican was missing for months with no explanation for his constituents. He explained in a House floor speech that after his diagnosis, there was no timeline for recovery.

World · BBC World

Almost 60,000 far-right extremists in Germany, intelligence agency says

More than a quarter of those identified are believed to be violent, Germany's domestic intelligence agency says.

Startups & Funding · Hacker News Best

County with 37 Data Centers Asks Schools to 'Conserve Electricity'

Article URL: https://www.404media.co/henrico-virginia-datacenter-energy-cost-email/ Comments URL: https://news.ycombinator.com/item?id=48734699 Points: 389 # Comments: 178

Products & Consumer Tech · The Verge

The Bose Soundlink Max is $120 off ahead of the July 4th weekend

The Bose Soundlink Max is usually $399, but has been on steep discount this week at Amazon, Best Buy, and directly from Bose for $279. This Bluetooth speaker has a big and bold sound, with a wide soundstage that impressed us in our review. It’s great for the outdoors thanks to its IP67 rating, meaning […]

Products & Consumer Tech · Ars Technica

The US going 100% EV by 2040 would save more than 100k lives, study says

Much of it comes from heavy-duty trucks and buses that burn diesel.

Cloud & Infrastructure · The New Stack

AWS launches a desktop for agents

After a short public preview, AWS on Tuesday made its Amazon WorkSpaces for Agents — which you should definitely not The post AWS launches a desktop for agents appeared first on The New Stack .

World · Deutsche Welle

US birthright citizenship: What does Trump's loss mean?

The US Supreme Court has blocked Donald Trump’s attempt to end birthright citizenship, leaving US law unchanged. But why was the issue so important to Donald Trump, and what does his loss really mean?

World · Deutsche Welle

US top court backs birthright citizenship in rebuke to Trump

US President Donald Trump had issued an executive order that would have changed constitutional guarantees that people born on US soil are citizens. The court also ruled on campaign finance and transgender athletes.

Developers & Open Source · GitHub Changelog

Copilot Agent is now available in JetBrains AI Assistant

Today, JetBrains and GitHub are announcing a deeper integration between JetBrains AI Assistant and GitHub Copilot. Millions of developers already rely on the GitHub Copilot plugin as their AI pair… The post Copilot Agent is now available in JetBrains AI Assistant appeared first on The GitHub Blog .