The best Hacker News stories from Show from the past day
Latest posts:
Tell HN: 48 absurd web projects – one every month
A year ago I posted here about a small experiment:
<a href="https://news.ycombinator.com/item?id=44162363">https://news.ycombinator.com/item?id=44162363</a><p>I build one absurd web project every month and publish it on <a href="https://absurd.website" rel="nofollow">https://absurd.website</a><p>I kept going.<p>There are now 48 projects.<p>The idea is still the same - I build mostly unnecessary web projects that sit somewhere between experiments, jokes, products, and art.<p>But over time they’ve started moving more toward net art than just experimental web.<p>Some recent ones:<p>VandalAds - a banner format you can destroy instead of just viewing
Type Therapy - instead of talking affirmations, you type your thoughts to change them
Slow Rebranding - branding changes so slowly you don’t notice it
Guard Simulator - a crime appears for 15 seconds per day, if you catch it you win<p>I also started releasing some projects only to members, so not everything is public anymore.<p>What I like most is the rhythm: one public project and one private project each month.
It forces me to realize ideas instead of leaving them in notes.<p>The core is still always the idea and concept - not polish, not execution, not even usefulness.<p>It’s also interesting to see whether people understand the thought inside a project, discover something else in it, or see nothing at all.<p>I’m still going, and at this point absurd.website has become a big part of my life.<p>Thanks.
Show HN: MacMind – A transformer neural network in HyperCard on a 1989 Macintosh
I trained a transformer in HyperCard. 1,216 parameters. 1989 Macintosh. And yes, it took a while.<p>MacMind is a complete transformer neural network, embeddings, positional encoding, self-attention, backpropagation, and gradient descent, implemented entirely in HyperTalk, the scripting language Apple shipped with HyperCard in 1987. Every line of code is readable inside HyperCard's script editor. Option-click any button and read the actual math.<p>The task: learn the bit-reversal permutation, the opening step of the Fast Fourier Transform. The model has no formula to follow. It discovers the positional pattern purely through attention and repeated trial and error. By training step 193, it was oscillating between 50%, 75%, and 100% accuracy on successive steps, settling into convergence like a ball rolling into a bowl.<p>The whole "intelligence" is 1,216 numbers stored in hidden fields in a HyperCard stack. Save the file, quit, reopen: the trained model is still there, still correct. It runs on anything from System 7 through Mac OS 9.<p>As a former physics student, and the FFT is an old friend, it sits at the heart of signal processing, quantum mechanics, and wave analysis. I built this because we're at a moment where AI affects all of us but most of us don't understand what it actually does. Backpropagation and attention are math, not magic. And math doesn't care whether it's running on a TPU cluster or a 68030 from 1989.<p>The repo has a pre-trained stack (step 1,000), a blank stack you can train yourself, and a Python/NumPy reference implementation that validates the math.
Show HN: MacMind – A transformer neural network in HyperCard on a 1989 Macintosh
I trained a transformer in HyperCard. 1,216 parameters. 1989 Macintosh. And yes, it took a while.<p>MacMind is a complete transformer neural network, embeddings, positional encoding, self-attention, backpropagation, and gradient descent, implemented entirely in HyperTalk, the scripting language Apple shipped with HyperCard in 1987. Every line of code is readable inside HyperCard's script editor. Option-click any button and read the actual math.<p>The task: learn the bit-reversal permutation, the opening step of the Fast Fourier Transform. The model has no formula to follow. It discovers the positional pattern purely through attention and repeated trial and error. By training step 193, it was oscillating between 50%, 75%, and 100% accuracy on successive steps, settling into convergence like a ball rolling into a bowl.<p>The whole "intelligence" is 1,216 numbers stored in hidden fields in a HyperCard stack. Save the file, quit, reopen: the trained model is still there, still correct. It runs on anything from System 7 through Mac OS 9.<p>As a former physics student, and the FFT is an old friend, it sits at the heart of signal processing, quantum mechanics, and wave analysis. I built this because we're at a moment where AI affects all of us but most of us don't understand what it actually does. Backpropagation and attention are math, not magic. And math doesn't care whether it's running on a TPU cluster or a 68030 from 1989.<p>The repo has a pre-trained stack (step 1,000), a blank stack you can train yourself, and a Python/NumPy reference implementation that validates the math.
Show HN: MacMind – A transformer neural network in HyperCard on a 1989 Macintosh
I trained a transformer in HyperCard. 1,216 parameters. 1989 Macintosh. And yes, it took a while.<p>MacMind is a complete transformer neural network, embeddings, positional encoding, self-attention, backpropagation, and gradient descent, implemented entirely in HyperTalk, the scripting language Apple shipped with HyperCard in 1987. Every line of code is readable inside HyperCard's script editor. Option-click any button and read the actual math.<p>The task: learn the bit-reversal permutation, the opening step of the Fast Fourier Transform. The model has no formula to follow. It discovers the positional pattern purely through attention and repeated trial and error. By training step 193, it was oscillating between 50%, 75%, and 100% accuracy on successive steps, settling into convergence like a ball rolling into a bowl.<p>The whole "intelligence" is 1,216 numbers stored in hidden fields in a HyperCard stack. Save the file, quit, reopen: the trained model is still there, still correct. It runs on anything from System 7 through Mac OS 9.<p>As a former physics student, and the FFT is an old friend, it sits at the heart of signal processing, quantum mechanics, and wave analysis. I built this because we're at a moment where AI affects all of us but most of us don't understand what it actually does. Backpropagation and attention are math, not magic. And math doesn't care whether it's running on a TPU cluster or a 68030 from 1989.<p>The repo has a pre-trained stack (step 1,000), a blank stack you can train yourself, and a Python/NumPy reference implementation that validates the math.
Show HN: GNU grep as a PHP extension
Show HN: I rebuilt a 2000s browser strategy game on Cloudflare's edge
I grew up in Germany in the early 2000s playing a browser game called Inselkampf. You built up an island, mined gold and stone, cut down trees for wood, raised armies, sent fleets across an ocean grid, joined alliances and got betrayed by them. Same genre as OGame or Travian. It shut down in 2014 and I never found anything that replaced that feeling of checking in before school to see if your fleet had arrived and your alliance was still alive.<p>I finally built the version I wanted to play. Kampfinsel is live at kampfinsel.com right now with real players on it. It's not a straight copy of the old game. I gave it its own world. No magic, no gunpowder – just ballistas, fire pots, and slow ships crossing huge distances. Three resources: gold, stone, wood. Travel between islands takes hours, not seconds. It's slow on purpose.<p>The whole thing runs on Cloudflare's edge. Workers for the game logic and API, D1 for the database, KV for sessions and caching, R2 for assets and Durable Objects for per-island state and the tick system (fleet arrivals, combat, resource generation). There's no origin server at all. Making a stateful multiplayer game work inside Workers' CPU limits and D1's consistency model meant some non-obvious choices: resources are calculated on-read from timestamps instead of being ticked into the database, fleet movements live in Durable Object alarms and combat writes are batched. This helped me a lot!<p>The look is intentionally rough and text-heavy (Hi HN!): server-rendered HTML, tables, a parchment color palette, Unicode icons, no frontend framework, no build step. The only JavaScript is for countdown timers and auto-refresh. I wanted it to feel the way I remember these games looking, not how they actually looked. Honestly, it looks a lot like HN itself - tables, monospace, no chrome. If you like how this site looks, you'll probably feel at home.<p>No signup wall, no premium currency, no pay-to-win. Feedback very welcome, especially from anyone who played this kind of game back in the day or has opinions on running stateful stuff on Workers + D1 + Durable Objects. I'll be around for the next few hours.
Show HN: I rebuilt a 2000s browser strategy game on Cloudflare's edge
I grew up in Germany in the early 2000s playing a browser game called Inselkampf. You built up an island, mined gold and stone, cut down trees for wood, raised armies, sent fleets across an ocean grid, joined alliances and got betrayed by them. Same genre as OGame or Travian. It shut down in 2014 and I never found anything that replaced that feeling of checking in before school to see if your fleet had arrived and your alliance was still alive.<p>I finally built the version I wanted to play. Kampfinsel is live at kampfinsel.com right now with real players on it. It's not a straight copy of the old game. I gave it its own world. No magic, no gunpowder – just ballistas, fire pots, and slow ships crossing huge distances. Three resources: gold, stone, wood. Travel between islands takes hours, not seconds. It's slow on purpose.<p>The whole thing runs on Cloudflare's edge. Workers for the game logic and API, D1 for the database, KV for sessions and caching, R2 for assets and Durable Objects for per-island state and the tick system (fleet arrivals, combat, resource generation). There's no origin server at all. Making a stateful multiplayer game work inside Workers' CPU limits and D1's consistency model meant some non-obvious choices: resources are calculated on-read from timestamps instead of being ticked into the database, fleet movements live in Durable Object alarms and combat writes are batched. This helped me a lot!<p>The look is intentionally rough and text-heavy (Hi HN!): server-rendered HTML, tables, a parchment color palette, Unicode icons, no frontend framework, no build step. The only JavaScript is for countdown timers and auto-refresh. I wanted it to feel the way I remember these games looking, not how they actually looked. Honestly, it looks a lot like HN itself - tables, monospace, no chrome. If you like how this site looks, you'll probably feel at home.<p>No signup wall, no premium currency, no pay-to-win. Feedback very welcome, especially from anyone who played this kind of game back in the day or has opinions on running stateful stuff on Workers + D1 + Durable Objects. I'll be around for the next few hours.
Show HN: Libretto – Making AI browser automations deterministic
Libretto (<a href="https://libretto.sh" rel="nofollow">https://libretto.sh</a>) is a Skill+CLI that makes it easy for your coding agent to generate deterministic browser automations and debug existing ones. Key shift is going from “give an agent a prompt at runtime and hope it figures things out” to: “Use coding agents to generate real scripts you can inspect, run, and debug”.<p>Here’s a demo: <a href="https://www.youtube.com/watch?v=0cDpIntmHAM" rel="nofollow">https://www.youtube.com/watch?v=0cDpIntmHAM</a>. Docs start at <a href="https://libretto.sh/docs/get-started/introduction" rel="nofollow">https://libretto.sh/docs/get-started/introduction</a>.<p>We spent a year building and maintaining browser automations for EHR and payer portal integrations at our healthcare startup. Building these automations and debugging failed ones was incredibly time-consuming.<p>There’s lots of tools that use runtime AI like Browseruse and Stagehand which we tried, but (1) they’re reliant on custom DOM parsing that's unreliable on older and complicated websites (including all of healthcare). Using a website’s internal network calls is faster and more reliable when possible. (2) They can be expensive since they rely on lots of AI calls and for workflows with complicated logic you can’t always rely on caching actions to make sure it will work. (3) They’re at runtime so it’s not interpretable what the agent is going to do. You kind of hope you prompted it correctly to do the right thing, but legacy workflows are often unintuitive and inconsistent across sites so you can’t trust an agent to just figure it out at runtime. (4) They don’t really help you generate new automations or help you debug automation failures.<p>We wanted a way to reliably generate and maintain browser automations in messy, high-stakes environments, without relying on fragile runtime agents.<p>Libretto is different because instead of runtime agents it uses “development-time AI”: scripts are generated ahead of time as actual code you can read and control, not opaque agent behavior at runtime. Instead of a black box, you own the code and can inspect, modify, version, and debug everything.<p>Rather than relying on runtime DOM parsing, Libretto takes a hybrid approach combining Playwright UI automation with direct network/API requests within the browser session for better reliability and bot detection evasion.<p>It records manual user actions to help agents generate and update scripts, supports step-through debugging, has an optional read-only mode to prevent agents from accidentally submitting or modifying data, and generates code that follows all the abstractions and conventions you have already in your coding repo.<p>Would love to hear how others are building and maintaining browser automations in practice, and any feedback on the approach we’ve taken here.
Show HN: Libretto – Making AI browser automations deterministic
Libretto (<a href="https://libretto.sh" rel="nofollow">https://libretto.sh</a>) is a Skill+CLI that makes it easy for your coding agent to generate deterministic browser automations and debug existing ones. Key shift is going from “give an agent a prompt at runtime and hope it figures things out” to: “Use coding agents to generate real scripts you can inspect, run, and debug”.<p>Here’s a demo: <a href="https://www.youtube.com/watch?v=0cDpIntmHAM" rel="nofollow">https://www.youtube.com/watch?v=0cDpIntmHAM</a>. Docs start at <a href="https://libretto.sh/docs/get-started/introduction" rel="nofollow">https://libretto.sh/docs/get-started/introduction</a>.<p>We spent a year building and maintaining browser automations for EHR and payer portal integrations at our healthcare startup. Building these automations and debugging failed ones was incredibly time-consuming.<p>There’s lots of tools that use runtime AI like Browseruse and Stagehand which we tried, but (1) they’re reliant on custom DOM parsing that's unreliable on older and complicated websites (including all of healthcare). Using a website’s internal network calls is faster and more reliable when possible. (2) They can be expensive since they rely on lots of AI calls and for workflows with complicated logic you can’t always rely on caching actions to make sure it will work. (3) They’re at runtime so it’s not interpretable what the agent is going to do. You kind of hope you prompted it correctly to do the right thing, but legacy workflows are often unintuitive and inconsistent across sites so you can’t trust an agent to just figure it out at runtime. (4) They don’t really help you generate new automations or help you debug automation failures.<p>We wanted a way to reliably generate and maintain browser automations in messy, high-stakes environments, without relying on fragile runtime agents.<p>Libretto is different because instead of runtime agents it uses “development-time AI”: scripts are generated ahead of time as actual code you can read and control, not opaque agent behavior at runtime. Instead of a black box, you own the code and can inspect, modify, version, and debug everything.<p>Rather than relying on runtime DOM parsing, Libretto takes a hybrid approach combining Playwright UI automation with direct network/API requests within the browser session for better reliability and bot detection evasion.<p>It records manual user actions to help agents generate and update scripts, supports step-through debugging, has an optional read-only mode to prevent agents from accidentally submitting or modifying data, and generates code that follows all the abstractions and conventions you have already in your coding repo.<p>Would love to hear how others are building and maintaining browser automations in practice, and any feedback on the approach we’ve taken here.
Show HN: Libretto – Making AI browser automations deterministic
Libretto (<a href="https://libretto.sh" rel="nofollow">https://libretto.sh</a>) is a Skill+CLI that makes it easy for your coding agent to generate deterministic browser automations and debug existing ones. Key shift is going from “give an agent a prompt at runtime and hope it figures things out” to: “Use coding agents to generate real scripts you can inspect, run, and debug”.<p>Here’s a demo: <a href="https://www.youtube.com/watch?v=0cDpIntmHAM" rel="nofollow">https://www.youtube.com/watch?v=0cDpIntmHAM</a>. Docs start at <a href="https://libretto.sh/docs/get-started/introduction" rel="nofollow">https://libretto.sh/docs/get-started/introduction</a>.<p>We spent a year building and maintaining browser automations for EHR and payer portal integrations at our healthcare startup. Building these automations and debugging failed ones was incredibly time-consuming.<p>There’s lots of tools that use runtime AI like Browseruse and Stagehand which we tried, but (1) they’re reliant on custom DOM parsing that's unreliable on older and complicated websites (including all of healthcare). Using a website’s internal network calls is faster and more reliable when possible. (2) They can be expensive since they rely on lots of AI calls and for workflows with complicated logic you can’t always rely on caching actions to make sure it will work. (3) They’re at runtime so it’s not interpretable what the agent is going to do. You kind of hope you prompted it correctly to do the right thing, but legacy workflows are often unintuitive and inconsistent across sites so you can’t trust an agent to just figure it out at runtime. (4) They don’t really help you generate new automations or help you debug automation failures.<p>We wanted a way to reliably generate and maintain browser automations in messy, high-stakes environments, without relying on fragile runtime agents.<p>Libretto is different because instead of runtime agents it uses “development-time AI”: scripts are generated ahead of time as actual code you can read and control, not opaque agent behavior at runtime. Instead of a black box, you own the code and can inspect, modify, version, and debug everything.<p>Rather than relying on runtime DOM parsing, Libretto takes a hybrid approach combining Playwright UI automation with direct network/API requests within the browser session for better reliability and bot detection evasion.<p>It records manual user actions to help agents generate and update scripts, supports step-through debugging, has an optional read-only mode to prevent agents from accidentally submitting or modifying data, and generates code that follows all the abstractions and conventions you have already in your coding repo.<p>Would love to hear how others are building and maintaining browser automations in practice, and any feedback on the approach we’ve taken here.
Show HN: Every CEO and CFO change at US public companies, live from SEC
Built this solo. It watches SEC filings for executive and board changes, extracts the data, and shows it in real time. 2,100+ changes in the last 30 days. The comp data is interesting: average new CEO total comp is $8.4M across 284 appointments. The /explore page is fully open, no login needed.
Show HN: Every CEO and CFO change at US public companies, live from SEC
Built this solo. It watches SEC filings for executive and board changes, extracts the data, and shows it in real time. 2,100+ changes in the last 30 days. The comp data is interesting: average new CEO total comp is $8.4M across 284 appointments. The /explore page is fully open, no login needed.
Show HN: Run GUIs as Scripts
Hi there, Zero Stars here.<p>I recently published some new work to Hokusai Pocket, which is a cross-platform binary made on top of raylib and MRuby that runs GUIs from ruby scripts.<p>License?<p>MIT!<p>How does it work?<p>The binary is available on the GitHub releases page: <a href="https://github.com/skinnyjames/hokusai-pocket/releases/tag/0.6.1" rel="nofollow">https://github.com/skinnyjames/hokusai-pocket/releases/tag/0...</a><p>You can download the binary on x86 Windows, OSX, or Linux, and run your GUI application with<p>hokusai-pocket run:target="<your_hokusai_app.rb>"<p>For a little bit of a hello world, I started a photoshop clone<p><a href="https://github.com/skinnyjames/hokusai_demo_paint" rel="nofollow">https://github.com/skinnyjames/hokusai_demo_paint</a><p>Also a little game<p><a href="https://github.com/skinnyjames/pocket-squares" rel="nofollow">https://github.com/skinnyjames/pocket-squares</a><p>Docs / Help?<p>The docs are in progress, but the old docs for the CRuby version express some of the basic ideas around the project. <a href="https://hokusai.skinnyjames.net/docs/intro" rel="nofollow">https://hokusai.skinnyjames.net/docs/intro</a><p>(I'm also available to answer questions in between slinging pizza)<p>Deps?<p>Hokusai pocket currently uses<p>* libuv for offloading cpu intensive tasks to a worker pool to prevent blocking the UI thread, and I plan to integrate some libuv networking as well.<p>* raylib for backend graphics / I've also built with SDL on arm64 to run applications on my pinephone<p>* NativeFileDialog for the lovely integration into filesystem.<p>* MRuby for running or embedding the scripts<p>* tree-sitter for the custom template grammar (Although templates can be built with ruby)<p>Anyway, I hope you get a chance to try it. If you make something cool AND have docker installed, you can also publish your work as single binary<p>`hokusai-pocket publish:target=<your cool program.rb>`<p>Would love feedback, apps, and help with documentation and more build targets.<p>urs truly,<p>@ ᴗ @
Show HN: Kelet – Root Cause Analysis agent for your LLM apps
I've spent the past few years building 50+ AI agents in prod (some reached 1M+ sessions/day), and the hardest part was never building them — it was figuring out why they fail.<p>AI agents don't crash. They just quietly give wrong answers. You end up scrolling through traces one by one, trying to find a pattern across hundreds of sessions.<p>Kelet automates that investigation. Here's how it works:<p>1. You connect your traces and signals (user feedback, edits, clicks, sentiment, LLM-as-a-judge, etc.)
2. Kelet processes those signals and extracts facts about each session
3. It forms hypotheses about what went wrong in each case
4. It clusters similar hypotheses across sessions and investigates them together
5. It surfaces a root cause with a suggested fix you can review and apply<p>The key insight: individual session failures look random. But when you cluster the hypotheses, failure patterns emerge.<p>The fastest way to integrate is through the Kelet Skill for coding agents — it scans your codebase, discovers where signals should be collected, and sets everything up for you. There are also Python and TypeScript SDKs if you prefer manual setup.<p>It’s currently free during beta. No credit card required.
Docs: <a href="https://kelet.ai/docs/" rel="nofollow">https://kelet.ai/docs/</a><p>I'd love feedback on the approach, especially from anyone running agents in prod. Does automating the manual error analysis sound right?
Show HN: Kelet – Root Cause Analysis agent for your LLM apps
I've spent the past few years building 50+ AI agents in prod (some reached 1M+ sessions/day), and the hardest part was never building them — it was figuring out why they fail.<p>AI agents don't crash. They just quietly give wrong answers. You end up scrolling through traces one by one, trying to find a pattern across hundreds of sessions.<p>Kelet automates that investigation. Here's how it works:<p>1. You connect your traces and signals (user feedback, edits, clicks, sentiment, LLM-as-a-judge, etc.)
2. Kelet processes those signals and extracts facts about each session
3. It forms hypotheses about what went wrong in each case
4. It clusters similar hypotheses across sessions and investigates them together
5. It surfaces a root cause with a suggested fix you can review and apply<p>The key insight: individual session failures look random. But when you cluster the hypotheses, failure patterns emerge.<p>The fastest way to integrate is through the Kelet Skill for coding agents — it scans your codebase, discovers where signals should be collected, and sets everything up for you. There are also Python and TypeScript SDKs if you prefer manual setup.<p>It’s currently free during beta. No credit card required.
Docs: <a href="https://kelet.ai/docs/" rel="nofollow">https://kelet.ai/docs/</a><p>I'd love feedback on the approach, especially from anyone running agents in prod. Does automating the manual error analysis sound right?
Show HN: A memory database that forgets, consolidates, and detects contradiction
Vector databases store memories. They don't manage them. After 10k memories, recall quality degrades because there's no consolidation, no forgetting, no conflict resolution. Your AI agent just gets noisier.<p>YantrikDB is a cognitive memory engine — embed it, run it as a server, or connect via MCP. It thinks about what it stores: consolidation collapses duplicate memories, contradiction detection flags incompatible facts, temporal decay with configurable half-life lets unimportant memories fade like human memory does.<p>Single Rust binary. HTTP + binary wire protocol. 2-voter + 1-witness HA cluster via Docker Compose or Kubernetes. Chaos-tested failover, runtime deadlock detection (parking_lot), per-tenant quotas, Prometheus metrics. Ran a 42-task hardening sprint last week — 1178 core tests, cargo-fuzz targets, CRDT property tests, 5 ops runbooks.<p>Live on a 3-node Proxmox homelab cluster with multiple tenants. Alpha — primary user is me, looking for the second one.
Show HN: A memory database that forgets, consolidates, and detects contradiction
Vector databases store memories. They don't manage them. After 10k memories, recall quality degrades because there's no consolidation, no forgetting, no conflict resolution. Your AI agent just gets noisier.<p>YantrikDB is a cognitive memory engine — embed it, run it as a server, or connect via MCP. It thinks about what it stores: consolidation collapses duplicate memories, contradiction detection flags incompatible facts, temporal decay with configurable half-life lets unimportant memories fade like human memory does.<p>Single Rust binary. HTTP + binary wire protocol. 2-voter + 1-witness HA cluster via Docker Compose or Kubernetes. Chaos-tested failover, runtime deadlock detection (parking_lot), per-tenant quotas, Prometheus metrics. Ran a 42-task hardening sprint last week — 1178 core tests, cargo-fuzz targets, CRDT property tests, 5 ops runbooks.<p>Live on a 3-node Proxmox homelab cluster with multiple tenants. Alpha — primary user is me, looking for the second one.
Show HN: Plain – The full-stack Python framework designed for humans and agents
Show HN: Plain – The full-stack Python framework designed for humans and agents
Show HN: Plain – The full-stack Python framework designed for humans and agents