(date: 2025-04-03 14:09:09)
date: 2025-04-03, from: Geoffrey Hunntley’s blog
Why did I do this? I have no idea, honest, but it now exists. It has been over 10 years since I last had to use the Win32 API, and part of me was slightly curious about how the Win32 interop works with Rust.
Anywhoooo, below you'll find
date: 2025-04-03, from: Windows Developer Blog
The latest Babylon.js 8.0 release includes several updates to assist developers in creating beautiful and performant 3D experiences.
Babylon.js 8.0 continues the lo
The post Part 3 – Babylon.js 8.0: glTF, USDz, and WebXR advancements appeared first on Windows Developer Blog.
date: 2025-04-03, updated: 2025-04-03, from: Oberon A2 repository
Felix Oliver Friedrich (bd8ea88c) at 03 Apr 21:53
all files compile on 64bit
https://gitlab.inf.ethz.ch/felixf/oberon/-/commit/bd8ea88ca09b7acb789ae80ab393968beb0cc8d1
date: 2025-04-03, from: Michael Tsai
Bill Gates (via Slashdot): It feels like just yesterday that Paul and I were hunched over the PDP-10 in Harvard’s computer lab, writing the code that would become the first product of our new company. That code remains the coolest code I’ve ever written to this day—and you can see it for yourself at the […]
https://mjtsai.com/blog/2025/04/03/altair-basic-source-code/
date: 2025-04-03, from: Michael Tsai
Reuters (PDF, Slashdot): Apple was hit with a 150 million euro ($162.4 million) fine by French antitrust regulators on Monday for abusing its dominant position in mobile app advertising on its devices via a privacy control tool. […] “While we are disappointed with today’s decision, the French Competition Authority has not required any specific changes […]
https://mjtsai.com/blog/2025/04/03/france-fines-apple-over-app-tracking-transparency/
date: 2025-04-03, from: Michael Tsai
Joe Mullin: In a moment of clarity after initially moving forward a deeply flawed piece of legislation, the French National Assembly has done the right thing: it rejected a dangerous proposal that would have gutted end-to-end encryption in the name of fighting drug trafficking. Despite heavy pressure from the Interior Ministry, lawmakers voted Thursday night […]
https://mjtsai.com/blog/2025/04/03/france-rejects-backdoor-mandate/
date: 2025-04-03, from: Michael Tsai
Apple: Starting today, with the availability of iOS 18.4, iPadOS 18.4, and macOS Sequoia 15.4, Apple Intelligence features are now available in many new languages, including French, German, Italian, Portuguese (Brazil), Spanish, Japanese, Korean, and Chinese (simplified) — as well as localized English for Singapore and India — and are accessible in nearly all regions […]
https://mjtsai.com/blog/2025/04/03/apple-intelligence-available-in-eu/
date: 2025-04-03, from: Liliputing
Mozilla Thunderbird is a free and open source email client, calendar, and contact application that’s been available for more than two decades. It first launched at a time when Gmail wasn’t a thing and most web-based email service providers offered only a few megabytes of storage space. But the demand for desktop-only email applications has […]
The post Thunderbird plans to launch open source alternatives to Gmail, Google Calendar and Office 365 appeared first on Liliputing.
date: 2025-04-03, from: Gary Marcus blog
Probably yes
https://garymarcus.substack.com/p/did-an-llm-help-write-trumps-trade
@Dave Winer’s linkblog (date: 2025-04-03, from: Dave Winer’s linkblog)
Tesla's only growing business was just kneecapped by Trump's tariffs.
https://electrek.co/2025/04/03/tesla-only-growing-business-kneecapped-trump-tariffs/
date: 2025-04-03, from: Bacalhau Blog
for Open Source Data Platform of the Year
https://blog.bacalhau.org/p/expanso-wins-2025-data-breakthrough
date: 2025-04-03, from: Guy Kawasaki blog
Yamilée Toussaint’s Dance Revolution.
https://guykawasaki.substack.com/p/breaking-the-stem-stereotype
date: 2025-04-03, from: 404 Media Group
Jason, Sam, and Emanuel talk about Miyazaki being turned into a meme, the guys suing OnlyFans after being surprised to learn they were not actually talking to models, and the depravity of “brainrot” AI.
https://www.404media.co/podcast-openais-studio-ghibli-ai-is-an-insult-to-life-itself/
date: 2025-04-03, updated: 2025-04-03, from: One Foot Tsunami
https://onefoottsunami.com/2025/04/03/sooner-or-later-youll-pay/
date: 2025-04-03, from: 404 Media Group
“The policy announcement is astonishing for its stupidity. It seems like a joke!”
@Dave Winer’s linkblog (date: 2025-04-03, from: Dave Winer’s linkblog)
Trump’s new tariff math looks a lot like ChatGPT’s.
https://www.theverge.com/news/642620/trump-tariffs-formula-ai-chatgpt-gemini-claude-grok
date: 2025-04-03, from: Liliputing
I’ve lost count of the number of companies that have launched software designed to bridge the divide between smartphones and PCs. Microsoft has Phone Link. Samsung has Samsung Flow. And over the years I’ve seen PC makers introduce and eventually discontinue a bunch of proprietary solutions. Last year Intel introduced its entry in this space: […]
The post Intel is discontinuing its Unison app for connecting smartphones and PCs (just two years after launch) appeared first on Liliputing.
date: 2025-04-03, updated: 2025-04-03, from: Simon Willison’s Weblog
First look at the modern attr()
Chrome 133 (released February 25th 2025) was the first browser to ship support for the advanced CSSattr()
function
(MDN),
which lets attr()
be used to compose values using types
other than strings.
Ahmad Shadeed explores potential applications of this in detail, trying it out for CSS grid columns, progress bars, background images, animation delays and more.
I like this example that uses the rows=“5”
attribute on a
<textarea>
to calculate its max-height
-
here wrapped in a feature detection block:
@supports (x: attr(x type(*))) { textarea { min-height: calc( attr(rows type(<number>)) * 50px ); } }
That type(<number>)
is the new syntax.
Many of Ahmad’s examples can be achieved today across all browsers using a slightly more verbose CSS custom property syntax.
Here are the tracking issues for CSS values support in
attr()
for
Firefox
(opened 17 years ago) and
WebKit (16
years ago).
<p>Tags: <a href="https://simonwillison.net/tags/css">css</a>, <a href="https://simonwillison.net/tags/css-custom-properties">css-custom-properties</a>, <a href="https://simonwillison.net/tags/chrome">chrome</a>, <a href="https://simonwillison.net/tags/web-standards">web-standards</a>, <a href="https://simonwillison.net/tags/ahmad-shadeed">ahmad-shadeed</a></p>
https://simonwillison.net/2025/Apr/3/first-look-at-the-modern-attr/#atom-everything
date: 2025-04-03, updated: 2025-04-03, from: Simon Willison’s Weblog
Vincent D. Warmerdam built this ingenious wrapper around my LLM Python library which lets you build LLM wrapper functions using a decorator and a docstring:from smartfunc import backend @backend("gpt-4o") def generate_summary(text: str): """Generate a summary of the following text: {{ text }}""" pass summary = generate_summary(long_text)
It works with LLM plugins so the same pattern should work against Gemini, Claude and hundreds of others, including local models.
It integrates with more recent LLM features too, including async support and schemas, by introspecting the function signature:
class Summary(BaseModel): summary: str pros: list[str] cons: list[str] @async_backend("gpt-4o-mini") async def generate_poke_desc(text: str) -> Summary: "Describe the following pokemon: {{ text }}" pass pokemon = await generate_poke_desc("pikachu")
Vincent also recorded a 12 minute video walking through the implementation and showing how it uses Pydantic, Python’s inspect module and typing.get_type_hints() function.
<p>Tags: <a href="https://simonwillison.net/tags/llm">llm</a>, <a href="https://simonwillison.net/tags/python">python</a>, <a href="https://simonwillison.net/tags/generative-ai">generative-ai</a>, <a href="https://simonwillison.net/tags/ai">ai</a>, <a href="https://simonwillison.net/tags/llms">llms</a>, <a href="https://simonwillison.net/tags/vincent-d-warmerdam">vincent-d-warmerdam</a></p>
https://simonwillison.net/2025/Apr/3/smartfunc/#atom-everything
date: 2025-04-03, from: Gary Marcus blog
Is he well?
https://garymarcus.substack.com/p/questions-about-president-trump-from
date: 2025-04-03, updated: 2025-04-03, from: Oberon A2 repository
Felix Oliver Friedrich (d43baa3b) at 03 Apr 15:46
a few more
https://gitlab.inf.ethz.ch/felixf/oberon/-/commit/d43baa3b165d862cd9c16bbfd5a812a460ad9355
date: 2025-04-03, from: Authors Union blogs
Chinese courts are recognizing AI-generated works as copyrightable, and these rulings could potentially impact those in the US under certain circumstances.
@Dave Winer’s linkblog (date: 2025-04-03, from: Dave Winer’s linkblog)
Waltz’s team set up at least 20 Signal group chats for crises across the world.
date: 2025-04-03, from: Status-Q blog
Amongst the more bizarre aspects of the Trump tariff announcements last night were the figures he came up with for the tariffs being charged by other countries. Even people who are as unfamiliar with economics as I am wondered, “Where on earth did he get those from?” They didn’t seem to bear any resemblance to Continue Reading
https://statusq.org/archives/2025/04/03/13111/
date: 2025-04-03, updated: 2025-04-03, from: Oberon A2 repository
Felix Oliver Friedrich (b1251cc3) at 03 Apr 12:51
a few more steps
https://gitlab.inf.ethz.ch/felixf/oberon/-/commit/b1251cc3253319c6b0f451c218fd171458f5e506
@Dave Winer’s linkblog (date: 2025-04-03, from: Dave Winer’s linkblog)
I’ve been friends with Om for decades, but he’s wrong about Bluesky. It’s a clone of Twitter, that’s why it’s so popular, but it has the same flaw Twitter had — it could be turned against its users by an acquiring billionaire. He and his co-author fell for their hype.
https://crazystupidtech.com/archive/bluesky-isnt-just-another-twitterx-competitor-it/
@Dave Winer’s linkblog (date: 2025-04-03, from: Dave Winer’s linkblog)
Trump’s Fight Against Antisemitism Has Become Fraught for Many Jews.
https://www.nytimes.com/2025/04/02/us/jews-trump.html
date: 2025-04-03, from: Paul Krugman
Trump’s tariffs are a disaster. His policy process is worse.
https://paulkrugman.substack.com/p/will-careless-stupidity-kill-the
date: 2025-04-03, from: Libre News
Linux support for the Snapdragon X Elite is not there yet, but Tuxedo has a plan to ship their ARM-based Linux laptop anyway.
https://thelibre.news/snadpragon-laptops-are-pretty-rough-on-linux-but-theres-hope-2/
date: 2025-04-03, from: Raspberry Pi News (.com)
A Raspberry Pi Pico W–powered e-ink display helps this maker stay on track with the demands of a busy schedule.
The post Stay on schedule with Raspberry Pi Pico W and an e-ink dashboard appeared first on Raspberry Pi.
https://www.raspberrypi.com/news/stay-on-schedule-with-raspberry-pi-pico-w-and-an-e-ink-dashboard/
@Dave Winer’s linkblog (date: 2025-04-03, from: Dave Winer’s linkblog)
Trump wanted people to inject chlorine, take ivermectin, to recover from Covid, now prescribes same for the world economy.
date: 2025-04-03, updated: 2025-04-03, from: Oberon A2 repository
Felix Oliver Friedrich (4b9505b7) at 03 Apr 09:33
continued with adaptation
https://gitlab.inf.ethz.ch/felixf/oberon/-/commit/4b9505b7b54cc89e6b00f1d304f13fd90a98bd95
@Dave Winer’s linkblog (date: 2025-04-03, from: Dave Winer’s linkblog)
Inside ICE Air: What It’s Like to Be a Deportation Flight Attendant.
https://www.propublica.org/article/inside-ice-air-deportation-flights
date: 2025-04-03, from: Fix the News
Plus, Thailand bans smacking kids, solar canals, India’s super highways, and good news on dementia in the United States, wildlife crossings in Colorado, and Finland going coal-free ahead of schedule.
https://fixthenews.com/291-merlins-manuscript/
date: 2025-04-03, from: Hannah Richie at Substack
And no, it’s not just for old ones that have done lots of miles.
https://www.sustainabilitybynumbers.com/p/used-electric-car-costs
date: 2025-04-03, updated: 2025-04-03, from: Tedium site
It’s pretty much the answer to a trivia question at this point, but there was once a version of VHS that looked better than DVDs. Really.
https://feed.tedium.co/link/15204/16997781/d-vhs-d-theater-digital-vcr-history
@Seth Erickson’s Mastodon feed (date: 2025-04-03, from: Seth Erickson’s Mastodon feed)
Nicely designed scholarly web project: https://stones.computer
https://hachyderm.io/@serickson/114271765657834315
date: 2025-04-03, updated: 2025-04-03, from: Simon Willison’s Weblog
Minimal CSS-only blurry image placeholders
Absolutely brilliant piece of CSS ingenuity by Lean Rada, who describes a way to implement blurry placeholder images using just CSS, with syntax like this:<img src="…" style="--lqip:192900">
That 192900 number encodes everything needed to construct the placeholder - it manages to embed a single base color and six brightness components (in a 3x2 grid) in 20 bits, then encodes those as an integer in the roughly 2 million available values between -999,999 and 999,999 - beyond which range Lean found some browsers would start to lose precision.
The implementation for decoding that value becomes a bunch of clever bit-fiddling CSS expressions to expand it into further CSS variables:
[style*="--lqip:"] { --lqip-ca: mod(round(down, calc((var(--lqip) + pow(2, 19)) / pow(2, 18))), 4); --lqip-cb: mod(round(down, calc((var(--lqip) + pow(2, 19)) / pow(2, 16))), 4); /* more like that */ }
Which are expanded to even more variables with code like this:
--lqip-ca-clr: hsl(0 0% calc(var(--lqip-ca) / 3 * 100%)); --lqip-cb-clr: hsl(0 0% calc(var(--lqip-cb) / 3 * 100%));
And finally rendered using a CSS gradient definition that starts like this:
[style*="--lqip:"] { background-image: radial-gradient(50% 75% at 16.67% 25%, var(--lqip-ca-clr), transparent), radial-gradient(50% 75% at 50% 25%, var(--lqip-cb-clr), transparent), /* ... */ linear-gradient(0deg, var(--lqip-base-clr), var(--lqip-base-clr)); }
The article includes several interactive explainers (most of which are also powered by pure CSS) illustrating how it all works.
Their Node.js script for converting images to these magic integers uses Sharp to resize the image to 3x2 and then use the Oklab perceptually uniform color space (new to me, that was created by Björn Ottosson in 2020) to derive the six resulting values.
<p><small></small>Via <a href="https://news.ycombinator.com/item?id=43523220">Hacker News</a></small></p>
<p>Tags: <a href="https://simonwillison.net/tags/css">css</a>, <a href="https://simonwillison.net/tags/css-custom-properties">css-custom-properties</a></p>
https://simonwillison.net/2025/Apr/3/minimal-css-only-blurry-image-placeholders/#atom-everything
date: 2025-04-03, updated: 2025-04-03, from: Simon Willison’s Weblog
I started using Claude and Claude Code a bit in my regular workflow. I’ll skip the suspense and just say that the tool is way more capable than I would ever have expected. The way I can use it to interrogate a large codebase, or generate unit tests, or even “refactor every callsite to use such-and-such pattern” is utterly gobsmacking. […]
Here’s the main problem I’ve found with generative AI, and with “vibe coding” in general: it completely sucks out the joy of software development for me. […]
This is how I feel using gen-AI: like a babysitter. It spits out reams of code, I read through it and try to spot the bugs, and then we repeat.
— Nolan Lawson, AI ambivalence
<p>Tags: <a href="https://simonwillison.net/tags/ai-assisted-programming">ai-assisted-programming</a>, <a href="https://simonwillison.net/tags/claude">claude</a>, <a href="https://simonwillison.net/tags/generative-ai">generative-ai</a>, <a href="https://simonwillison.net/tags/ai">ai</a>, <a href="https://simonwillison.net/tags/llms">llms</a>, <a href="https://simonwillison.net/tags/nolan-lawson">nolan-lawson</a></p>
https://simonwillison.net/2025/Apr/3/nolan-lawson/#atom-everything
@Dave Winer’s linkblog (date: 2025-04-03, from: Dave Winer’s linkblog)
“Every living American was raised under the Bill of Rights.”
http://scripting.com/2025/04/02.html#a140506
date: 2025-04-03, from: Lean Rada’s blog
A year ago, I stood by the statement that AI Art is not Generative Art, arguing that the term ‘generative art’ is an art movement in itself that is separate from AI art.
Safe to say, it has been a losing battle.
Even the converse, “generative art is not necessarily AI art”, would be met by confusion from most people. ‘Generative’ has been equated to AI.
r/generative - Has the word ‘generative’ been hijacked by AI?
I think it’s time to move on to a different label. Words are for communication, and if a word results in failure of communication, we should either agree on a common definition (we can’t) or just use better word.
Fortunately, there are already well-established terms to describe the medium:
It’s just a matter of choosing one and leaving the now-loaded ‘generative’ term behind.
By the process of elimination, I think ‘procedural art’ is the best term to use. Let me explain each of the other options.
‘Algorithmic art’ is a top candidate, for sure, and many others have opted for it in the exodus from ‘generative’. Algorithmic art and procedural art are pretty much synonymous, so why or why not?
Pros: Unlike generative art, algorithmic art doesn’t have the unfortunate connotation from sharing a word with ‘generative AI’.
Cons: While ‘algorithmic art’ doesn’t immediately invoke visions of generative AI, the term ‘algortihm’ under the broad definition of a ‘set of instructions’ would still include machine learning models.
In fact, the word ‘algorithm’ has also entered commonplace usage via ‘social media algorithms’, which are yet another application of machine learning and statistics. In this sense, it is used interchangeably with the recommender system used to construct personalised content feeds. “The algorithm” is a black box, and the word suggests a system beyond understanding. This connotation is not in the spirit of procedural art, where the procedures are authored knowingly.
Another distinction is that while an algorithm is usually defined as a process that takes some input and processes it into an output, most procedural art programs don’t need inputs at all. They create things from scratch, from maths, from chaos. OK, technically random seeds would be considerend input. But on a conceptual level, no inputs!
First of all, it’s such a vague phrase. Why not ‘dynamic programming’? 😉
Anyway, that’s not the main point.
Procedural art has grown beyond just coding. I would even say most procedural artists don’t use code, but nodes and graphs. The majority of these procedural art would be used in video games and movie VFX.
Instead of coding, one would use node-based programming connecting nodes that represent operations, building up a graph to produce a complex image or even a 3D model.
And it’s not just for industrial VFX purposes. It’s also used mainly for multimedia, interactive, and installation art.
So… yeah this genre of art, is not coding.
Because the ‘procedure’, the ‘how’ is the core feature of procedural art.
In procedural art, we describe precisely how the artwork is made. And it’s far from describing to a chatbot in plain English. The how is well-defined and understood. Every shape, stroke, their positions, colours, ranges, constraints, rules of interaction, etc., are all described in some precise way. Sometimes we go down to individual pixel level as in a shader. Sometimes at a more geometric level, like in turtle or vector graphics. Sometimes on a mathematical level, like fractals. Sometimes it’s even a simulation with emergent properties!
Procedural art is more about the process, watching things unfold and emerge, rather than the final output that algorithms are obsessed about.
Procedural art is about the interaction of rules in interesting ways, regardless of whether the rules were written in code, or connected as a graph, or wired in redstone dust.
Finally, procedural art is not AI art. [Insert same exact argument as AI Art is not Generative Art but with a different name, here]. For funsies, here’s a quick guide: In AI art, you describe what the artwork should be. In procedural art, you describe how the artwork could be.
Language evolves because of general usage. See: AI, crypto, cyber, generative. As a fellow user of language, I must evolve my languaging as well — starting with this website.
I have updated the following pages to either disambiguate or even completely replace mentions of “generative art”:
For the record, I’m not rejecting the other perfectly acceptable terms like algorithmic art and creative coding. My art is still algorithmic, and it’s the result of creative coding. I’m just moving away from ‘generative’.
I’m sure we’ll settle on a universal term soon. Language evolves, after all.
https://leanrada.com/notes/language-evolves-generative-art/?ref=rss
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
Central U.S. braces for powerful tornadoes and flash floods. (No FEMA.)
https://www.npr.org/2025/04/02/nx-s1-5349304/storms-tornadoes-flooding-midwest-south
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
Adam Schiff: Putin Sees Trump as a ‘Child’ Who Can Be Easily Manipulated.
https://foreignpolicy.com/2025/04/02/adam-schiff-putin-trump-ukraine-signalgate-witkoff/
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
Apple leads a drop in tech stocks after Trump tariff announcement.
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
Dow futures tumble 1,000 points on fear Trump’s tariffs will spark trade war.
https://bsky.app/notifications
date: 2025-04-02, from: This is history podcast
Harald Hardrada; exiled prince of Norway and mercenary, has landed in the greatest city on Earth: Constantinople. There he joins one of the most prestigious military organisations in the world, the Varangian Guard, charged with protecting the Emperor. Almost the next ten years of Harald’s young life are spent at war protecting the city from […]
The post 553. The Last Viking: Warrior of the New Rome (Part 2) appeared first on The Rest is History.
https://therestishistory.com/553-the-last-viking-warrior-of-the-new-rome-part-2/
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
Immigrant toddlers ordered to appear in court alone.
https://www.texastribune.org/2018/06/27/immigrant-toddlers-ordered-appear-court-alone/
date: 2025-04-02, from: Paul Krugman
“Liberation Day” is even worse than expected
https://paulkrugman.substack.com/p/trump-goes-crazy-on-trade
@Robert’s feed at BlueSky (date: 2025-04-02, from: Robert’s feed at BlueSky)
Yet another wrong committed by the spoiled orange boy. Unfortunately not surprising. 👇
[contains quote post or other embedded content]
https://bsky.app/profile/rsdoiel.bsky.social/post/3llu6navz3223
date: 2025-04-02, from: Liliputing
Frameworks is expanding its modular, repairable laptop lineup this year with the introduction of the first Framework Laptop 12. It’s the company’s first laptop with a touchscreen display and 360-degree hinge, the first with a 12.2 inch screen, and the first that’s positioned as more of a budget device than a premium system: it’s expected […]
The post Lilbits: Framework Laptop 12, Dasung Paperlike 13K, and Snapdragon 8s Gen 3 appeared first on Liliputing.
https://liliputing.com/lilbits-framework-laptop-12-dasung-paperlike-13k-and-snapdragon-8s-gen-3/
@Robert’s feed at BlueSky (date: 2025-04-02, from: Robert’s feed at BlueSky)
Well said 👇
[contains quote post or other embedded content]
https://bsky.app/profile/rsdoiel.bsky.social/post/3llu646v3bs23
date: 2025-04-02, updated: 2025-04-02, from: Oberon A2 repository
Felix Oliver Friedrich (eae32bde) at 02 Apr 21:42
a few ants modules
https://gitlab.inf.ethz.ch/felixf/oberon/-/commit/eae32bde5287031a2446a1b22c57cd018f8668b2
date: 2025-04-02, from: Michael Tsai
Nick Lockwood: Airdrop on macOS has this “great” feature where it displays receivers asynchronously as it finds them and they are sorted alphabetically, so the order shuffles randomly under the mouse as you are trying to clickBrought to you by the guy who sent a file to a random colleague when trying to share it […]
https://mjtsai.com/blog/2025/04/02/moving-targets/
date: 2025-04-02, from: Michael Tsai
Also new in Swift 6.1, ST-0006: We offer three variants of #expect(throws:):One that takes an error type, and matches any error of the same type;One that takes an error instance (conforming to Equatable) and matches any error that compares equal to it; andOne that takes a trailing closure and allows test authors to write arbitrary […]
https://mjtsai.com/blog/2025/04/02/swift-testing-return-errors-from-expectthrows/
date: 2025-04-02, from: Michael Tsai
Ernie Smith (via Hacker News): But it of course raises the question: Do they make Apple‘s shows on Macs? As the second season of Severance ended in dramatic fashion, Apple decided to answer that question, and the answer was … surprisingly confusing. […] In the video Apple released, which highlights the Mac-driven editing process that […]
https://mjtsai.com/blog/2025/04/02/severed-edits/
date: 2025-04-02, from: Michael Tsai
Makena Kelly (Hacker News): The project is being organized by Elon Musk lieutenant Steve Davis, multiple sources who were not given permission to talk to the media tell WIRED, and aims to migrate all SSA systems off COBOL, one of the first common business-oriented programming languages, and onto a more modern replacement like Java within […]
https://mjtsai.com/blog/2025/04/02/rebuilding-the-social-security-administrations-codebase/
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
Tesla car sales lurch as Elon Musk hits the gas for President Trump.
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
WordPress maker Automattic lays off 16% of staff.
https://techcrunch.com/2025/04/02/wordpress-maker-automattic-lays-off-16-of-staff/
date: 2025-04-02, from: Prof. Scott Galloway, No Mercy/No Malace blog
It’s tax season in the U.S. At least 60 million Americans have taxes that are so simple, the IRS could do them automatically and just send them the bill. Instead, the average American spends $270 and 13 hours filing their taxes each year. Is anyone surprised that the IRS is the least popular federal agency, […]
The post Earners vs Owners appeared first on No Mercy / No Malice.
https://www.profgalloway.com/earners-vs-owners-2/
date: 2025-04-02, from: Biosrhythm blog
Amazing to think I’ve been playing with pen plotters for over 10 years (longer if you count my first plotter, the Commodore 1520 with my VIC-20). What started out as a curiosity has continued to keep me engaged as a retro computing enthusiast and captivated as an artist. I thought I’d go back in time […]
https://biosrhythm.com/?p=3004
date: 2025-04-02, from: Liliputing
Samsung’s latest mid-range tablets arrive this week with the new Samsung Galaxy Tab S10 FE and Galaxy Tab S10 FE+ set to go on sale in select markets starting April 3, 2025. At first glance, the new tablets look a lot like the Galaxy Tab S9 FE series that launched about a year and a half ago. But […]
The post Samsung Galaxy Tab S10 FE brings a modest spec bump, Galaxy Tab S10 FE+ gets a bigger screen appeared first on Liliputing.
date: 2025-04-02, updated: 2025-04-02, from: One Foot Tsunami
https://onefoottsunami.com/2025/04/02/forks-or-no/
date: 2025-04-02, from: Liliputing
The PocketCloud is a modular storage solution designed to function as a portable hard drive, a backup device for camera SD cards, and a network-attached storage solution with wireless and wired capabilities. It does all of that thanks to a two-part design. Most of the hardware is built into a small, portable gadget that lets you […]
The post PocketCloud is a portable NAS with a docking station for home use (crowdfunding) appeared first on Liliputing.
date: 2025-04-02, from: 404 Media Group
“I would log in and I couldn’t see my children but I could see a kid in California. I refreshed and would see a different child.”
date: 2025-04-02, from: Liliputing
MediaTek’s ARM-based processors are often found in entry-level Chromebooks. But the company is taking aim at the premium Chromebook Plus platform with a new chip for high-performance laptops. The MediaTek Kompanio Ultra 910 is the first chip in the new Kompanio Ultra family, and it features 8 high-performance CPU cores, Immortalis-G925MC 11 graphics with support for […]
The post MediaTek Kompanio Ultra is made for high-performance Chromebooks… and maybe more? appeared first on Liliputing.
date: 2025-04-02, from: Liliputing
The Nintendo Switch has been a wildly successful game console since it first launched in 2017. So what’s Nintendo planning for its next game console? Something similar… but bigger in just about every way that matters. The Nintendo Switch 2 will be available June 5 for $450. It goes up for pre-order on April 9. And it has […]
The post Nintendo Switch 2 launches June 5 for $450, has a 7.9 inch FHD 120 Hz HDR display and new accessories appeared first on Liliputing.
date: 2025-04-02, from: Guy Kawasaki blog
Entrepreneurship is not for the faint of heart.
https://guykawasaki.substack.com/p/why-every-entrepreneur-needs-a-little
date: 2025-04-02, updated: 2025-04-02, from: Simon Willison’s Weblog
Composite primary keys in Django
Django 5.2 is out today and a big new feature is composite primary keys, which can now be defined like this:class Release(models.Model): pk = models.CompositePrimaryKey( "version", "name" ) version = models.IntegerField() name = models.CharField(max_length=20)
They don’t yet work with the Django admin or as targets for foreign keys.
Other smaller new features include:
./manage.py
shell
- a feature borrowed from ./manage.py
shell_plus
in
django-extensions
response.content.decode(“utf-8”)
any more
5.2 is also an LTS release, so it will receive security and data loss bug fixes up to April 2028.
<p>Tags: <a href="https://simonwillison.net/tags/django">django</a>, <a href="https://simonwillison.net/tags/python">python</a></p>
https://simonwillison.net/2025/Apr/2/composite-primary-keys-in-django/#atom-everything
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
In Alien Enemies Case, Many With Open Asylum Claims Allegedly Removed.
date: 2025-04-02, from: Gary Marcus blog
Don’t panic
https://garymarcus.substack.com/p/ai-has-sort-of-passed-the-turing
date: 2025-04-02, from: 404 Media Group
“After discovering this content, I’m not going to lie… there are times it made me not want to be around any more either,” she said. “I literally felt buried.”
https://www.404media.co/deepfakes-harassment-youtube-instagram-ai-generated-explicit-videos/
date: 2025-04-02, from: 404 Media Group
A Y Combinator partner proudly launched an AI recipe app that told people how to make “Actual Cocaine” and a “Uranium Bomb.”
https://www.404media.co/vibe-coded-ai-app-generates-recipes-for-cyanide-ice-cream-and-cum-soup/
date: 2025-04-02, updated: 2025-04-02, from: Oberon A2 repository
Felix Oliver Friedrich (248948a5) at 02 Apr 15:18
missing file
https://gitlab.inf.ethz.ch/felixf/oberon/-/commit/248948a553508f7a48e9dc1210a822fc857d522c
date: 2025-04-02, updated: 2025-04-02, from: Oberon A2 repository
Felix Oliver Friedrich (5de89710) at 02 Apr 15:10
Voyager compiles on a 64 bit platform
https://gitlab.inf.ethz.ch/felixf/oberon/-/commit/5de8971072e744416b134ba3eaddd8c8e7a7fb59
date: 2025-04-02, from: O’Reilly Radar
Let’s be real: Building LLM applications today feels like purgatory. Someone hacks together a quick demo with ChatGPT and LlamaIndex. Leadership gets excited. “We can answer any question about our docs!” But then…reality hits. The system is inconsistent, slow, hallucinating—and that amazing demo starts collecting digital dust. We call this “POC purgatory”—that frustrating limbo where […]
https://www.oreilly.com/radar/escaping-poc-purgatory-evaluation-driven-development-for-ai-systems/
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
David Frum: No Tariff Carve-Out for Farmers.
date: 2025-04-02, from: O’Reilly Radar
On April 22, 2022, I received an out-of-the-blue text from Sam Altman inquiring about the possibility of training GPT-4 on O’Reilly books. We had a call a few days later to discuss the possibility. As I recall our conversation, I told Sam I was intrigued, but with reservations. I explained to him that we could […]
https://www.oreilly.com/radar/copyright-aware-ai-lets-make-it-so/
date: 2025-04-02, from: The Markup blog
Major publishers are experimenting with automated translations, hundreds of which have already been produced
date: 2025-04-02, from: Paul Krugman
There’s no plan, secret or otherwise, behind Trump’s tariffs
https://paulkrugman.substack.com/p/stop-looking-for-methods-in-the-madness
date: 2025-04-02, updated: 2025-04-02, from: Oberon A2 repository
Felix Oliver Friedrich (77af7118) at 02 Apr 10:08
intermediate step
https://gitlab.inf.ethz.ch/felixf/oberon/-/commit/77af7118e88e7c24f97dd0b381b0ecee5cd78a83
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
‘It’s a bloodbath’: Massive wave of job cuts underway at US health agencies.
https://www.cnn.com/2025/04/01/health/staff-cuts-at-federal-health-agencies-have-begun/
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
Susan Crawford wins Wisconsin Supreme Court race as Democrats take stand against Donald Trump, Elon Musk.
https://www.wpr.org/news/susan-crawford-wins-wisconsin-supreme-court-race-democrats-elon-musk
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
Val Kilmer, star of Top Gun and The Doors, dies aged 65.
https://www.theguardian.com/film/2025/apr/02/val-kilmer-death-age-65-pneumonia
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
Joe Rogan: 'Horrific' that innocent people could be deported to El Salvador.
https://thehill.com/homenews/media/5224117-trump-deportation-gang-members/
@Dave Winer’s linkblog (date: 2025-04-02, from: Dave Winer’s linkblog)
Silly Nice Seeks Hospitality Partnerships Across New York.
https://stupiddope.com/2025/04/silly-nice-seeks-hospitality-partnerships-across-new-york/
date: 2025-04-02, updated: 2025-04-02, from: Go language blog
Better benchmark looping in Go 1.24.
https://go.dev/blog/testing-b-loop
@Robert’s feed at BlueSky (date: 2025-04-01, from: Robert’s feed at BlueSky)
About time 👇
[contains quote post or other embedded content]
https://bsky.app/profile/rsdoiel.bsky.social/post/3llrx422sbk2b
@Robert’s feed at BlueSky (date: 2025-04-01, from: Robert’s feed at BlueSky)
So true 👇
[contains quote post or other embedded content]
https://bsky.app/profile/rsdoiel.bsky.social/post/3llrx27jd422b
date: 2025-04-01, from: Press Think
In mid-March of this year I was invited to speak to a conference in Montreal that had primarily attracted disinformation reseachers and activists in that field, along with some civic tech people, some journalists (mostly Canadian) and myself as a press critic who could lend a different persective. The plan was to tape a podcast […]
The post Journalism and its discontents [Draft] appeared first on PressThink.
https://pressthink.org/2025/04/journalism-and-its-discontents-draft/
@Feed for Alt USDS (date: 2025-04-01, from: Feed for Alt USDS)
We stand behind Senator Booker as he approaches 24 hours on the Senate floor protesting the administration. We stand for a government that functions, that serves its citizens, just as Sen. Booker does
[contains quote post or other embedded content]
https://bsky.app/profile/altusds.bsky.social/post/3llrt4zobqs2r
@Feed for Alt USDS (date: 2025-04-01, from: Feed for Alt USDS)
Today is a lot.
We have public health gutted across the government. HHS, CDC, FDA. @altcdc.altgov.info @altfda.altgov.info
But then there’s @booker.senate.gov taking a stand, being a model for everyone else in Congress.
https://bsky.app/profile/altusds.bsky.social/post/3llrsleqnes2y
@Feed for Alt USDS (date: 2025-04-01, from: Feed for Alt USDS)
Cory Booker is standing up to the dismantling of the services and agencies and we’re all watching him as he approaches 24 hours on the Senate floor
[contains quote post or other embedded content]
https://bsky.app/profile/altusds.bsky.social/post/3llrsd3evzk2y
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
Is your state at risk? These 15 states face huge job losses if the IRA is repealed.
https://electrek.co/2025/04/01/15-states-face-huge-job-losses-ira-is-repealed/
@Robert’s feed at BlueSky (date: 2025-04-01, from: Robert’s feed at BlueSky)
Impressive and still going strong.
[contains quote post or other embedded content]
https://bsky.app/profile/rsdoiel.bsky.social/post/3llrqbrnhck23
date: 2025-04-01, updated: 2025-04-01, from: Oberon A2 repository
Felix Oliver Friedrich (fae020c8) at 01 Apr 22:24
64-bit adaptions
https://gitlab.inf.ethz.ch/felixf/oberon/-/commit/fae020c894c469d25e90a572e1a66433f7296b23
date: 2025-04-01, updated: 2025-04-01, from: One Foot Tsunami
https://onefoottsunami.com/2025/04/01/chicanes-not-chicanery/
date: 2025-04-01, from: Michael Tsai
Holly Borla: Swift 6.1 enables custom Swift Testing traits to perform logic before or after tests run in order to share set-up or tear-down logic. If you write a custom trait type which conforms to the new TestScoping protocol, you can implement a method to customize the scope in which each test or suite the […]
https://mjtsai.com/blog/2025/04/01/swift-testing-test-scoping-traits/
date: 2025-04-01, from: Michael Tsai
Apple (security, downloads): Clang now defines TARGET_OS_* conditionals as built-in macros based on the provided target triple.[…]Searching in the documentation viewer may start an indexing process which makes no progress. This may result in missing search results and increased CPU usage.[…]Fixed: Foundation encoders/decoders user info dictionaries now require Sendable values. This may cause build errors […]
https://mjtsai.com/blog/2025/04/01/xcode-16-3/
date: 2025-04-01, from: Michael Tsai
SpamSieve 3.1.2 improves the filtering accuracy of my Mac e-mail spam filter, amongst other enhancements and fixes. Some interesting issues were: I made some more table view improvements enabled by the lazy Core Data collections mentioned in the previous release. Since it no longer loads the whole selection into RAM, it’s now possible to operate […]
https://mjtsai.com/blog/2025/04/01/spamsieve-3-1-2/
date: 2025-04-01, from: Michael Tsai
Elon Musk (Hacker News): @xAI has acquired @X in an all-stock transaction. The combination values xAI at $80 billion and X at $33 billion ($45B less $12B debt). Since its founding two years ago, xAI has rapidly become one of the leading AI labs in the world, building models and data centers at unprecedented speed […]
https://mjtsai.com/blog/2025/04/01/xai-acquires-x-twitter/
date: 2025-04-01, from: Liliputing
The Orange Pi RV2 is a credit card-sized single-board computer with Gigabit Ethernet, four USB 3.0 Type-A ports, HDMI and USB-C ports, and a 3.5mm audio jack plus a 40-pin GPIO header. It looks a lot like a Raspberry Pi Model B, but Orange Pi’s board stands out for a few reasons. First, it has […]
The post Orange Pi RV2 is a single-board PC with an 8-core RISC-V processor appeared first on Liliputing.
https://liliputing.com/orange-pi-rv2-is-a-single-board-pc-with-an-8-core-risc-v-processor/
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
GM is beating EV rivals with more choices at lower prices.
https://electrek.co/2025/04/01/gm-beating-ev-rivals-with-more-choices-at-lower-prices/
@IIIF Mastodon feed (date: 2025-04-01, from: IIIF Mastodon feed)
Join us April 9 at 9am PT / 17:00 UTC for our next #IIIF Community Call.
@aboutgeo will demo liiive, a real-time collaborative viewing and & annotation platform.
Zoom link on the Community Calendar: iiif.io/community
https://glammr.us/@IIIF/114263953317138762
date: 2025-04-01, from: Liliputing
The AOOSTAR WTR Max is a network-attached storage (NAS) system with an AMD Ryzen 7 PRO 8845HS “Hawk Point” processor, support for up to 128GB of RAM, and support for up to 11 storage devices thanks to 6 slots for 3.5 inch drives and 5 M.2 2280 slots for SSDs. It also has a robust set […]
The post AOOSTAR WTR Max 11-drive NAS with AMD Hawk Point now available for pre-order for $699 appeared first on Liliputing.
date: 2025-04-01, from: Guy Kawasaki blog
Ming Xie, University of Maryland, Baltimore County.
https://guykawasaki.substack.com/p/if-fema-didnt-exist
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
Trump Nominee for Joint Chiefs Denies Wearing MAGA Hat.
https://politicalwire.com/2025/04/01/trump-nominee-for-joint-chiefs-denies-wearing-maga-hat/
date: 2025-04-01, from: National Archives, Text Message blog
One of the more notable events in U.S.-Soviet relations during the Eisenhower Administration War was the American National Exhibit in Moscow from July 25 to September 4, in 1959. This was the scene of the so-called Kitchen Debate between Vice President Richard Nixon and Soviet Chairman of the Soviet Council of Ministers Nikita Khrushchev. The … Continue reading Sticky Fingers in Moscow, 1959
https://text-message.blogs.archives.gov/2025/04/01/sticky-fingers-in-moscow-1959/
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
300 Alums Call on HLS to Denounce Trump’s Attacks on Law Firms.
https://www.thecrimson.com/article/2025/4/1/hls-alums-trump-letter/
@Feed for Alt USDS (date: 2025-04-01, from: Feed for Alt USDS)
Fed workers are required to send 5 bullet points each week, but where is the data going? Some believe it’s being funneled into AI systems, targeting workers for layoffs.
🔗 : https://www.wethebuilders.org/posts/why-are-we-writing-5-bullets
#altgov #altUSDS #GovernmentEfficiency #FedUp #CivicTec
https://bsky.app/profile/altusds.bsky.social/post/3llra6ghxp32v
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
House Republicans Blame Elon Musk for Dragging GOP Down
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
Federal food assistance cuts would crush 1.8M NYers, city officials say.
https://gothamist.com/news/federal-food-assistance-cuts-would-crush-18m-nyers-city-officials-say
date: 2025-04-01, updated: 2025-04-01, from: Oberon A2 repository
Felix Oliver Friedrich (4f7edb92) at 01 Apr 17:03
started with porting vy / ants to 64 bit
https://gitlab.inf.ethz.ch/felixf/oberon/-/commits/vy64
date: 2025-04-01, updated: 2025-04-01, from: Simon Willison’s Weblog
Half Stack Data Science: Programming with AI, with Simon Willison
I participated in this wide-ranging 50 minute conversation with David Asboth and Shaun McGirr. Topics we covered included applications of LLMs to data journalism, the challenges of building an intuition for how best to use these tool given their “jagged frontier” of capabilities, how LLMs impact learning to program and how local models are starting to get genuinely useful now.At 27:47:
If you’re a new programmer, my optimistic version is that there has never been a better time to learn to program, because it shaves down the learning curve so much. When you’re learning to program and you miss a semicolon and you bang your head against the computer for four hours […] if you’re unlucky you quit programming for good because it was so frustrating. […]
I’ve always been a project-oriented learner; I can learn things by building something, and now the friction involved in building something has gone down so much […] So I think especially if you’re an autodidact, if you’re somebody who likes teaching yourself things, these are a gift from heaven. You get a weird teaching assistant that knows loads of stuff and occasionally makes weird mistakes and believes in bizarre conspiracy theories, but you have 24 hour access to that assistant.
If you’re somebody who prefers structured learning in classrooms, I think the benefits are going to take a lot longer to get to you because we don’t know how to use these things in classrooms yet. […]
If you want to strike out on your own, this is an amazing tool if you learn how to learn with it. So you’ve got to learn the limits of what it can do, and you’ve got to be disciplined enough to make sure you’re not outsourcing the bits you need to learn to the machines.
<p><small></small>Via <a href="https://bsky.app/profile/halfstackdatascience.com/post/3llo3l33opk2p">@halfstackdatascience.com</a></small></p>
<p>Tags: <a href="https://simonwillison.net/tags/podcasts">podcasts</a>, <a href="https://simonwillison.net/tags/generative-ai">generative-ai</a>, <a href="https://simonwillison.net/tags/podcast-appearances">podcast-appearances</a>, <a href="https://simonwillison.net/tags/ai">ai</a>, <a href="https://simonwillison.net/tags/llms">llms</a>, <a href="https://simonwillison.net/tags/data-journalism">data-journalism</a></p>
https://simonwillison.net/2025/Apr/1/half-stack-data-science/#atom-everything
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
Scripting News: More weird ChatGPT fun.
http://scripting.com/2025/04/01/104758.html
date: 2025-04-01, from: Tina Brown
Why does America have to lurch between such extremes?
https://tinabrown.substack.com/p/who-can-stop-trumps-bullet-train
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
Substack says it’ll legally defend writers ‘targeted by the government.’
https://www.theverge.com/news/640495/substack-legally-defend-writers-targeted-by-government
date: 2025-04-01, from: Blog by Fabrizio Ferri-Benedetti
In what is tantamount to a vulgar display of power, social media has been flooded with AI-generated images that mimic the style of Hayao Miyazaki’s anime. Something similar happens daily with tech writing, folks happily throwing context at LLMs and thinking they can vibe write outstanding docs out of them, perhaps even surpassing human writers. Well, it’s time to draw a line. Don’t let AI influencers studioghiblify your work as if it were a matter of processing text.
https://passo.uno/whats-wrong-ai-generated-docs/
date: 2025-04-01, from: Gary Marcus blog
To my amazement, I just came back from a trip to Europe only to find an invite to a private GPT-5 demo, and I tried it.
https://garymarcus.substack.com/p/breaking-gpt-5-news
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
The Hungarian Model.
https://anneapplebaum.substack.com/p/the-hungarian-model
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
Civil Rights and Historical Honesty.
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
First ever USB-C recharging electric bicycles launch sales.
date: 2025-04-01, from: 404 Media Group
A class action complaint claims OnlyFans is allowing fraud on its platform by letting models use agency chat service to talk to fans.
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
Trump's tariffs are like his idea for injecting bleach to get rid of Covid.
https://www.youtube.com/watch?v=zicGxU5MfwE
date: 2025-04-01, from: Accidentally in Code
Having set my intention for the year as “health”, Q1 2025 felt a bit like whatever the atheist, gender neutral equivalent is of the saying “Man plans, and God laughs”. I had a good start to January – all set with my intentions and my Trello board – only to get very sick in February […]
https://cate.blog/2025/04/01/q1-2025/
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
It’s the moment of truth for Zuckerberg’s Trump bet.
https://www.theverge.com/news/640368/mark-zuckerberg-meta-eu-fine-trump
date: 2025-04-01, from: Paul Krugman
Some perspective on the eve of trade war
https://paulkrugman.substack.com/p/a-note-on-trade-deficits-and-manufacturing
date: 2025-04-01, from: O’Reilly Radar
March was the biggest month that Trends has ever had. In addition to almost daily announcements about AI, a lot has been going on in programming, in security, in operations (which usually doesn’t merit its own topic), and even in quantum computing. It’s been a long time since we’ve had much to say about social […]
https://www.oreilly.com/radar/radar-trends-to-watch-april-2025/
date: 2025-04-01, updated: 2025-04-01, from: Deno blog
With Deno’s Jupyter support, you can explore, interact, and create interactive charts with TypeScript and HTML. Here’s a tutorial featuring data of over 130,000 famous artworks.
https://deno.com/blog/exploring-art-with-typescript-and-jupyter
date: 2025-04-01, updated: 2025-04-01, from: Chaos Computer Club Updates
Die CDU/CSU plant, das Informationsfreiheitsgesetz in seiner jetzigen Form abzuschaffen. Der CCC fordert die SPD auf, dies zu verhindern.
https://www.ccc.de/de/updates/2025/spd-muss-informationsfreiheit-schuetzen
date: 2025-04-01, updated: 2025-04-01, from: Simon Willison’s Weblog
Brand new package from David Montague and the Pydantic AI team which directly tackles what I consider to be the single hardest problem in AI engineering: building evals to determine if your LLM-based system is working correctly and getting better over time.The feature is described as “in beta” and comes with this very realistic warning:
Unlike unit tests, evals are an emerging art/science; anyone who claims to know for sure exactly how your evals should be defined can safely be ignored.
This code example from their documentation illustrates the relationship between the two key nouns - Cases and Datasets:
from pydantic_evals import Case, Dataset case1 = Case( name="simple_case", inputs="What is the capital of France?", expected_output="Paris", metadata={"difficulty": "easy"}, ) dataset = Dataset(cases=[case1])
The library also supports custom evaluators, including LLM-as-a-judge:
Case( name="vegetarian_recipe", inputs=CustomerOrder( dish_name="Spaghetti Bolognese", dietary_restriction="vegetarian" ), expected_output=None, metadata={"focus": "vegetarian"}, evaluators=( LLMJudge( rubric="Recipe should not contain meat or animal products", ), ), )
Cases and datasets can also be serialized to YAML.
My first impressions are that this looks like a solid implementation of a sensible design. I’m looking forward to trying it out against a real project.
<p><small></small>Via <a href="https://twitter.com/samuel_colvin/status/1906841604377211375">@samuel_colvin</a></small></p>
<p>Tags: <a href="https://simonwillison.net/tags/evals">evals</a>, <a href="https://simonwillison.net/tags/python">python</a>, <a href="https://simonwillison.net/tags/pydantic">pydantic</a>, <a href="https://simonwillison.net/tags/generative-ai">generative-ai</a>, <a href="https://simonwillison.net/tags/ai">ai</a>, <a href="https://simonwillison.net/tags/llms">llms</a></p>
https://simonwillison.net/2025/Apr/1/pydantic-evals/#atom-everything
date: 2025-04-01, from: Stavros Stuff
I’m entirely convinced that basically every developer alive today heard the adage “dress for the job you want, not the job you have” and figured that, since they always wear jeans and a t-shirt anyway, they might as well apply it to their systems’ architecture. This explains why the stack of every single company I’ve seen is invariably AWS/GCP with at least thirty microservices (how else will you keep the code tidy?), a distributed datastore
https://www.stavros.io/posts/why-is-everything-so-scalable/
date: 2025-04-01, updated: 2025-04-01, from: Simon Willison’s Weblog
We’re planning to release a very capable open language model in the coming months, our first since GPT-2. […]
As models improve, there is more and more demand to run them everywhere. Through conversations with startups and developers, it became clear how important it was to be able to support a spectrum of needs, such as custom fine-tuning for specialized tasks, more tunable latency, running on-prem, or deployments requiring full data control.
— Brad Lightcap, COO, OpenAI
<p>Tags: <a href="https://simonwillison.net/tags/openai">openai</a>, <a href="https://simonwillison.net/tags/llms">llms</a>, <a href="https://simonwillison.net/tags/ai">ai</a>, <a href="https://simonwillison.net/tags/generative-ai">generative-ai</a></p>
https://simonwillison.net/2025/Apr/1/brad-lightcap/#atom-everything
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
Trump officials to review $9bn in Harvard funds over antisemitism claims.
https://www.theguardian.com/education/2025/mar/31/trump-harvard-funding-review
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
Bird flu could be on the cusp of transmitting between humans − but there are ways to slow down viral evolution.
@Dave Winer’s linkblog (date: 2025-04-01, from: Dave Winer’s linkblog)
Software is a mathematical science, so if I write a piece that says what a company is telling you about their technology is not true, I’m not saying it because of a conflict, or because I don’t like them, I say it because it’s true.
http://scripting.com/2025/03/11/113838.html
date: 2025-04-01, updated: 2025-04-01, from: Tom Kellog blog
LLMs are great code reviewers. They can even spot security mistakes that open us up to vulnerabilities. But no, they’re not an adequate mitigation. You can’t use them to ensure security.
http://timkellogg.me/blog/2025/04/01/llm-security
date: 2025-04-01, updated: 2025-04-01, from: nlnet feed
https://nlnet.nl/news/2025/20250401-call.html
date: 2025-04-01, updated: 2025-04-01, from: Inlets.dev, cloud tunneling
Imagine if you could expose a local HTTP service, without TLS enabled to the public Internet with a HTTPS certificate with just one click.
https://inlets.dev/blog/tutorial/2025/04/01/one-click-hosted-http-tunnels.html
date: 2025-04-01, from: Nora Tindall’s blog
This post is part of April Cools Club: an April 1st effort to publish genuine essays on unexpected topics. Please enjoy these true stories, and rest assured that the tech content will be back
sooneventually!
sina o pali e nimi sin. sina o pana e nimi mute tawa mi.
nimi o kama sama pi soweli lili. mi wile e ni: nimi li kama mute
a.
That’s toki pona, a constructed language with somewhere between 118 and 181 words, depending on who you ask. It was meant to be quick and easy to learn, but more importantly, to guide the mind toward a simpler, better, more pona way of being. The fewer words, the broader their semantic space, the more contextual and general their meaning, the better. That’s the toki pona philosophy - but that’s not what I’m asking you for.
https://nora.codes/post/nimi-sin/
@Dave Winer’s linkblog (date: 2025-03-31, from: Dave Winer’s linkblog)
Trump Administration Will Review Billions in Funding for Harvard.
@Dave Winer’s linkblog (date: 2025-03-31, from: Dave Winer’s linkblog)
OpenAI just raised another $40 billion funding round.
https://www.theverge.com/news/640259/openai-40-billion-softbank-investment
date: 2025-03-31, updated: 2025-03-31, from: Simon Willison’s Weblog
New paper and code from Microsoft Research that experiments with giving LLMs access to the Python debugger. They found that the best models could indeed improve their results by running pdb as a tool.They saw the best results overall from Claude 3.7 Sonnet against SWE-bench Lite, where it scored 37.2% in rewrite mode without a debugger, 48.4% with their debugger tool and 52.1% with debug(5) - a mechanism where the pdb tool is made available only after the 5th rewrite attempt.
Their code is available on GitHub. I found this implementation of the pdb tool, and tracked down the main system and user prompt in agents/debug_agent.py:
System prompt:
Your goal is to debug a Python program to make sure it can pass a set of test functions. You have access to the pdb debugger tools, you can use them to investigate the code, set breakpoints, and print necessary values to identify the bugs. Once you have gained enough information, propose a rewriting patch to fix the bugs. Avoid rewriting the entire code, focus on the bugs only.
User prompt (which they call an “action prompt”):
Based on the instruction, the current code, the last execution output, and the history information, continue your debugging process using pdb commands or to propose a patch using rewrite command. Output a single command, nothing else. Do not repeat your previous commands unless they can provide more information. You must be concise and avoid overthinking.
<p><small></small>Via <a href="https://jack-clark.net/2025/03/31/import-ai-406-ai-driven-software-explosion-robot-hands-are-still-bad-better-llms-via-pdb/">Import AI</a></small></p>
<p>Tags: <a href="https://simonwillison.net/tags/prompt-engineering">prompt-engineering</a>, <a href="https://simonwillison.net/tags/llms">llms</a>, <a href="https://simonwillison.net/tags/python">python</a>, <a href="https://simonwillison.net/tags/generative-ai">generative-ai</a>, <a href="https://simonwillison.net/tags/llm-tool-use">llm-tool-use</a>, <a href="https://simonwillison.net/tags/ai">ai</a>, <a href="https://simonwillison.net/tags/microsoft">microsoft</a>, <a href="https://simonwillison.net/tags/claude">claude</a></p>
https://simonwillison.net/2025/Mar/31/debug-gym/#atom-everything
date: 2025-03-31, from: Digital Humanities Quarterly News
Addison Kliewer did not initially plan to become a technical writer. As an undergraduate honors student majoring in English at the University of Texas, Austin, he envisioned an academic career in publishing, teaching, or even writing books. He was drawn to how storytelling can be enriching and insightful, fascinated by how clothing symbolized identity and […]date: 2025-03-31, from: Liliputing
Four years after launching a single-board server with an Intel Apollo Lake processor, the makers of the ZimaBoard are preparing to introduce a new model. The company hasn’t provided detailed specifications yet, but the design, expansion slots, and processor have all been upgraded for the upcoming ZimaBoard 2. In other recent tech news from around […]
The post Lilbits: ZimaBoard 2 pocket-sized server is coming, Alexa+ Early Access is here, and more Copilot+ features roll out to Intel and AMD PCs appeared first on Liliputing.
date: 2025-03-31, from: Purism News and Events
When all the control is handled in-house and all communication is quantum-safe as well as on private networks you have the strongest possible security story and the most convenient offering for the toughest of security needs; including national security.
The post The Signal Noise: A Wake-Up Call for Secure Communications appeared first on Purism.
https://puri.sm/posts/the-signal-noise-a-wake-up-call-for-secure-communications/
date: 2025-03-31, from: Michael Tsai
Juli Clover (release notes, security, enterprise, developer, full installer, IPSW): With macOS 15.4, Apple is bringing Mail Categorization to the Mac. The Mail app features dedicated categories like transactions, updates, and promotions, with important emails organized into a primary section.Apple News+ subscribers now have access to an Apple News Food section with recipes, food articles, […]
https://mjtsai.com/blog/2025/03/31/macos-15-4/
date: 2025-03-31, from: Michael Tsai
macOS 14.7.5 (full installer, security): This update provides important security fixes and is recommended for all users. macOS 13.7.5 (full installer, security): This update provides important security fixes and is recommended for all users. Previously: macOS 14.7.4 and macOS 13.7.4
https://mjtsai.com/blog/2025/03/31/macos-14-7-5-and-macos-13-7-5/
date: 2025-03-31, from: Michael Tsai
Juli Clover (no iOS/iPadOS release notes, security, enterprise, no developer): iOS 18.4 adds Priority notifications for Apple Intelligence-capable devices, showing you your most notification first. There’s a dedicated Apple Vision Pro app for Vision Pro owners, and a new Apple News Food feature for Apple News+ subscribers. There’s lots more quoted in her article, though […]
https://mjtsai.com/blog/2025/03/31/ios-18-4-and-ipados-18-4/
date: 2025-03-31, from: Michael Tsai
Juli Clover (release notes, security, no developer): Apple shares full release notes for tvOS in its tvOS support document, which is updated after each new version of tvOS comes out. But all it says is “performance and stability improvements.” Previously: tvOS 18.3.1 Update (2025-04-02): Ryan Christoffel: At the top of the TV app’s interface, the […]
https://mjtsai.com/blog/2025/03/31/tvos-18-4/
date: 2025-03-31, from: Michael Tsai
Ryan Christoffel (release notes, security, developer): After initially listing watchOS 11.4 on its website as released, the site has since been updated to remove the update. It’s unknown when it will return. Previously: watchOS 11.3.1 Update (2025-04-01): Juli Clover: Apple today released watchOS 11.4[…] With watchOS 11.4, Apple has added an option for a Sleep […]
https://mjtsai.com/blog/2025/03/31/watchos-11-4/
date: 2025-03-31, from: Michael Tsai
Juli Clover (no release notes, security, developer, enterprise): The visionOS 2.4 update brings Apple Intelligence to the Vision Pro for the first time, putting it on par with the iPhone, iPad, and Mac. […] Along with Apple Intelligence, Apple added a Spatial Gallery app for the Vision Pro. The Spatial Gallery app offers a curated […]
https://mjtsai.com/blog/2025/03/31/visionos-2-4/
date: 2025-03-31, from: Michael Tsai
Apple: This update includes performance and stability improvements. Previously: audioOS 18.3
https://mjtsai.com/blog/2025/03/31/audioos-18-4/
date: 2025-03-31, from: Liliputing
The Maiyunda M1S is a small, low-power computer with an Intel Alder Lake-N processor, an aluminum body, and support for plenty of storage thanks to four M.2 2280 slots that can theoretically hold up to 32TB of storage (if you’re willing to spend the money on four 8TB SSDs). Positioned for use as a server or […]
The post This DIY NAS has four M.2 slots for storage, two 2.5 GbE LAN ports, and an Alder Lake-N processors appeared first on Liliputing.
date: 2025-03-31, from: Windows Developer Blog
Our mission is to create one of the most powerful, beautiful and simple web rendering engines in the world. The latest Babylon.js 8.0 engine packs a ton of new improvements to help you create stunning experiences.
The post Part 2 – Babylon.js 8.0: Audio, Gaussian Splat and physics updates appeared first on Windows Developer Blog.
date: 2025-03-31, from: Peter Warden
I’ve never been much of a podcast or video creator but recently I’ve started posting a series of short chats with my friend Ann Spencer on YouTube and it’s been a lot of fun. I realized I hadn’t mentioned it here, so as they say, please like and subscribe. I’ve also embedded one of my […]
https://petewarden.com/2025/03/31/ann-and-pete-talk-ai/
date: 2025-03-31, from: Guy Kawasaki blog
Jamie Rowen, Associate Professor of Legal Studies and Political Science, UMass Amherst
https://guykawasaki.substack.com/p/veterans-bear-brunt-of-cuts
@Robert’s feed at BlueSky (date: 2025-03-31, from: Robert’s feed at BlueSky)
Chrome, the Internet Explorer of the 21st century. It works and tastes great. Complete with just the right amount of extra surveillance without any of those pesky vitamins a body needs.
https://bsky.app/profile/rsdoiel.bsky.social/post/3lloqyj45es2w
date: 2025-03-31, from: 404 Media Group
“The risk/benefit calculus of providing free & open access to individual genetic data in 2025 is very different compared to 14 years ago.”
date: 2025-03-31, from: Liliputing
Amazon’s Fire tablets offer pretty good bang for the buck if you’re just looking at the hardware-to-price ratio. They tend to have decent screens, reasonably good processors, and niche features like… microSD card readers. But they also run a fork of Android called Fire OS that may not be everybody’s cup of tea. Fire Toolbox […]
The post Fire Toolbox v39.1 lets you replace the Fire OS launcher on recent Amazon Fire tablets appeared first on Liliputing.
date: 2025-03-31, updated: 2025-03-31, from: One Foot Tsunami
https://onefoottsunami.com/2025/03/31/the-elephant-in-the-closet/
date: 2025-03-31, from: Bunnie’s Studio Blog
The Ware for March 2025 is shown below. I was just taking this thing apart to see what went wrong, and thought it had some merit as a name that ware. But perhaps more interestingly, I was also experimenting with my cross-polarized imaging setup. This is a technique a friend of mine told me about […]
https://www.bunniestudios.com/blog/2025/name-that-ware-march-2025/
date: 2025-03-31, from: Bunnie’s Studio Blog
The Ware from last month is the main board from a Lego Duplo Steam Train. As predicted, this was a much easier one to guess. Congrats to MJS for naming it (with a margin of just half an hour ahead of Will), email me for your prize! And again, thanks to spida for contributing yet […]
https://www.bunniestudios.com/blog/2025/winner-name-that-ware-february-2025/
date: 2025-03-31, from: 404 Media Group
Everyone wants to look cool in a leather jacket and lead one of the most valuable companies in the world, but not everyone can pull it off.
@Tomosino’s Mastodon feed (date: 2025-03-31, from: Tomosino’s Mastodon feed)
My dad used to work with a guy who only ate French fries
https://tilde.zone/@tomasino/114257318490544735
date: 2025-03-31, from: Raspberry Pi News (.com)
We’re proud to hold the London Stock Exchange’s Green Economy Mark, highlighting our dedication to sustainable technology.
The post Raspberry Pi’s prestigious Green Economy Mark for sustainable practices appeared first on Raspberry Pi.
@Dave Winer’s linkblog (date: 2025-03-31, from: Dave Winer’s linkblog)
I agree with DHH. As a user who is in awe of the power of ChatGPT et al, I agree, and add “Only steal from the best.” Great artists must decide which art to be inspired by. And great artists before they die, should share all their secrets, so the next generation can be even greater.
https://world.hey.com/dhh/great-ai-steals-280615be
date: 2025-03-31, from: Paul Krugman
And business owners were deluded to believe otherwise
https://paulkrugman.substack.com/p/autocracy-is-bad-for-business
@Dave Winer’s linkblog (date: 2025-03-31, from: Dave Winer’s linkblog)
FBI raids home of prominent computer scientist who has gone incommunicado.
date: 2025-03-31, from: Hundred Rabbits blog
Hey everyone!
This is the list of all the changes we’ve done to our projects during the month of March.
In the above illustration, little Ninj is going through a first-aid kit, looking through our supplies to see what needs to be topped off and what is out-of-date. Rek drew a list of suggestions on what to include in both a first-aid and a medical kit for the Rabbit Waves project, we plan to add more items soon(thanks to everyone on Mastodon who suggested additions! It’ll be in the April update).
We will spend the first few days of April participating in Flickjam, making small games in the style of Flickgame, a tool originally made by Increpare, in which the world is navigated by clicking on pixels of different colors to head in different directions. Devine ported Flickgame to Varvara, and wrote a compiler for flick games to uxn roms.
This past month, Rek finished transcribing the entire 15 weeks of the Victoria to Sitka logbook! We have plans to turn it into a book, in the style of Busy Doing Nothing, with tons of extra content and illustrations.
March was a very good month for silly calendar doodles. Our paper calendar is always in view, it documents important events like releases, appointments, as well as food, memes, and other noteworthy things that happened on each day.
Book Club: This month we are still reading The Goldfinch by Donna Tartt(it’s a long book).
https://100r.co/site/log.html#mar2025
date: 2025-03-31, updated: 2025-03-31, from: Educated Guesswork blog
https://educatedguesswork.org/posts/memory-management-4/
date: 2025-03-30, from: Advent of Computing
The LGP-30 is one of my favorite computers. It’s small, scrappy, strange, and wonderous. Among its many wonders are two obscure languages: ACT-I and ACT-III. In this episode we are exploring the ACTS, how the LGP-30 was programmed in practice, and why I’ve been losing sleep for the last few weeks.
https://adventofcomputing.libsyn.com/episode-154-acting-up
@Robert’s feed at BlueSky (date: 2025-03-30, from: Robert’s feed at BlueSky)
Beautifully spoken, by John Lithgow #OnTyranny 👇
[contains quote post or other embedded content]
https://bsky.app/profile/rsdoiel.bsky.social/post/3llmxyla64223
date: 2025-03-30, from: This is history podcast
“I swear I will not flee from this fight. I will triumph, or I will die!” In the 1066 game of thrones for the crown of England, the most extraordinary of the three contenders is arguably Harald Hardrada: viking warrior, daring explorer, emperor’s bodyguard, serpent slayer, alleged lover to an empress, King of Norway, and […]
The post 552. The Last Viking: The Saga of Harald Hardrada (Part 1) appeared first on The Rest is History.
https://therestishistory.com/552-the-last-viking-the-saga-of-harald-hardrada-part-1/
@Robert’s feed at BlueSky (date: 2025-03-30, from: Robert’s feed at BlueSky)
So true.
[contains quote post or other embedded content]
https://bsky.app/profile/rsdoiel.bsky.social/post/3llmxa4jiws23
date: 2025-03-30, updated: 2025-03-30, from: Simon Willison’s Weblog
My advice about using AI is simple: use AI as an assistant, not an expert, and use it judiciously. Some people will object, “but AI can be wrong!” Yes, and so can the internet in general, but no one now recommends avoiding online resources because they can be wrong. They recommend taking it all with a grain of salt and being careful. That’s what you should do with AI help as well.
— Ned Batchelder, Horseless intelligence
<p>Tags: <a href="https://simonwillison.net/tags/ai">ai</a>, <a href="https://simonwillison.net/tags/ned-batchelder">ned-batchelder</a></p>
https://simonwillison.net/2025/Mar/30/ned-batchelder/#atom-everything
@Dave Winer’s linkblog (date: 2025-03-30, from: Dave Winer’s linkblog)
Trump Boasts About Getting Back at Opponents.
https://politicalwire.com/2025/03/30/trump-boasts-about-getting-back-at-opponents/
@Robert’s feed at BlueSky (date: 2025-03-30, from: Robert’s feed at BlueSky)
Wrote up my first impressions of spending a few weeks working with LLM for code generation.
https://rsdoiel.github.io/blog/2025/03/30/LLM_first_impressions_a_few_weeks_in.html
https://bsky.app/profile/rsdoiel.bsky.social/post/3llmsjaiybc2y
@Dave Winer’s linkblog (date: 2025-03-30, from: Dave Winer’s linkblog)
Burgum says Mount Rushmore has room for Trump.
https://thehill.com/homenews/administration/5222612-doug-burgum-mount-rushmore-trump/
@Dave Winer’s linkblog (date: 2025-03-30, from: Dave Winer’s linkblog)
Trump Again Floats Running for Anti-Constitutional Third Term.
https://www.motherjones.com/politics/2025/03/trump-third-term-constitution-2028/
@Dave Winer’s linkblog (date: 2025-03-30, from: Dave Winer’s linkblog)
Time to get out the popcorn. This should be interesting.
https://www.nytimes.com/2025/03/30/us/politics/trump-putin-russia-iran-tariffs.html
@Dave Winer’s linkblog (date: 2025-03-30, from: Dave Winer’s linkblog)
For God’s Sake, Fellow Lawyers, Stand Up to Trump.
@Dave Winer’s linkblog (date: 2025-03-30, from: Dave Winer’s linkblog)
Coming from Evan Osnos: Field guide to the ultra-rich.
https://www.axios.com/2025/02/28/coming-from-evan-osnos-field-guide-to-the-ultra-rich
date: 2025-03-30, from: Michael Moore’s blog
A Call to Artists and Non-Artists Everywhere!
https://www.michaelmoore.com/p/donald-trump-wants-a-new-portrait
date: 2025-03-30, from: Liliputing
Chinese mini PC maker GMK was one of the first companies to introduce a compact desktop computer powered by an AMD Strix Point processor that combines a Zen 5 CPU with RNA 3.5 graphics. Now, as expected, the company is one of the first to unveil a mini PC with a Strix Halo processor that […]
The post GMK EVO-X2 mini PC with Ryzen AI Max+ 395 Strix Halo launches April 7 appeared first on Liliputing.
https://liliputing.com/gmk-introduces-evo-x2-mini-pc-with-ryzen-ai-max-395-strix-halo/
date: 2025-03-30, from: Liliputing
OpenWrt is an open source, Linux-based operating system designed for routers and other wireless devices. It’s been around for more than two decades and for most of that time it’s been offered primarily as an operating system that you could install as a replacement for the firmware that ships with existing devices. But last year […]
The post OpenWrt Two will be a higher-performance router with 10 Gigabit LAN and WiFi 7 support appeared first on Liliputing.
date: 2025-03-30, updated: 2025-03-30, from: Deno blog
Oracle has filed a partial motion to dismiss our fraud claim. We’re now waiting on the USPTO to weigh in.
https://deno.com/blog/deno-v-oracle3
date: 2025-03-30, updated: 2025-03-30, from: Robin Rendle Essays
https://robinrendle.com/notes/item-flow/
@Dave Winer’s linkblog (date: 2025-03-30, from: Dave Winer’s linkblog)
April 5: 50 protests, 50 states, 1 movement.
@Dave Winer’s linkblog (date: 2025-03-30, from: Dave Winer’s linkblog)
Twenty Lessons, read by John Lithgow.
I/O wait and io_uring
date: 2025-03-30, updated: 2025-03-30, from: Uninformative blog
https://www.uninformativ.de/blog/postings/2025-03-30/0/POSTING-en.html
date: 2025-03-30, from: One Useful Thing
When Language Models Learn to See and Create
https://www.oneusefulthing.org/p/no-elephants-breakthroughs-in-image
@Dave Winer’s linkblog (date: 2025-03-30, from: Dave Winer’s linkblog)
NASA’s Curiosity rover has found the longest chain carbon molecules yet on Mars.
date: 2025-03-30, from: Paul Krugman
And what is the “Mar-a-Lago Accord”?
https://paulkrugman.substack.com/p/a-balance-of-payments-primer-part-b66
@Dave Winer’s linkblog (date: 2025-03-30, from: Dave Winer’s linkblog)
Prompt in alt, great graphic prompts that work in the new chatgpt.
https://www.promptinalt.com/gallery/#search
date: 2025-03-30, from: Stubbornella Blog
The international federation of sport climbing released its 2025 paraclimbing regulations. The document was a PDF that was in accessible to screen readers so I converted it to HTML. It is far from perfect, but should be a lot better than the PDF. For some odd reason every bit of text on the PDF was […]
https://www.stubbornella.org/2025/03/30/ifsc-competition-regulations-para-climbing-events/
@Dave Winer’s linkblog (date: 2025-03-30, from: Dave Winer’s linkblog)
And The NY Times sold us out to Trump, never to be trusted again.
https://www.nytimes.com/2025/03/29/opinion/democrats-strategy-2024.html
@Robert’s feed at BlueSky (date: 2025-03-30, from: Robert’s feed at BlueSky)
Something to consider.👇
[contains quote post or other embedded content]
https://bsky.app/profile/rsdoiel.bsky.social/post/3llklxoqiv22i
date: 2025-03-30, from: Lean Rada’s blog
Here’s a CSS technique that produces blurry image placeholders (LQIPs) without cluttering up your markup — Only a single custom property needed!
<img src="…" style="--lqip:192900">
The custom property above gives you this image:
Granted, it’s a very blurry placeholder especially in contrast to other leading solutions. But the point is that it’s minimal and non-invasive! No need for wrapper elements or attributes with long strings of data, or JavaScript at all.
There have been many different techniques to implement LQIPs (low quality image placeholders), such as a very low resolution WebP or JPEG (beheaded JPEGs even), optimised SVG shape placements (SQIP), and directly applying a discrete cosine transform (BlurHash). Don’t forget good old progressive JPEGs and interlaced PNGs!
At the other end of the spectrum, we have low tech solutions such as a simple solid fill of the image’s average colour.
Pure inline CSS solutions have the advantage rendering immediately —
even a background-image: url(…a data URL)
would be fine!
The big disadvantage of pure CSS approaches is that you typically litter your markup with lengthy inline styles or obnoxious data URLs. My handcoded site with no build step would be extra incompatible with this approach!
<!-- typical gradify css -->
<img width="200" height="150" style="
background: linear-gradient(45deg, #f4a261, transparent),
linear-gradient(-45deg, #e76f51, transparent),
linear-gradient(90deg, #8ab17d, transparent),
linear-gradient(0deg, #d62828, #023047);
">
BlurHash is a solution that minimises markup by compressing image data into a short base-83 string, but decoding and rendering that data requires additional JS…
<!-- a blurhash markup -->
<img width="200" height="150" src="…"
data-blurhash="LEHV6nWB2yk8pyo0adR*.7kCMdnj">
Is it possible to decode a blur hash in CSS instead?
Unlike BlurHash, we can’t use a string encoding because there are very few if any string manipulation functions in CSS (2025), so strings are out.
In the end, I came up with my own hash / encoding, and the integer type was the best vessel for it.
The usual way to encode stuff in a single integer is by bit packing, where you pack multiple numbers in an integer as bits. Amazingly, we can unpack them in pure CSS!
To unpack bits, all you need is bit shifting and bit masking.
Bit shifting can be done by division and floor
operations — calc(x / y)
and round(down,n)
—
and bit masking via the modulo function
mod(a,b)
.
* {
/* Example packed int: */
/* 0b11_00_001_101 */
--packed-int: 781;
--bits-9-10: mod(round(down, calc(var(--packed-int) / 256)), 4); /* 3 */
--bits-7-8: mod(round(down, calc(var(--packed-int) / 64)), 4); /* 0 */
--bits-4-6: mod(round(down, calc(var(--packed-int) / 8)), 8); /* 1 */
--bits-0-3: mod(var(--packed-int), 8); /* 5 */
}
Of course, we could also use pow(2,n)
instead of hardcoded
powers of two.
So, a single CSS integer value was going to be the encoding of the “hash” of my CSS-only blobhash (that’s what I’m calling it now). But how much information can we pack in a single CSS int?
The spec doesn’t say anything about the allowed range for int values, leaving the fate of my shenanigans to browser vendors.
From my experiments, apparently you can only use integers from
-999,999 up to 999,999 in custom properties before you
lose precision. Just beyond that limit, we start getting values rounded
to tens — 1,234,567 becomes 1,234,560. Which is
weird (precision is counted in decimal places!?), but I bet it’s due to
historical, Internet Explorer-esque reasons.
Anyway, within the range of [-999999, 999999] there are 1,999,999 values. This meant that with a single integer hash, almost two million LQIP configurations could be described. To make calculation easier, I reduced it to the nearest power of two down which is 220.
220 = 1,048,576 < 1,999,999 <
2,097,152 = 221
In short, I had 20 bits of information to encode the CSS-based LQIP hash.
With only 20 bits, the LQIP image must be a very simplified version of the full image. I ended up with this scheme: a single base colour + 6 brightness components, to be overlaid on top of the base colour in a 3×2 grid. A rather extreme version of chroma subsampling.
This totals 9 numbers to pack into the 20-bit integer:
The base colour is encoded in the lower 8 bits in the Oklab colour space. 2 bits for luminance, and 3 bits for each of the a and b coordinates. I’ve found Oklab to give subjectively balanced results, but RGB should work just as well.
The 6 greyscale components are encoded in the higher 12 bits — 2 bits each.
An offline script was created to compress any given image into this integer format. The script was quite simple: Get the average or dominant colour — there are a lot of libraries that can do that — then resize the image down to 3×2 pixels and get the greyscale values. Here’s my script.
Once encoded, it’s set as the value of –lqip
via the style
attribute in the target element. It could then be decoded in CSS. Here’s
the actual code I used for decoding:
[style*="--lqip:"] {
--lqip-ca: mod(round(down, calc((var(--lqip) + pow(2, 19)) / pow(2, 18))), 4);
--lqip-cb: mod(round(down, calc((var(--lqip) + pow(2, 19)) / pow(2, 16))), 4);
--lqip-cc: mod(round(down, calc((var(--lqip) + pow(2, 19)) / pow(2, 14))), 4);
--lqip-cd: mod(round(down, calc((var(--lqip) + pow(2, 19)) / pow(2, 12))), 4);
--lqip-ce: mod(round(down, calc((var(--lqip) + pow(2, 19)) / pow(2, 10))), 4);
--lqip-cf: mod(round(down, calc((var(--lqip) + pow(2, 19)) / pow(2, 8))), 4);
--lqip-ll: mod(round(down, calc((var(--lqip) + pow(2, 19)) / pow(2, 6))), 4);
--lqip-aaa: mod(round(down, calc((var(--lqip) + pow(2, 19)) / pow(2, 3))), 8);
--lqip-bbb: mod(calc(var(--lqip) + pow(2, 19)), 8);
Before rendering the decoded values, the raw number data values need to be converted to CSS colours. It’s fairly straightforward, just a bunch linear interpolations into colour constructor functions.
/* continued */
--lqip-ca-clr: hsl(0 0% calc(var(--lqip-ca) / 3 * 100%));
--lqip-cb-clr: hsl(0 0% calc(var(--lqip-cb) / 3 * 100%));
--lqip-cc-clr: hsl(0 0% calc(var(--lqip-cc) / 3 * 100%));
--lqip-cd-clr: hsl(0 0% calc(var(--lqip-cd) / 3 * 100%));
--lqip-ce-clr: hsl(0 0% calc(var(--lqip-ce) / 3 * 100%));
--lqip-cf-clr: hsl(0 0% calc(var(--lqip-cf) / 3 * 100%));
--lqip-base-clr: oklab(
calc(var(--lqip-ll) / 3 * 0.6 + 0.2)
calc(var(--lqip-aaa) / 8 * 0.7 - 0.35)
calc((var(--lqip-bbb) + 1) / 8 * 0.7 - 0.35)
);
}
cb
value corresponds to the relative brightness of
the top middle area. Fun fact: The above preview content is
implemented in pure CSS! Finally, rendering the LQIP. I used multiple radial gradients to render the greyscale components, and a flat base colour at the bottom.
[style*="--lqip:"] {
background-image:
radial-gradient(50% 75% at 16.67% 25%, var(--lqip-ca-clr), transparent),
radial-gradient(50% 75% at 50% 25%, var(--lqip-cb-clr), transparent),
radial-gradient(50% 75% at 83.33% 25%, var(--lqip-cc-clr), transparent),
radial-gradient(50% 75% at 16.67% 75%, var(--lqip-cd-clr), transparent),
radial-gradient(50% 75% at 50% 75%, var(--lqip-ce-clr), transparent),
radial-gradient(50% 75% at 83.33% 75%, var(--lqip-cf-clr), transparent),
linear-gradient(0deg, var(--lqip-base-clr), var(--lqip-base-clr));
}
The above is a simplified version of the full renderer for illustrative purposes. The real one has doubled layers, smooth gradient falloffs, and blend modes.
As you might expect, the radial gradients are arranged in a 3×2 grid. You can see it in this interactive deconstructor view!
These radial gradients are the core of the CSS-based LQIP. The position and radius of the gradients are an important detail that would determine how well these can approximate real images. Besides that, another requirement is that these individual radial gradients must be seamless when combined together.
I implemented smooth gradient falloffs to make the final result look seamless. It took special care to make the gradients extra smooth, so let’s dive into it…
Radial gradients use linear interpolation by default. Interpolation refers to how it maps the in-between colours from the start colour to the end colour. And linear interpolation, the most basic interpolation, well…
It doesn’t look good. It gives us these hard edges (highlighted above). You could almost see the elliptical edges of each radial gradient and their centers.
In real raster images, we’d use bilinear interpolation at the very least when scaling up low resolution images. Bicubic interpolation is even better.
One way to simulate the smoothness of bilinear interpolation in an array of CSS radial-gradients is to use ‘quadratic easing’ to control the gradation of opacity.
This means the opacity falloff of the gradient would be smoother around the center and the edges. Each gradient would get feathered edges, smoothening the overall composite image.
<figure>
<interpolation-example></interpolation-example>
<figcaption>
<strong>CSS radial-gradients:</strong>
Linear interpolation <em>(touch to see edges)</em>
</figcaption>
</figure>
<figure>
<img src="https://leanrada.com/notes/css-only-lqip/interpolation-bilinear.png?ref=rss" width="900" height="600">
<figcaption>Image: Bilinear interpolation</figcaption>
</figure>
<figure>
<img src="https://leanrada.com/notes/css-only-lqip/interpolation-bicubic.png?ref=rss" width="900" height="600">
<figcaption>Image: Bicubic interpolation</figcaption>
</figure>
<figure>
<img src="https://leanrada.com/notes/css-only-lqip/interpolation-pixels.png?ref=rss" width="3" height="2">
<figcaption>Image: Your browser’s native interpolation</figcaption>
</figure>
<figure>
<img src="https://leanrada.com/notes/css-only-lqip/interpolation-pixels.png?ref=rss" width="3" height="2">
<figcaption>Image: No interpolation</figcaption>
</figure>
However, CSS gradients don’t support nonlinear interpolation of opacity yet as of writing (not to be confused with colour space interpolation, which browsers do support!). The solution for now is to add more points in the gradient to get a smooth opacity curve based on the quadratic formula.
radial-gradient(
<position>,
rgb(82 190 240 / 100%) 0%,
rgb(82 190 204 / 98%) 10%,
rgb(82 190 204 / 92%) 20%,
rgb(82 190 204 / 82%) 30%,
rgb(82 190 204 / 68%) 40%,
rgb(82 190 204 / 32%) 60%,
rgb(82 190 204 / 18%) 70%,
rgb(82 190 204 / 8%) 80%,
rgb(82 190 204 / 2%) 90%,
transparent 100%
)
The quadratic easing blends adjacent radial gradients together, mimicking the smooth bilinear (or even bicubic) interpolation. It’s almost like a fake blur filter, thus achieving the ‘blur’ part of this BlurHash alternative.
Four 5-bit colours, where each R is 2 bits, G is 2 bits, and B is just a zero or one.
The four colours would map to the four corners of the image box, rendered as radial gradients
This was my first attempt, and I fiddled with this for a while, but mixing four colours properly require proper bilinear interpolation and probably a shader. Just layering gradients resulted in muddiness (just like mixing too many watercolour pigments), and there was no CSS blend mode that could fix it. So I abandoned it, and moved on to a monochromatic approach.
This was what I used on this website before. It’s simple and effective.
A clean-markup approach could still use the custom –lqip
variable:
<img src="…" style="--lqip:#9bc28e">
<style>
/* we save some bytes by ‘aliasing’ this property */
* { background-color: var(--lqip) }
</style>
We can use HTML attributes to control CSS soon! Here’s what the LQIP markup would look like in the future:
<img src="…" lqip="192900">
Waiting for
attr()
Level 5 for this one. It’s nicer and shorter, fewer weird
punctuations in markup (who came up with the double dash for CSS
vars anyway?). The value can then be referenced in CSS with
attr(lqip type(<number>))
instead of
var(–lqip)
.
For extra safety, a data-
prefix could be added to the
attribute name.
Can’t wait for this to get widespread adoption. I also want it for my TAC components.
https://leanrada.com/notes/css-only-lqip/?ref=rss
date: 2025-03-30, from: Robert’s Ramblings
A first take of LLM use for coding projects.
https://rsdoiel.github.io/blog/2025/03/30/LLM_first_impressions_a_few_weeks_in.html