The best Hacker News stories from Show from the past day

Go back

Latest posts:

Show HN: Private blogging and journaling with a simulated audience

Show HN: GeneGuessr – a daily biology web puzzle

I made a web game inspired by Geoguessr and Wordle, where you get shown a 3D model of a random human protein each day, and you have to triangulate its gene name using similarity clues.<p>My background is in wet lab molecular biology and I intend this game to be engaging mostly to other biologists. But if you're outside the field, I'm interested to know if you can still solve it with browser use LLMs, and if you learned something interesting doing so. Let me know what you think.<p>I made it with Claude over the last 2 months. My coding experience is limited to basic python data analysis and figure making. I've seen people online asking, "Now that we have coding AI, why isn't there a deluge of awesome AI-generated apps made by non-coders?" - if this sounds like you, check out Geneguessr to understand what a web app by a non-coder looks like.<p>I might write more about the process if there's a demand, but what really unlocked the project for Claude was Linear MCP, where it could put each individual issue on a shared Kanban board. This, and Playwright MCP for testing on live site, were the two workhorses that got me through this. For bugs Claude couldn't one-shot, Linear was great for consolidating issue information so that I could dump it into ChatGPT Codex - it would usually think for like half an hour, output very confusing explanations, but the bug was gone.<p>Game is free, no log-in required, sorry if you run into any mobile bugs - didn't test it much there.<p><a href="https://geneguessr.brinedew.bio/" rel="nofollow">https://geneguessr.brinedew.bio/</a>

Show HN: AutoLISP interpreter in Rust/WASM – a CAD workflow invented 33 yrs ago

Show HN: Xcc700: Self-hosting mini C compiler for ESP32 (Xtensa) in 700 lines

Repo: <a href="https://github.com/valdanylchuk/xcc700" rel="nofollow">https://github.com/valdanylchuk/xcc700</a><p>Hi Everyone! I just wrote my first compiler!<p>- single pass, recursive descent, direct emission<p>- generates REL ELF binaries, runnable using ESP-IDF elf_loader<p>- very basic features only, just enough for self-hosting<p>- treats the Xtensa CPU as a stack machine for simplicity, no register allocation / window usage<p>- compilable on Mac, probably also Linux, can cross-compile for esp32 there<p>- wrote for fun / cyberdeck project<p>Sample output from esp32:<p><pre><code> xcc700.elf xcc700.c -o /d/cc.elf [ xcc700 ] BUILD COMPLETED > OK > IN : 700 Lines / 7977 Tokens > SYM : 69 Funcs / 91 Globals > REL : 152 Literals / 1027 Patches > MEM : 1041 B .rodata / 17120 B .bss > OUT : 27735 B .text / 33300 B ELF [ 40 ms ] >> 17500 Lines/sec << </code></pre> My best hope is that some fork might grow into a unique nice language tailored to the esp32 platform. I think it is underrated in userland hobby projects.

Show HN: Witr – Explain why a process is running on your Linux system

Hi HN,<p>I built a small Linux CLI tool called witr (Why Is This Running?).<p>The idea came from a situation most of us have hit: you log into a machine, see a process or port running, and immediately wonder why it exists, who started it, and what is keeping it alive right now.<p>witr traces a process, service, or port back to its origin and responsibility chain and explains it in a way that’s quick to read, especially when you’re debugging under pressure.<p>This is v0.1.0. It’s intentionally small and focused. Feedback, criticism, and edge cases are very welcome.<p>Repo: <a href="https://github.com/pranshuparmar/witr" rel="nofollow">https://github.com/pranshuparmar/witr</a>

Show HN: Gaming Couch – a local multiplayer party game platform for 8 players

Hi HN,<p>I’ve been working on Gaming Couch, a web-based game platform where up to 8 players use their smartphones as controllers to play real-time action mini-games on a central browser screen.<p>TL;DR:<p>- 18 competitive mini-games for up to 8 players<p>- Runs entirely in the browser<p>- Phones act as controllers (no apps, no accounts required)<p>- Focused on fast, chaotic, real-time party games (no trivia)<p>- Currently in public early access<p>Try it here: <a href="https://gamingcouch.com" rel="nofollow">https://gamingcouch.com</a>. Open the link on a computer, host a session, scan the QR code with your phone(s) and play!<p>What is it?<p>Gaming Couch is a party game platform where friends play short competitive action games together on one screen, using their phones as controllers (there's also support for physical gamepads if that's more your thing!)<p>I intentionally avoided trivia and text-heavy games. Many people don’t write or read English fluently, and I wanted games where reaction, timing, and chaos matter more than spelling.<p>It’s currently in early public access with 18 mini-games, all made by me and a two friends. All game rounds last ~1 minute, scores carry over, and after each round players vote on the next game. If you’re solo, 3 games support bots, but it’s best with a full couch of people as half the fun comes from the social aspect of playing together!<p>Why I built it:<p>For the last 15+ plus years, me and my friends have loved video game nights but organizing them has always been a PITA when you have more than 4 people playing:<p>- Different games were under different Steam accounts requiring downloads and installation.<p>- Extra controllers were missing (somebody forgot to bring theirs) or they wouldn’t pair.<p>- Consoles were expensive and not always available if we were on the road.<p>Once I started building it, other dev friends asked if they could make games for it too, which led me to realize this could also be a platform for small party games, especially for gamejam devs who don’t want to or have time to build multiplayer infrastructure from scratch. This is why supporting third-party games is the next major feature I’m working on.<p>Tech stack:<p>- Games run locally in the host’s browser (no streaming of games)<p>- Phones connect via WebRTC to the host session (1–10ms latency in ideal conditions with P2P connection)<p>- Fallback to TURN when direct P2P connection isn’t possible e.g. due to strict firewall settings in corporate networks or use of VPN's<p>- Website/Platform made with React + TypeScript<p>- Existing games made with Unity or just plain JS/TS.<p>- Backend: Supabase (Postgres + auth only, currently only used for optional user accounts)<p>How is it different from e.g. Jackbox, Airconsole or Nintendo?<p>Jackbox is absolutely great, but it’s heavily dependent on English literacy and "being funny" on the spot. I wanted something focused on fast, chaotic, real-time action games that work even if your friends speak different languages or just want to smash buttons. Also, I'm not a fan of their party pack model...<p>AirConsole is the most well known comparison to Gaming Couch in terms of technology and execution, but I feel there is a gap for a curated experience where the UI is unified, rounds are 60 seconds, and the competitive "meta-game" (scoreboards/voting) is baked into the platform. And in any case AirConsole was acquired by a car-software company and have pivoted their focus from couch gaming toward in-car entertainment.<p>Nintendo games are usually the gold standard in the party game category but the HW and games cost so much! With Gaming Couch, I want to keep the accessibility threshold as low as possible so everyone is able to play without upfront HW or SW costs.<p>What do you think of this? Are you an interested player or perhaps a developer who has had an idea to develop a fun 8 player mini-game but has been daunted by the idea thus far?

Show HN: WebPtoPNG – I built a WebP to PNG tool, everything runs in the browser

I built WebPtoPNG after getting frustrated with converters that throttle uploads or phone data; everything runs straight in the browser, and never asks for a signup.

Show HN: LazyPromise = Observable – Signals

A Promise-like primitive which is lazy/cancelable, has typed errors, and emits synchronously instead of on the microtask queue. In a way LazyPromise is what you get if you take an Observable and make it impossible to misuse it for what the Signals were built to do.

Show HN: Spice Cayenne – SQL acceleration built on Vortex

Hi HN, we’re Luke and Phillip, and we’re building Spice.ai OSS - a lightweight, portable data and AI engine and powered by Apache DataFusion & Ballista for SQL query, hybrid-search, and LLM-inference across disaggregated-storage used by enterprises like Barracuda Networks and Twilio.<p>We first introduced Spice [1] on HN in 2021 and re-launched it on HN [2] in 2024 re-built from the ground up in Rust.<p>Spice includes the concept of a Data Accelerator [3], which is a way to materialize data from disparate sources, such as other databases, in embedded databases like SQLite and DuckDB.<p>Today we’re excited to announce a new Ducklake-inspired Data Accelerator built on Vortex [3], a highly performant, extensible columnar data format that claims 100x faster random access, 10-20x faster scans, 5x faster writes with a similar compression ratio vs. Apache Parquet.<p>In our tests with Spice, Vortex performs faster than DuckDB with a third of the memory usage, and is much more scalable (multi-file). For real-world deployments, we see the DuckDB Data Accelerator often capping out around 1TB, but Spice Cayenne can do Petabyte-scale.<p>You can read about it at <a href="https://spice.ai/blog" rel="nofollow">https://spice.ai/blog</a> and in the Spice OSS release notes [4].<p>This is just the first version, and we’d love to get your feedback!<p>GitHub: <a href="https://github.com/spiceai/spiceai" rel="nofollow">https://github.com/spiceai/spiceai</a><p>[1] <a href="https://news.ycombinator.com/item?id=28448887">https://news.ycombinator.com/item?id=28448887</a><p>[2] <a href="https://news.ycombinator.com/item?id=39854584">https://news.ycombinator.com/item?id=39854584</a><p>[3] <a href="https://github.com/vortex-data/vortex" rel="nofollow">https://github.com/vortex-data/vortex</a><p>[4] <a href="https://spiceai.org/blog/releases/v1.9.0" rel="nofollow">https://spiceai.org/blog/releases/v1.9.0</a>

Show HN: A local-first, reversible PII scrubber for AI workflows

Hi HN,<p>I’m one of the maintainers of Bridge Anonymization. We built this because the existing solutions for translating sensitive user content are insufficient for many of our privacy-concious clients (Governments, Banks, Healthcare, etc.).<p>We couldn't send PII to third-party APIs, but standard redaction destroyed the translation quality. If you scrub <i>"John"</i> to <i>"[PERSON]"</i>, the translation engine loses gender context (often defaulting to masculine), which breaks grammatical agreement in languages like French or German.<p>So we built a reversible, local-first pipeline for Node.js/Bun. Here is how we implemented the tricky parts:<p>0. The Mapping<p>We use XML-like tags with ID’s that uniquely identify the PII, `<PII type=”PERSON” id=”1”>`. Translation models and the systems around them work with XML data structures since the dawn of Computer Aided Translation tools, so this improves compatibility with existing workflows and systems. A `PIIMap` is stored locally for rehydration after translation (AES-256-GCM-encrypted by default).<p>1. Hybrid Detection Engine<p>Obviously neither Regex nor NER was enough on its own.<p>- Structured PII: We use strict Regex with validation checksums for things like IBANs (Mod-97) and Credit Cards (Luhn). - Soft PII: For names and locations, we run a quantized `xlm-roberta` model via `onnxruntime-node` directly in the process. This lets us avoid a Python sidecar while keeping the package ‘lightweight’ (still ~280MB for the quantized model, but acceptable for desktop environments).<p>2. The "Hallucination" Guard (Fuzzy Rehydration)<p>LLMs often "mangle" the XML placeholders during translation (e.g., turning `<PII id="1"/>` into `< PII id = « 1 » >`). We implemented a Fuzzy Tag Matcher that uses flexible regex patterns to detect these artefacts. It identifies the tag even if attributes are reordered or quotes are changed, ensuring we can always map the token back to the original encrypted value.<p>3. Semantic Masking<p>We are currently working on "Semantic Masking"—adding context to the PII tag (like `<PII type="PERSON" gender="female" id="1" />` ) to preserve (gender) context for the translation. For now, we are relying on a lightweight lookup-table approach to avoid the overhead of a second ML model or the hassle of fine tuning. So far this works nicely for most use cases.<p>The code is MIT licensed. I’d love to hear how others are handling the "context loss" problem in privacy-preserving NLP pipelines! I think this could quite easily be generalized to other LLM applications as well.

Show HN: Lamp Carousel – DIY kinetic sculpture powered by lamp heat (2024)

I wanted to share this fun craft activity for the holidays that I've been doing with my family over the last few years. I came up with these while cutting up some cans trying to make an aluminum version of paper spinners.<p>There are a variety of shapes that work, but generally bigger+lighter spinners are better. Also incandescent bulbs are the best, but LEDs work too.<p>They remind me of candle carousels I would see at my grandparents' house during Christmas. Let me know what you think!

Show HN: Lamp Carousel – DIY kinetic sculpture powered by lamp heat (2024)

I wanted to share this fun craft activity for the holidays that I've been doing with my family over the last few years. I came up with these while cutting up some cans trying to make an aluminum version of paper spinners.<p>There are a variety of shapes that work, but generally bigger+lighter spinners are better. Also incandescent bulbs are the best, but LEDs work too.<p>They remind me of candle carousels I would see at my grandparents' house during Christmas. Let me know what you think!

Show HN: Exploring Mathematics with Python

Show HN: Exploring Mathematics with Python

Show HN: Tonbo – an embedded database for serverless and edge runtimes

Show HN: No more writing shitty regexes to police usernames

Every product that allows usernames eventually ships the same broken solution. Someone adds a blacklist. Then a regex. Then another regex copied from StackOverflow. It works just long enough to ship, and then `admin`, `support`, city names, brand impersonation, and obvious slurs start leaking through anyway. Everyone knows it’s fragile, but it gets ignored because "it’s just usernames".<p>I’ve had to rebuild this logic across multiple products, and I got tired of pretending it’s a solved problem. So I built *username.dev*, an API that answers a more useful question than "is this taken?" — it tells you what a username actually represents.<p>Instead of returning a boolean, the API classifies usernames into real categories like brands, public figures, places, system-reserved terms, dictionary words, premium handles, and offensive content, and returns structured metadata you can actually make decisions with. That means blocking impersonation without breaking legitimate users, stopping abuse without maintaining massive regex lists, and even monetizing high-demand usernames if that’s part of your product.<p>Under the hood it’s intentionally boring infrastructure: Cloudflare Workers at the edge, KV for fast reads, D1 for usage and analytics, and a simple HTTP endpoint (`GET /check?input=foo`). P95 latency sits around 300ms globally. There’s no ML magic, no black box, and no attempt to be clever — just fast, deterministic classification.<p>Pricing is usage-based and prepaid because subscriptions for infrastructure like this are annoying. There’s a free tier with 1,000 requests and no credit card. Use it, throw it away, or rip the idea off.<p>If you think regex blacklists are "good enough", usernames don’t matter, or this is a trivial problem, you’re probably already shipping bugs — they’re just not loud enough yet.<p>Tell me why this is a bad idea, what edge cases I’m missing, or what you’ve duct-taped together instead.<p>— Sourabh

Show HN: Turn raw HTML into production-ready images for free

Show HN: Turn raw HTML into production-ready images for free

Show HN: Vibium – Browser automation for AI and humans, by Selenium's creator

i started the selenium project 21 years ago. vibium is what i'd build if i started over today with ai agents in mind. go binary under the hood (handles browser, bidi, mcp) but devs never see it. just npm install vibium. python/java coming. for claude code: claude mcp add vibium -- npx -y vibium v1 ships today. ama.

Show HN: Vibium – Browser automation for AI and humans, by Selenium's creator

i started the selenium project 21 years ago. vibium is what i'd build if i started over today with ai agents in mind. go binary under the hood (handles browser, bidi, mcp) but devs never see it. just npm install vibium. python/java coming. for claude code: claude mcp add vibium -- npx -y vibium v1 ships today. ama.

1 2 3 ... 916 917 918 >