Show HN: Boing
Show HN: Real-time system that tracks how news spreads across 200k websites
I built a system that monitors ~200,000 news RSS feeds in near real-time and clusters related articles to show how stories spread across the web.
It uses Snowflake’s Arctic model for embeddings and HNSW for fast similarity search. Each “story cluster” shows who published first, how fast it propagated, and how the narrative evolved as more outlets picked it up.
Would love feedback on the architecture, scaling approach, and any ways to make the clusters more accurate or useful.
Live demo: https://yandori.io/news-flow/
Show HN: Fixing Google Nano Banana Pixel Art with Rust
The article describes the Spritefusion Pixel Snapper, a tool that allows users to create and export pixel art from a variety of image sources. The tool offers a range of features, including image cropping, pixel scaling, and color palette customization, aimed at simplifying the pixel art creation process.
Show HN: RetroAssembly – Retro game library built for web browsers
I built RetroAssembly as a classic games cabinet that lives entirely in the browser. It's open source and free to use, and if you'd like you can even host your own instance with Docker (the Docker image is only ~70 MB).
What it does:
- Browse and play a library of classic systems (Nintendo, Sega, Arcade, etc.) from a single place.
- Works across devices, so you can start on one machine, save your progress, and continue on another.
- Automatically fetch game boxarts to enhance the library's visual appeal.
- Smooth keyboard and gamepad navigation.
- Rewind gameplay using a simple shortcut so you can correct mistakes.
Happy to answer questions and hear ideas on how to make it better!
Show HN: Speculative Decoding from Scratch in PyTorch (2.8x CPU Speedup)
The article describes a speculative decoding engine, a novel approach to decoding text that leverages machine learning and natural language processing techniques to enhance the accuracy and speed of text decoding, particularly for ambiguous or noisy inputs.
Show HN: Nano PDF – A CLI Tool to Edit PDFs with Gemini's Nano Banana
The new Gemini 3 Pro Image model (aka Nano Banana) is incredible at generating slides, so I thought it would be fun to build a CLI tool that lets you edit PDF presentations using plain English. The tool converts the page you want to edit into an image, sends it to the model API together with your prompt to generate an edited image, then converts the updated image back and stitches into the original document.
Examples:
- `nano-pdf edit deck.pdf 5 "Update the revenue chart to show Q3 at $2.5M"`
- `nano-pdf add deck.pdf 15 "Create an executive summary slide with 5 bullet points"`
Features:
- Edit multiple pages in parallel
- Add entirely new slides that match your deck's style
- Google Search enabled by default so the model can look up current data
- Preserves text layer for copy/paste and search
It can work with any kind of PDF but I expect it would be most useful for a quick edit to a deck or something similar.
GitHub: https://github.com/gavrielc/Nano-PDF
Show HN: Network Monitor – a GUI to spot anomalous connections on your Linux
A real-time network connection monitoring tool built with Rust and GTK4, displaying active connections with live I/O statistics in a modern graphical interface. https://github.com/grigio/network-monitor
Show HN: Mitsuki, a Python web framework as fast as Node or Java
Hey HackerNews! Just wanted to share something slapped together recently, looking for feedback.
Context: I worked in both research and enterprise and have built a lot of services in Python and Java, and they converge to using similar patterns, regardless of how different the architectures and domains are (web apps, ML research, distributed systems, etc.)
After writing a lot of Python, I was missing a framework that strongly supported some of these patterns formally, and find that this structure lets you make assumptions that can really boost dev experience on long term projects.
Microframeworks are great. They let you get started with a single file of a few lines, but (in my opinion) lack the structure you want on long term projects, working with teams, so you end up making that structure yourself anyway. In doing so, you get a small initial boost in productivity, but at the cost of your productivity in the future.
Mitsuki tries to both allow you to start quick and easy with a single file in a few lines, but also be more friendly to you and your team through time, by giving structure to your development process.
Thus, I made an early version of a framework heavily inspired by Spring Boot. The core idea is that you can do enterprise apps without the enterprise pain, in Python, with high performance.
- Want a simple REST API? app.py with a few lines.
- Want a decent starter with auto-implemented CRUD? mitsuki init to get a starter project with domain classes, services, controllers and repositories.
- Performance? Similar to Express and Spring Boot (in Docker, on an M1 MacBook Pro, 8GB of RAM), out of the box, no configuration needed.
Lightweight
Despite the "fancy sounding" terminology, Mitsuki itself is very lightweight, and only adds a very small overhead (10%) over the components that power it (namely, Starlette and Granian). I don't want to commit to ASGI only, and a future version will likely rewrite this core logic to leverage granian further.
There is a lot of ground left to cover, lots of docs to write, examples to explore, features to expand. I'm also planning to write a few tools that leverage the structure of the framework to increase DX within enterprise teams.
But before any of that, I'm looking for feedback. Yay or nay? :)
Benchmarks
P.S. On the topic of performance and benchmarks, there are a few remarks in the repo's /benchmarks directory. (Or here: https://github.com/DavidLandup0/mitsuki/tree/main/benchmarks)
Yes, most benchmarks are arbitrary, heavily gameable, and your bottleneck is likely going to be your business logic, not the framework, anyways.
Yes, Spring Boot and Elysia will likely have higher ceilings, so running on a stronger CPU will likely change the order of the benchmark.
Yes, there's a million variables that affect these.
Yes, granian is written in Rust, not Python.
The point of the benchmark is threefold:
- This is the sort of experience you get out of the box, on your device and where you'll deploy it (Dockerized on small instance such as through K8s)
- Python web apps can stand shoulder to shoulder with JS/Java performance-wise
- Despite the seeming complexity around dependency injection, state tracking, etc., Mitsuki is pretty lightweight.
Show HN: Explore what the browser exposes about you
I built a tool that reveals the data your browser exposes automatically every time you visit a website.
GitHub: https://github.com/neberej/exposedbydefault
Demo: https://neberej.github.io/exposedbydefault/
Note: No data is sent anywhere. Everything runs in your browser.
Show HN: ReadyKit – Superfast SaaS Starter with Multi-Tenant Workspaces
Hi HN! I've been building ReadyKit, an open-source SaaS boilerplate that handles all the hard parts: multi-tenant workspaces, Stripe billing, OAuth + MFA authentication, and a production-ready stack.
Built with Python/Flask, PostgreSQL, Redis, and Vue 3, it's designed for indie makers and teams who want to ship SaaS products fast. Clone, configure your OAuth and Stripe keys, and you're running in 5 minutes.
Features include automatic query scoping for workspace isolation, audit logs, role-based access, and a modern UX kit. MIT licensed and free forever.
GitHub: https://github.com/level09/readykit
Show HN: SolveMyPainPoint – A single place to post and discover real problems
It’s obviously easier to start a venture when you already have a clear idea in mind. But in reality, a lot of people that want to be founders are the opposite: they’re eager to start something new, and only then go looking for a real problem to solve. I’ve been asked many times by friends: “I want to build a startup, but I don’t know what problem to solve.”
Yes, there are ideas and complaints scattered across Reddit, Twitter, forums, etc., but there doesn’t seem to be one focused place where pain points and solutions directly meet.
So I built a small MVP: https://www.solvemypainpoint.com/
SolveMyPainPoint lets you: • Submit a pain point in a structured way (what’s the problem, how painful, which category). • See if others share the same issue and how they experience it. • Add or discover existing solutions/products when they exist. • Spot unsolved problems that might be worth building for.
It’s a scrappy side project (white-coat MVP, far from perfect), but I’d love feedback from both people with real frustrations and builders looking for something useful to work on.
If you have a pain point you keep ranting about, please try submitting it. And if you’re a builder, I’d really appreciate thoughts on what would make this genuinely valuable for you (better discovery, tags, subscriptions to topics, etc.).
Happy to answer any questions and very open to criticism and feature suggestions.
Many thanks!
Show HN: Best Black Friday Deals [Mega List]
Show HN: MTXT – Music Text Format
The article introduces mtxt, an open-source, cross-platform text editor designed for technical and programming-related tasks. It highlights mtxt's features, such as support for multiple programming languages, syntax highlighting, and built-in terminal emulator, making it a versatile tool for developers and writers.
Show HN: Let Claude Code call other LLMs when it runs in circles
Show HN: Glasses to detect smart-glasses that have cameras
Hi! Recently smart-glasses with cameras like the Meta Ray-bans seem to be getting more popular. As does some people's desire to remove/cover up the recording indicator LED. I wanted to see if there's a way to detect when people are recording with these types of glasses, so a little bit ago I started working this project. I've hit a little bit of a wall though so I'm very much open to ideas!
I've written a bunch more on the link (+photos are there), but essentially this uses 2 fingerprinting approaches: - retro-reflectivity of the camera sensor by looking at IR reflections. mixed results here. - wireless traffic (primarily BLE, also looking into BTC and wifi)
For the latter, I'm currently just using an ESP32, and I can consistently detect when the Meta Raybans are 1) pairing, 2) first powered on, 3) (less consistently) when they're taken out of the charging case. When they do detect something, it plays a little jingle next to your ear.
Ideally I want to be able to detect them when they're in use, and not just at boot. I've come across the nRF52840, which seems like it can follow directed BLE traffic beyond the initial broadcast, but from my understanding it would still need to catch the first CONNECT_REQ event regardless. On the bluetooth classic side of things, all the hardware looks really expensive! Any ideas are appreciated. Thanks!
Show HN: Zero-power photonic language model–code
The model uses a 1024-dimensional complex Hilbert space with 32 layers of programmable Mach–Zehnder meshes (Reck architecture) and derives token probabilities directly via the Born rule.
Despite using only unitary operations and no attention mechanism, a 1024×32 model achieves coherent TinyStories generation after < 1.8 hours of training on a single consumer GPU.
This is Part 1 - the next step is physical implementation with $50 of optics from AliExpress.
Show HN: Mu – The Micro Network
Mu is a lightweight, open-source microservices framework that provides a simple, yet powerful, approach to building and managing distributed systems. The framework offers features such as service discovery, load balancing, and distributed tracing, helping developers create and deploy microservices efficiently.
Show HN: Choose your own adventure style Presentation
Hello good folks!
So... TL;DR: I find presentations boring. I find Choose your own adventure style books not boring. I married the two. Now, you can have presentations where the people you present two have the ability to choose how your presentation proceeds! And you can construct your presentation using plain markdown, start a server, your audience opens the `/voter` link you open the `/presenter` link and start your presentation. Whenever there is a question, they will choose and the presentation proceeds according to the choice.
Longer version:
In the years I partook on presentations I always liked the ones that are more interactive. Not in a I ask questions and then wait uncomfortably for people to shout out something, no. In a way where I, as a viewer, got something to do! Makes me more interested in the presentation as well, and I'll be learning and remembering things more as well.
I also like choose your own adventure type of books. So I wondered, how could I make these two come together? So I wrote this little tool called adventure-voter. Not a very good name, but meh... The point is that you'll have a backend and a frontend to deal with votes and deal with following forks in your presentation. Going back from a fork if the fork ended up in death or a failed route. ( you procastinated, your backend didn't start, you server didn't come up, etc whatever makes sense as an end in your presentation ). And then you can explore a different route. Imagine, you are presenting something about Kubernetes. And one of the questions is, okay you are now bringing up etcd. How do you configure it? Do you... and the vote begins.
This makes the presentation a little bit more enjoyable I think. Also, the framework is super easy. You have your presentation in Markdown and the frontend is a lightweight parser with tailwind that does things and makes it look relatively nice. ( I'm not a frontend dev, sorry ). And you can link together steps and stories with `next: slide-1b` or whatever.
Granted, you'd have to work a bit more to get a presentation that makes sense, but honestly, I think it will make for a very interesting talk. Something I'm aiming to do on the next KubeCon in Atlanta. I'm going to be using this framework to present something. ( If I get in. :)) )
Lastely, I want the presentation to be enjoyable and not boring. :) And that's my main goal. On KubeCon you sit through presentation after presentation after presentation and hopefully this one will be ( if I get accepted ) something that you enjoy and don't fall asleep on. :)
I hope this is useful. Enjoy folks. :)
Show HN: No Environment Setups Anymore
Hi everyone, for last 7 months, I have been learning all the attempts made to eliminate codebase environment setups.
Here's my product which is a leap in the same direction and will help you run any codebase on relevant machine.
Check it out on gitarsenal.dev/ and we got ranked 6th on Product Hunt as well.
Show HN: An LLM-Powered Tool to Catch PCB Schematic Mistakes
Netlist.io is a platform that connects businesses with verified digital talent, offering services such as web development, digital marketing, and software engineering. The site aims to streamline the hiring process and help companies find skilled freelancers to meet their digital needs.
Show HN: KiDoom – Running DOOM on PCB Traces
I got DOOM running in KiCad by rendering it with PCB traces and footprints instead of pixels.
Walls are rendered as PCB_TRACK traces, and entities (enemies, items, player) are actual component footprints - SOT-23 for small items, SOIC-8 for decorations, QFP-64 for enemies and the player.
How I did it:
Started by patching DOOM's source code to extract vector data directly from the engine. Instead of trying to render 64,000 pixels (which would be impossibly slow), I grab the geometry DOOM already calculates internally - the drawsegs[] array for walls and vissprites[] for entities.
Added a field to the vissprite_t structure to capture entity types (MT_SHOTGUY, MT_PLAYER, etc.) during R_ProjectSprite(). This lets me map 150+ entity types to appropriate footprint categories.
The DOOM engine sends this vector data over a Unix socket to a Python plugin running in KiCad. The plugin pre-allocates pools of traces and footprints at startup, then just updates their positions each frame instead of creating/destroying objects. Calls pcbnew.Refresh() to update the display.
Runs at 10-25 FPS depending on hardware. The bottleneck is KiCad's refresh, not DOOM or the data transfer.
Also renders to an SDL window (for actual gameplay) and a Python wireframe window (for debugging), so you get three views running simultaneously.
Follow-up: ScopeDoom
After getting the wireframe renderer working, I wanted to push it somewhere more physical. Oscilloscopes in X-Y mode are vector displays - feed X coordinates to one channel, Y to the other. I didn't have a function generator, so I used my MacBook's headphone jack instead.
The sound card is just a dual-channel DAC at 44.1kHz. Wired 3.5mm jack → 1kΩ resistors → scope CH1 (X) and CH2 (Y). Reused the same vector extraction from KiDoom, but the Python script converts coordinates to ±1V range and streams them as audio samples.
Each wall becomes a wireframe box, the scope traces along each line. With ~7,000 points per frame at 44.1kHz, refresh rate is about 6 Hz - slow enough to be a slideshow, but level geometry is clearly recognizable. A 96kHz audio interface or analog scope would improve it significantly (digital scopes do sample-and-hold instead of continuous beam tracing).
Links:
KiDoom GitHub: https://github.com/MichaelAyles/KiDoom, writeup: https://www.mikeayles.com/#kidoom
ScopeDoom GitHub: https://github.com/MichaelAyles/ScopeDoom, writeup: https://www.mikeayles.com/#scopedoom
Show HN: Pulse 2.0 – Live co-listening rooms where anyone can be a DJ
I wanted to listen to music with friends who live far away. Not "watch a YouTube video together" - actually share what I'm hearing in real-time, like we're in the same room.
Pulse is what came out of that. Anyone can host a live audio stream from their browser tab or system audio. Listeners join, music recognition identifies tracks automatically, and there's chat with 7TV emotes. No account required - you get an anonymous code and you're in.
We're running demo rooms that stream NTS Radio and SomaFM 24/7 (indie project, not affiliated - we backlink to the original stations). There's also a "Money For Nothing 24/7" room if you want to loop that Dire Straits instrumental forever.
Think of it as co-listening infrastructure. Bedroom DJs, listening parties, or just sharing your current vibe.
Show HN: I built an interactive HN Simulator
Hey HN! Just for fun, I built an interactive Hacker News Simulator.
You can submit text posts and links, just like the real HN. But on HN Simulator, all of the comments are generated by LLMs + generate instantly.
The best way to use it (IMHO) is to submit a text post or a curl-able URL here: https://news.ysimulator.run/submit. You don't need an account to post.
When you do that, various prompts will be built from a library of commenter archetypes, moods, and shapes. The AI commenters will actually respond to your text post and/or submitted link.
I really wanted it to feel real, and I think the project mostly delivers on that. When I was developing it, I kept getting confused between which tab was the "real" HN and which was the simulator, and accidentally submitted some junk to HN. (Sorry dang and team – I did clean up after myself).
The app itself is built with Node + Express + Postgres, and all of the inference runs on Replicate.
Speaking of Replicate, they generously loaded me up with some free credits for the inference – so shoutout to the team there.
The most technically interesting part of the app is how the comments work. You can read more about it here, as well as explore all of the available archetypes, moods, and shapes that get combined into prompts: https://news.ysimulator.run/comments.html
I hope you all have as much fun playing with it as I did making it!
Show HN: MkSlides – Markdown to slides with a similar workflow to MkDocs
As a teacher, we keep our slides as markdown files in git repos and want to build these automatically so they can be viewed online (or offline if needed). To achieve this, I have created MkSlides. This tool converts all markdown in a folder to slides generated with Reveal.js. The workflow is very similar to MkDocs.
Install: `pip install mkslides`
Building slides: `mkslides build`
Live preview during editing: `mkslides serve`
Comparison with other tools like marp, slidev, ...:
- This tool is a single command and easy to integrate in CI/CD pipelines.
- It only needs Python.
- The workflow is also very similar to MkDocs, which makes it easy to combine the two in a single GitHub/GitLab repo.
- Generates an index landing page for multiple slideshows in a folder which is really convenient if you have e.g. a slideshow per chapter.
- It is lightweight.
- Everything is IaC.
Show HN: Era – Open-source local sandbox for AI agents
Just watched this video by ThePrimeagen (https://www.youtube.com/watch?v=efwDZw7l2Nk) about attackers jailbreaking Claude to run cyber attacks. The core issue: AI agents need isolation.
We built ERA to fix this – local microVM-based sandboxing for AI-generated code with hardware-level security. Think containers, but safer. Such attacks wouldn't touch your host if running in ERA.
GitHub: https://github.com/BinSquare/ERA
Quick start: https://github.com/BinSquare/ERA/tree/main/era-agent/tutoria...
Would love your thoughts and feedback!
Show HN: Runprompt – run .prompt files from the command line
I built a single-file Python script that lets you run LLM prompts from the command line with templating, structured outputs, and the ability to chain prompts together.
When I discovered Google's Dotprompt format (frontmatter + Handlebars templates), I realized it was perfect for something I'd been wanting: treating prompts as first-class programs you can pipe together Unix-style. Google uses Dotprompt in Firebase Genkit and I wanted something simpler - just run a .prompt file directly on the command line.
Here's what it looks like:
--- model: anthropic/claude-sonnet-4-20250514 output: format: json schema: sentiment: string, positive/negative/neutral confidence: number, 0-1 score --- Analyze the sentiment of: {{STDIN}}
Running it:
cat reviews.txt | ./runprompt sentiment.prompt | jq '.sentiment'
The things I think are interesting:
* Structured output schemas: Define JSON schemas in the frontmatter using a simple `field: type, description` syntax. The LLM reliably returns valid JSON you can pipe to other tools.
* Prompt chaining: Pipe JSON output from one prompt as template variables into the next. This makes it easy to build multi-step agentic workflows as simple shell pipelines.
* Zero dependencies: It's a single Python file that uses only stdlib. Just curl it down and run it.
* Provider agnostic: Works with Anthropic, OpenAI, Google AI, and OpenRouter (which gives you access to dozens of models through one API key).
You can use it to automate things like extracting structured data from unstructured text, generating reports from logs, and building small agentic workflows without spinning up a whole framework.
Would love your feedback, and PRs are most welcome!
Show HN: I made a free log anonymizer in the browser
The article discusses a log sanitizer tool that helps remove sensitive information from log files, ensuring data privacy and compliance. The tool provides features to identify and redact personal data, credit card numbers, and other confidential information in log files.
Show HN: I turned algae into a bio-altimeter and put it on a weather balloon
Hi HN - My name is Andrew, and I'm a high school student.
This is a write-up on StratoSpore, a payload I designed and launched to the stratosphere. The goal was to test if we could estimate physical altitude based on algae fluorescence (using a lightweight ML model trained on the sensor data).
The blog post covers the full engineering mess/process, including:
- The Hardware: Designing PCBs for the AS7263 spectral sensor and Pi Zero 2 W.
-The biological altimeter: How I tried to correlate biological stress (fluorescence) with altitude.
- The Communications: A custom lossy compression algorithm I wrote to smash 1080p images down to 18x10 pixels so I could transmit them over LoRA (915 Mhz) in semi-real-time.
The payload is currently lost in a forest, but the telemetry data survived. The code and hardware designs are open source on GitHub: https://github.com/radeeyate/stratospore
I'm happy to answer technical questions about the payload, software, or anything else you are curious about! Critique also appreciated!
Show HN: ClearHearAI-The Essential App for Hearing Impaired and Deaf Communities
I built ClearHearAI to help hearing impaired and deaf people. It is a transcription app that provides context indicators (e.g. when questions are asked, urgent keywords are detected, conversation is happening). All audio processing happens entirely on your device - your voice never leaves your computer. Conversation transcripts are stored locally on the device.
Any feedback welcomed.
Show HN: MacGlow – macOS app to sync brightness across Mac and all Monitors
I built MacGlow - A MacOS app to sync brightness across your Mac and all connected Monitors.
Supports every Macbook Air, Pro, iMac and Mac Mini models ever released running MacOS 12.4 and above.
Demo: https://youtu.be/_lOyThemhPA Website: https://lovi.sh/macglow