The best Hacker News stories from Show from the past day

Go back

Latest posts:

Show HN: Build Web Automations via Demonstration

Hey HN,<p>We’ve been building browser agents for a while. In production, we kept converging on the same pattern: deterministic scripts for the happy path, agents only for edge cases. So we built Demonstrate Mode.<p>The idea is simple: You perform your workflow once in a remote browser. Notte records the interactions and generates deterministic automation code.<p>How it works: - Record clicks, inputs, navigations in a cloud browser - Compile them into deterministic code (no LLM at runtime) - Run and deploy on managed browser infrastructure<p>Closest analog is Playwright codegen but: - Infrastructure is handled (remote browsers, proxies, auth state) - Code runs in a deployable runtime with logs, retries, and optional agent fallback<p>Agents are great for prototyping and dynamic steps, but for production we usually want versioned code and predictable cost/behavior. Happy to dive into implementation details in the comments.<p>Demo: <a href="https://www.loom.com/share/f83cb83ecd5e48188dd9741724cde49a" rel="nofollow">https://www.loom.com/share/f83cb83ecd5e48188dd9741724cde49a</a><p>-- Andrea & Lucas, Notte Founders

Show HN: Kolibri, a DIY music club in Sweden

We’re Maria and Jonatan, a married couple running a small music night in Norrköping, Sweden, called Kolibri.<p>It’s not a software project. We run it through our own small Swedish company, pay artists, and do the operations ourselves. We do one night a month (usually the last Friday) in a restaurant venue called Mitropa. A typical night is about 50–70 paying guests. The first years it was DJs only, but last year we started doing live bands as well.<p>We made a simple site with schedule plus photos/video so you can see what it looks like: <a href="https://kolibrinkpg.com/" rel="nofollow">https://kolibrinkpg.com/</a><p>On the site:<p><pre><code> * photos and short videos (size/atmosphere) * the kind of acts we book (post-punk, darkwave, synth, adjacent electronic) * enough context to copy parts of the format if you’re building something similar locally * for the tech-curious: we built our own ticketing system (first used in February) and a media ingestion pipeline for Instagram and external photographers </code></pre> How it started was accidental. I was doing remote music sessions with a friend in London (Ableton projects back and forth on FaceTime), ran out of beer, and walked into the nearest place. I got talking to Nahir, who runs Mitropa, and floated the idea of running a DIY music night there. He was up for it.<p>What made it take off was doing things in person. People will show up alone if they trust the room. Maria ended up doing a lot of that work: greeting newcomers, noticing who looks uncertain, and setting a tone where people treat each other decently.<p>Maria didn’t come from a DJ background. Klubbvärdinnan started as a joke name at Kolibri and then became her DJ moniker. She got good quickly, and after a first gig outside our own night she started getting booked elsewhere too.<p>Marketing-wise, what worked best was very analogue: walking around town, visiting local businesses we genuinely like, buying something, introducing ourselves, and asking if we could leave a flyer.<p>In the beginning we weren’t sure how to present it on social media. So we filmed headphone walks: one person walking through town listening to a track we picked. It looked good, people wanted to be in them, and afterwards we’d buy them a couple of drinks and actually talk. That turned a social media interaction into a real connection. It was a bit of luck, but it worked.<p>Questions welcome about what worked, what failed, costs/logistics, and what we’d do differently if we started over.

Show HN: Kolibri, a DIY music club in Sweden

We’re Maria and Jonatan, a married couple running a small music night in Norrköping, Sweden, called Kolibri.<p>It’s not a software project. We run it through our own small Swedish company, pay artists, and do the operations ourselves. We do one night a month (usually the last Friday) in a restaurant venue called Mitropa. A typical night is about 50–70 paying guests. The first years it was DJs only, but last year we started doing live bands as well.<p>We made a simple site with schedule plus photos/video so you can see what it looks like: <a href="https://kolibrinkpg.com/" rel="nofollow">https://kolibrinkpg.com/</a><p>On the site:<p><pre><code> * photos and short videos (size/atmosphere) * the kind of acts we book (post-punk, darkwave, synth, adjacent electronic) * enough context to copy parts of the format if you’re building something similar locally * for the tech-curious: we built our own ticketing system (first used in February) and a media ingestion pipeline for Instagram and external photographers </code></pre> How it started was accidental. I was doing remote music sessions with a friend in London (Ableton projects back and forth on FaceTime), ran out of beer, and walked into the nearest place. I got talking to Nahir, who runs Mitropa, and floated the idea of running a DIY music night there. He was up for it.<p>What made it take off was doing things in person. People will show up alone if they trust the room. Maria ended up doing a lot of that work: greeting newcomers, noticing who looks uncertain, and setting a tone where people treat each other decently.<p>Maria didn’t come from a DJ background. Klubbvärdinnan started as a joke name at Kolibri and then became her DJ moniker. She got good quickly, and after a first gig outside our own night she started getting booked elsewhere too.<p>Marketing-wise, what worked best was very analogue: walking around town, visiting local businesses we genuinely like, buying something, introducing ourselves, and asking if we could leave a flyer.<p>In the beginning we weren’t sure how to present it on social media. So we filmed headphone walks: one person walking through town listening to a track we picked. It looked good, people wanted to be in them, and afterwards we’d buy them a couple of drinks and actually talk. That turned a social media interaction into a real connection. It was a bit of luck, but it worked.<p>Questions welcome about what worked, what failed, costs/logistics, and what we’d do differently if we started over.

Show HN: Kolibri, a DIY music club in Sweden

We’re Maria and Jonatan, a married couple running a small music night in Norrköping, Sweden, called Kolibri.<p>It’s not a software project. We run it through our own small Swedish company, pay artists, and do the operations ourselves. We do one night a month (usually the last Friday) in a restaurant venue called Mitropa. A typical night is about 50–70 paying guests. The first years it was DJs only, but last year we started doing live bands as well.<p>We made a simple site with schedule plus photos/video so you can see what it looks like: <a href="https://kolibrinkpg.com/" rel="nofollow">https://kolibrinkpg.com/</a><p>On the site:<p><pre><code> * photos and short videos (size/atmosphere) * the kind of acts we book (post-punk, darkwave, synth, adjacent electronic) * enough context to copy parts of the format if you’re building something similar locally * for the tech-curious: we built our own ticketing system (first used in February) and a media ingestion pipeline for Instagram and external photographers </code></pre> How it started was accidental. I was doing remote music sessions with a friend in London (Ableton projects back and forth on FaceTime), ran out of beer, and walked into the nearest place. I got talking to Nahir, who runs Mitropa, and floated the idea of running a DIY music night there. He was up for it.<p>What made it take off was doing things in person. People will show up alone if they trust the room. Maria ended up doing a lot of that work: greeting newcomers, noticing who looks uncertain, and setting a tone where people treat each other decently.<p>Maria didn’t come from a DJ background. Klubbvärdinnan started as a joke name at Kolibri and then became her DJ moniker. She got good quickly, and after a first gig outside our own night she started getting booked elsewhere too.<p>Marketing-wise, what worked best was very analogue: walking around town, visiting local businesses we genuinely like, buying something, introducing ourselves, and asking if we could leave a flyer.<p>In the beginning we weren’t sure how to present it on social media. So we filmed headphone walks: one person walking through town listening to a track we picked. It looked good, people wanted to be in them, and afterwards we’d buy them a couple of drinks and actually talk. That turned a social media interaction into a real connection. It was a bit of luck, but it worked.<p>Questions welcome about what worked, what failed, costs/logistics, and what we’d do differently if we started over.

Show HN: Kolibri, a DIY music club in Sweden

We’re Maria and Jonatan, a married couple running a small music night in Norrköping, Sweden, called Kolibri.<p>It’s not a software project. We run it through our own small Swedish company, pay artists, and do the operations ourselves. We do one night a month (usually the last Friday) in a restaurant venue called Mitropa. A typical night is about 50–70 paying guests. The first years it was DJs only, but last year we started doing live bands as well.<p>We made a simple site with schedule plus photos/video so you can see what it looks like: <a href="https://kolibrinkpg.com/" rel="nofollow">https://kolibrinkpg.com/</a><p>On the site:<p><pre><code> * photos and short videos (size/atmosphere) * the kind of acts we book (post-punk, darkwave, synth, adjacent electronic) * enough context to copy parts of the format if you’re building something similar locally * for the tech-curious: we built our own ticketing system (first used in February) and a media ingestion pipeline for Instagram and external photographers </code></pre> How it started was accidental. I was doing remote music sessions with a friend in London (Ableton projects back and forth on FaceTime), ran out of beer, and walked into the nearest place. I got talking to Nahir, who runs Mitropa, and floated the idea of running a DIY music night there. He was up for it.<p>What made it take off was doing things in person. People will show up alone if they trust the room. Maria ended up doing a lot of that work: greeting newcomers, noticing who looks uncertain, and setting a tone where people treat each other decently.<p>Maria didn’t come from a DJ background. Klubbvärdinnan started as a joke name at Kolibri and then became her DJ moniker. She got good quickly, and after a first gig outside our own night she started getting booked elsewhere too.<p>Marketing-wise, what worked best was very analogue: walking around town, visiting local businesses we genuinely like, buying something, introducing ourselves, and asking if we could leave a flyer.<p>In the beginning we weren’t sure how to present it on social media. So we filmed headphone walks: one person walking through town listening to a track we picked. It looked good, people wanted to be in them, and afterwards we’d buy them a couple of drinks and actually talk. That turned a social media interaction into a real connection. It was a bit of luck, but it worked.<p>Questions welcome about what worked, what failed, costs/logistics, and what we’d do differently if we started over.

Show HN: Shelvy Books

Hey HN! I built a little side project I wanted to share.<p>Shelvy is a free, visual bookshelf app where you can organize books you're reading, want to read, or have finished. Sign in to save your own collection.<p>Not monetized, no ads, no tracking beyond basic auth. Just a fun weekend project that grew a bit.<p>Live: <a href="https://shelvybooks.com" rel="nofollow">https://shelvybooks.com</a><p>Would love any feedback on the UX or feature ideas!

Show HN: SHDL – A minimal hardware description language built from logic gates

Hi, everyone!<p>I built SHDL (Simple Hardware Description Language) as an experiment in stripping hardware description down to its absolute fundamentals.<p>In SHDL, there are no arithmetic operators, no implicit bit widths, and no high-level constructs. You build everything explicitly from logic gates and wires, and then compose larger components hierarchically. The goal is not synthesis or performance, but understanding: what digital systems actually look like when abstractions are removed.<p>SHDL is accompanied by PySHDL, a Python interface that lets you load circuits, poke inputs, step the simulation, and observe outputs. Under the hood, SHDL compiles circuits to C for fast execution, but the language itself remains intentionally small and transparent.<p>This is not meant to replace Verilog or VHDL. It’s aimed at: - learning digital logic from first principles - experimenting with HDL and language design - teaching or visualizing how complex hardware emerges from simple gates.<p>I would especially appreciate feedback on: - the language design choices - what feels unnecessarily restrictive vs. educationally valuable - whether this kind of “anti-abstraction” HDL is useful to you.<p>Repo: <a href="https://github.com/rafa-rrayes/SHDL" rel="nofollow">https://github.com/rafa-rrayes/SHDL</a><p>Python package: PySHDL on PyPI<p>To make this concrete, here are a few small working examples written in SHDL:<p>1. Full Adder<p>component FullAdder(A, B, Cin) -> (Sum, Cout) {<p><pre><code> x1: XOR; a1: AND; x2: XOR; a2: AND; o1: OR; connect { A -> x1.A; B -> x1.B; A -> a1.A; B -> a1.B; x1.O -> x2.A; Cin -> x2.B; x1.O -> a2.A; Cin -> a2.B; a1.O -> o1.A; a2.O -> o1.B; x2.O -> Sum; o1.O -> Cout; }</code></pre> }<p>2. 16 bit register<p># clk must be high for two cycles to store a value<p>component Register16(In[16], clk) -> (Out[16]) {<p><pre><code> >i[16]{ a1{i}: AND; a2{i}: AND; not1{i}: NOT; nor1{i}: NOR; nor2{i}: NOR; } connect { >i[16]{ # Capture on clk In[{i}] -> a1{i}.A; In[{i}] -> not1{i}.A; not1{i}.O -> a2{i}.A; clk -> a1{i}.B; clk -> a2{i}.B; a1{i}.O -> nor1{i}.A; a2{i}.O -> nor2{i}.A; nor1{i}.O -> nor2{i}.B; nor2{i}.O -> nor1{i}.B; nor2{i}.O -> Out[{i}]; } }</code></pre> }<p>3. 16-bit Ripple-Carry Adder<p>use fullAdder::{FullAdder};<p>component Adder16(A[16], B[16], Cin) -> (Sum[16], Cout) {<p><pre><code> >i[16]{ fa{i}: FullAdder; } connect { A[1] -> fa1.A; B[1] -> fa1.B; Cin -> fa1.Cin; fa1.Sum -> Sum[1]; >i[2,16]{ A[{i}] -> fa{i}.A; B[{i}] -> fa{i}.B; fa{i-1}.Cout -> fa{i}.Cin; fa{i}.Sum -> Sum[{i}]; } fa16.Cout -> Cout; } }</code></pre>

Show HN: SHDL – A minimal hardware description language built from logic gates

Hi, everyone!<p>I built SHDL (Simple Hardware Description Language) as an experiment in stripping hardware description down to its absolute fundamentals.<p>In SHDL, there are no arithmetic operators, no implicit bit widths, and no high-level constructs. You build everything explicitly from logic gates and wires, and then compose larger components hierarchically. The goal is not synthesis or performance, but understanding: what digital systems actually look like when abstractions are removed.<p>SHDL is accompanied by PySHDL, a Python interface that lets you load circuits, poke inputs, step the simulation, and observe outputs. Under the hood, SHDL compiles circuits to C for fast execution, but the language itself remains intentionally small and transparent.<p>This is not meant to replace Verilog or VHDL. It’s aimed at: - learning digital logic from first principles - experimenting with HDL and language design - teaching or visualizing how complex hardware emerges from simple gates.<p>I would especially appreciate feedback on: - the language design choices - what feels unnecessarily restrictive vs. educationally valuable - whether this kind of “anti-abstraction” HDL is useful to you.<p>Repo: <a href="https://github.com/rafa-rrayes/SHDL" rel="nofollow">https://github.com/rafa-rrayes/SHDL</a><p>Python package: PySHDL on PyPI<p>To make this concrete, here are a few small working examples written in SHDL:<p>1. Full Adder<p>component FullAdder(A, B, Cin) -> (Sum, Cout) {<p><pre><code> x1: XOR; a1: AND; x2: XOR; a2: AND; o1: OR; connect { A -> x1.A; B -> x1.B; A -> a1.A; B -> a1.B; x1.O -> x2.A; Cin -> x2.B; x1.O -> a2.A; Cin -> a2.B; a1.O -> o1.A; a2.O -> o1.B; x2.O -> Sum; o1.O -> Cout; }</code></pre> }<p>2. 16 bit register<p># clk must be high for two cycles to store a value<p>component Register16(In[16], clk) -> (Out[16]) {<p><pre><code> >i[16]{ a1{i}: AND; a2{i}: AND; not1{i}: NOT; nor1{i}: NOR; nor2{i}: NOR; } connect { >i[16]{ # Capture on clk In[{i}] -> a1{i}.A; In[{i}] -> not1{i}.A; not1{i}.O -> a2{i}.A; clk -> a1{i}.B; clk -> a2{i}.B; a1{i}.O -> nor1{i}.A; a2{i}.O -> nor2{i}.A; nor1{i}.O -> nor2{i}.B; nor2{i}.O -> nor1{i}.B; nor2{i}.O -> Out[{i}]; } }</code></pre> }<p>3. 16-bit Ripple-Carry Adder<p>use fullAdder::{FullAdder};<p>component Adder16(A[16], B[16], Cin) -> (Sum[16], Cout) {<p><pre><code> >i[16]{ fa{i}: FullAdder; } connect { A[1] -> fa1.A; B[1] -> fa1.B; Cin -> fa1.Cin; fa1.Sum -> Sum[1]; >i[2,16]{ A[{i}] -> fa{i}.A; B[{i}] -> fa{i}.B; fa{i-1}.Cout -> fa{i}.Cin; fa{i}.Sum -> Sum[{i}]; } fa16.Cout -> Cout; } }</code></pre>

Show HN: Cursor for Userscripts

I’ve been experimenting with embedding an Claude Code/Cursor-style coding agent directly into the browser.<p>At a high level, the agent generates and maintains userscripts and CSS that are re-applied on page load. Rather than just editing DOM via JS in console the agent is treating the page, and the DOM as a file.<p>The models are often trained in RL sandboxes with full access to the filesystem and bash, so they are really good at using it. So to make the agent behave well, I've simulated this environment.<p>The whole state of a page and scripts is implemented as a virtual filesystem hacked on top of browser.local storage. URL is mapped to directories, and the agent starts inside this directory. It has the tools to read/edit files, grep around and a fake bash command that is just used for running scripts and executing JS code.<p>I've tested only with Opus 4.5 so far, and it works pretty reliably. The state of the file system can be synced to the real filesystem, although because Firefox doesn't support Filesystem API, you need to manually import the fs contents first.<p>This agent is <i>really</i> useful for extracting things to CSV, but it's also can be used for fun.<p>Demo: <a href="https://x.com/ichebykin/status/2015686974439608607" rel="nofollow">https://x.com/ichebykin/status/2015686974439608607</a>

Show HN: ShapedQL – A SQL engine for multi-stage ranking and RAG

Hi HN,<p>I’m Tullie, founder of Shaped. Previously, I was a researcher at Meta AI, worked on ranking for Instagram Reels, and was a contributor to PyTorch Lightning.<p>We built ShapedQL because we noticed that while retrieval (finding 1,000 items) has been commoditized by vector DBs, ranking (finding the best 10 items) is still an infrastructure problem.<p>To build a decent for you feed or a RAG system with long-term memory, you usually have to put together a vector DB (Pinecone/Milvus), a feature store (Redis), an inference service, and thousands of lines of Python to handle business logic and reranking.<p>We built an engine that consolidates this into a single SQL dialect. It compiles declarative queries into high-performance, multi-stage ranking pipelines.<p>HOW IT WORKS:<p>Instead of just SELECT <i>, ShapedQL operates in four stages native to recommendation systems:<p>RETRIEVE: Fetch candidates via Hybrid Search (Keywords + Vectors) or Collaborative Filtering. FILTER: Apply hard constraints (e.g., "inventory > 0"). SCORE: Rank results using real-time models (e.g., p(click) or p(relevance)). REORDER: Apply diversity logic so your Agent/User doesn’t see 10 nearly identical results.<p>THE SYNTAX: Here is what a RAG query looks like. This replaces about 500 lines of standard Python/LangChain code:<p>SELECT item_id, description, price<p>FROM<p><pre><code> -- Retrieval: Hybrid search across multiple indexes search_flights("$param.user_prompt", "$param.context"), search_hotels("$param.user_prompt", "$param.context") </code></pre> WHERE<p><pre><code> -- Filtering: Hard business constraints price <= "$param.budget" AND is_available("$param.dates") </code></pre> ORDER BY<p><pre><code> -- Scoring: Real-time reranking (Personalization + Relevance) 0.5 * preference_score(user, item) + 0.3 * relevance_score(item, "$param.user_prompt") </code></pre> LIMIT 20<p>If you don’t like SQL, you can also use our Python and Typescript SDKs. I’d love to know what you think of the syntax and the abstraction layer!</i>

Show HN: ShapedQL – A SQL engine for multi-stage ranking and RAG

Hi HN,<p>I’m Tullie, founder of Shaped. Previously, I was a researcher at Meta AI, worked on ranking for Instagram Reels, and was a contributor to PyTorch Lightning.<p>We built ShapedQL because we noticed that while retrieval (finding 1,000 items) has been commoditized by vector DBs, ranking (finding the best 10 items) is still an infrastructure problem.<p>To build a decent for you feed or a RAG system with long-term memory, you usually have to put together a vector DB (Pinecone/Milvus), a feature store (Redis), an inference service, and thousands of lines of Python to handle business logic and reranking.<p>We built an engine that consolidates this into a single SQL dialect. It compiles declarative queries into high-performance, multi-stage ranking pipelines.<p>HOW IT WORKS:<p>Instead of just SELECT <i>, ShapedQL operates in four stages native to recommendation systems:<p>RETRIEVE: Fetch candidates via Hybrid Search (Keywords + Vectors) or Collaborative Filtering. FILTER: Apply hard constraints (e.g., "inventory > 0"). SCORE: Rank results using real-time models (e.g., p(click) or p(relevance)). REORDER: Apply diversity logic so your Agent/User doesn’t see 10 nearly identical results.<p>THE SYNTAX: Here is what a RAG query looks like. This replaces about 500 lines of standard Python/LangChain code:<p>SELECT item_id, description, price<p>FROM<p><pre><code> -- Retrieval: Hybrid search across multiple indexes search_flights("$param.user_prompt", "$param.context"), search_hotels("$param.user_prompt", "$param.context") </code></pre> WHERE<p><pre><code> -- Filtering: Hard business constraints price <= "$param.budget" AND is_available("$param.dates") </code></pre> ORDER BY<p><pre><code> -- Scoring: Real-time reranking (Personalization + Relevance) 0.5 * preference_score(user, item) + 0.3 * relevance_score(item, "$param.user_prompt") </code></pre> LIMIT 20<p>If you don’t like SQL, you can also use our Python and Typescript SDKs. I’d love to know what you think of the syntax and the abstraction layer!</i>

Show HN: ShapedQL – A SQL engine for multi-stage ranking and RAG

Hi HN,<p>I’m Tullie, founder of Shaped. Previously, I was a researcher at Meta AI, worked on ranking for Instagram Reels, and was a contributor to PyTorch Lightning.<p>We built ShapedQL because we noticed that while retrieval (finding 1,000 items) has been commoditized by vector DBs, ranking (finding the best 10 items) is still an infrastructure problem.<p>To build a decent for you feed or a RAG system with long-term memory, you usually have to put together a vector DB (Pinecone/Milvus), a feature store (Redis), an inference service, and thousands of lines of Python to handle business logic and reranking.<p>We built an engine that consolidates this into a single SQL dialect. It compiles declarative queries into high-performance, multi-stage ranking pipelines.<p>HOW IT WORKS:<p>Instead of just SELECT <i>, ShapedQL operates in four stages native to recommendation systems:<p>RETRIEVE: Fetch candidates via Hybrid Search (Keywords + Vectors) or Collaborative Filtering. FILTER: Apply hard constraints (e.g., "inventory > 0"). SCORE: Rank results using real-time models (e.g., p(click) or p(relevance)). REORDER: Apply diversity logic so your Agent/User doesn’t see 10 nearly identical results.<p>THE SYNTAX: Here is what a RAG query looks like. This replaces about 500 lines of standard Python/LangChain code:<p>SELECT item_id, description, price<p>FROM<p><pre><code> -- Retrieval: Hybrid search across multiple indexes search_flights("$param.user_prompt", "$param.context"), search_hotels("$param.user_prompt", "$param.context") </code></pre> WHERE<p><pre><code> -- Filtering: Hard business constraints price <= "$param.budget" AND is_available("$param.dates") </code></pre> ORDER BY<p><pre><code> -- Scoring: Real-time reranking (Personalization + Relevance) 0.5 * preference_score(user, item) + 0.3 * relevance_score(item, "$param.user_prompt") </code></pre> LIMIT 20<p>If you don’t like SQL, you can also use our Python and Typescript SDKs. I’d love to know what you think of the syntax and the abstraction layer!</i>

Show HN: Dwm.tmux – a dwm-inspired window manager for tmux

Hey, HN! With all recent agentic workflows being primarily terminal- and tmux-based, I wanted to share a little project I created about decade ago.<p>I've continued to use this as my primary terminal "window manager" and wanted to share in case others might find it useful.<p>I would love to hear about other's terminal-based workflows and any other tools you may use with similar functionality.

Show HN: Dwm.tmux – a dwm-inspired window manager for tmux

Hey, HN! With all recent agentic workflows being primarily terminal- and tmux-based, I wanted to share a little project I created about decade ago.<p>I've continued to use this as my primary terminal "window manager" and wanted to share in case others might find it useful.<p>I would love to hear about other's terminal-based workflows and any other tools you may use with similar functionality.

Show HN: Dwm.tmux – a dwm-inspired window manager for tmux

Hey, HN! With all recent agentic workflows being primarily terminal- and tmux-based, I wanted to share a little project I created about decade ago.<p>I've continued to use this as my primary terminal "window manager" and wanted to share in case others might find it useful.<p>I would love to hear about other's terminal-based workflows and any other tools you may use with similar functionality.

Show HN: I built a small browser engine from scratch in C++

Hi HN! Korean high school senior here, about to start CS in college.<p>I built a browser engine from scratch in C++ to understand how browsers work. First time using C++, 8 weeks of development, lots of debugging—but it works!<p>Features:<p>- HTML parsing with error correction<p>- CSS cascade and inheritance<p>- Block/inline layout engine<p>- Async image loading + caching<p>- Link navigation + history<p>Hardest parts:<p>- String parsing(html, css)<p>- Rendering<p>- Image Caching & Layout Reflowing<p>What I learned (beyond code):<p>- Systematic debugging is crucial<p>- Ship with known bugs rather than chase perfection<p>- The Power of "Why?"<p>~3,000 lines of C++17/Qt6. Would love feedback on code architecture and C++ best practices!<p>GitHub: <a href="https://github.com/beginner-jhj/mini_browser" rel="nofollow">https://github.com/beginner-jhj/mini_browser</a>

Show HN: I built a small browser engine from scratch in C++

Hi HN! Korean high school senior here, about to start CS in college.<p>I built a browser engine from scratch in C++ to understand how browsers work. First time using C++, 8 weeks of development, lots of debugging—but it works!<p>Features:<p>- HTML parsing with error correction<p>- CSS cascade and inheritance<p>- Block/inline layout engine<p>- Async image loading + caching<p>- Link navigation + history<p>Hardest parts:<p>- String parsing(html, css)<p>- Rendering<p>- Image Caching & Layout Reflowing<p>What I learned (beyond code):<p>- Systematic debugging is crucial<p>- Ship with known bugs rather than chase perfection<p>- The Power of "Why?"<p>~3,000 lines of C++17/Qt6. Would love feedback on code architecture and C++ best practices!<p>GitHub: <a href="https://github.com/beginner-jhj/mini_browser" rel="nofollow">https://github.com/beginner-jhj/mini_browser</a>

Show HN: A MitM proxy to see what your LLM tools are sending

I built this out of curiosity about what Claude Code was actually sending to the API. Turns out, watching your tokens tick up in real-time is oddly satisfying.<p>Sherlock sits between your LLM tools and the API, showing you every request with a live dashboard, and auto-saved copies of every prompt as markdown and json.

Show HN: A MitM proxy to see what your LLM tools are sending

I built this out of curiosity about what Claude Code was actually sending to the API. Turns out, watching your tokens tick up in real-time is oddly satisfying.<p>Sherlock sits between your LLM tools and the API, showing you every request with a live dashboard, and auto-saved copies of every prompt as markdown and json.

Show HN: The HN Arcade

I love seeing all the small games that people build and post to this site.<p>I don't want to forget any, so I have built a directory/arcade for the games here that I maintain.<p>Feel free to check it out, add your game if its missing and let me know what you think. Thanks!

< 1 2 3 4 ... 933 934 935 >