frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Show HN: I built a synth for my daughter

https://bitsnpieces.dev/posts/a-synth-for-my-daughter/
829•random_moonwalk•5d ago•159 comments

Show HN: PrinceJS – 19,200 req/s Bun framework in 2.8 kB (built by a 13yo)

https://princejs.vercel.app
91•lilprince1218•2h ago•30 comments

Show HN: ESPectre – Motion detection based on Wi-Fi spectre analysis

https://github.com/francescopace/espectre
75•francescopace•7h ago•13 comments

Show HN: Continuous Claude – run Claude Code in a loop

https://github.com/AnandChowdhary/continuous-claude
51•anandchowdhary•2d ago•27 comments

Show HN: Building WebSocket in Apache Iggy with Io_uring and Completion Based IO

https://iggy.apache.org/blogs/2025/11/17/websocket-io-uring/
16•spetz•4h ago•5 comments

Show HN: Bsub.io – zero-setup batch execution for command-line tools

13•wkoszek•6h ago•6 comments

Show HN: Kalendis – Scheduling API (keep your UI, we handle timezones/DST)

https://kalendis.dev
5•dcabal25mh•4h ago•0 comments

Show HN: How are Markov chains so different from tiny LLMs?

4•JPLeRouzic•1h ago•0 comments

Show HN: I have created an alternative for Miro

https://nodeland.io
4•gxara•3h ago•0 comments

Show HN: Octopii, a framework for building distributed applications in Rust

5•janicerk•5h ago•1 comments

Show HN: Hegelion-Dialectic Harness for LLMs (Thesis –> Antithesis –> Synthesis)

https://github.com/Hmbown/Hegelion
2•hunterbown•3h ago•3 comments

Show HN: UltraLocked – iOS file vault using Secure Enclave and PFS

https://github.com/UltraLocked/UltraLocked
3•proletarian•4h ago•2 comments

Show HN: UpBeat – an AI-Enhanced RSS/Atom Reader that only shows you good news

https://upbeat.mitchelltechnologies.co.uk
4•seanmtracey•4h ago•0 comments

Show HN: ToolHop – Fast, simple utilities for every workflow

https://toolhop.app
3•steadyeddy_94•6h ago•0 comments

Show HN: I build a strace clone for macOS

https://github.com/Mic92/strace-macos
2•Mic92•6h ago•0 comments

Show HN: I ditched Grafana for my home server and built this instead

https://github.com/alibahmanyar/simon
6•bahmann•7h ago•0 comments

Show HN: Unflip – a puzzle game about XOR patterns of squares

https://unflipgame.com/
174•bogdanoff_2•6d ago•48 comments

Show HN: Learn Docker in your terminal

https://github.com/furkan/dockerlings
4•furk4n•8h ago•0 comments

Show HN: Internet Object – a lean, schema-first JSON alternative

https://internetobject.org/
2•aamironline•11h ago•2 comments

Show HN: Epub2md – Turn ePub books into Markdown folders for LLM agents

https://github.com/mefengl/epub2md
3•mefengl•13h ago•1 comments

Show HN: Common Sense License (CSL) – civic license for a techno-feudal world

https://github.com/shmaplex/csl
3•shmaplex•14h ago•1 comments

Show HN: Minivac 601 Simulator - a 1961 Relay Computer

https://minivac.greg.technology/
18•gregsadetsky•1d ago•1 comments

Show HN: Encore – Type-safe back end framework that generates infra from code

https://github.com/encoredev/encore
75•andout_•3d ago•47 comments

Show HN: Whirligig.live

https://whirligig.live
10•idiocache•1d ago•10 comments

Show HN: DBOS Java – Postgres-Backed Durable Workflows

https://github.com/dbos-inc/dbos-transact-java
113•KraftyOne•4d ago•57 comments

Show HN: Real-time 4D Julia set navigation via gamepad

https://banditcat.github.io/Atlas/Atlas.html
17•BanditCat•5d ago•0 comments

Show HN: I DON'T want to upload my private files to AI

2•cando_zhou•20h ago•0 comments

Show HN: 13Radar – Real-Time Hedge Fund Portfolio Analytics

https://www.13radar.com/
7•brokerjames•21h ago•3 comments

Show HN: Find Faceless YouTube Channels with AI

2•andybady•21h ago•3 comments

Show HN: CUDA, Shmuda: Fold Proteins on a MacBook

https://latentspacecraft.com/posts/mlx-protein-folding
9•geoffitect•22h ago•2 comments
Open in hackernews

Show HN: ESPectre – Motion detection based on Wi-Fi spectre analysis

https://github.com/francescopace/espectre
75•francescopace•7h ago
Hi everyone, I'm the author of ESPectre.

This is an open-source (GPLv3) project that uses Wi-Fi signal analysis to detect motion using CSI data, and it has already garnered almost 2,000 stars in two weeks.

Key technical details:

- The system does NOT use Machine Learning, it relies purely on Math. — Runs in real-time on a super affordable chip like the ESP32. - It integrates seamlessly with Home Assistant via MQTT.

Comments

tetris11•2h ago
Amazing stuff!

Am I right in understanding that only a single ESP32 device is needed (plus a router)?

pmontra•2h ago
Probably one per room because all the examples at https://github.com/francescopace/espectre/blob/main/CALIBRAT... are about a single room.

Is the author reads this, how does the system cope with multiple rooms in the same house, maybe a two or three storeys house?

francescopace•1h ago
Yes, you’re both correct:

You need one sensor for each area you want to monitor independently. With devices more capable than the ESP32‑S3, the coverage would likely be greater.

The ESP32‑C6, in particular, offers significantly better performance. Check out this comparison video from Espressif: https://www.youtube.com/watch?v=JjdpzM6zVJ8

yoavm•36m ago
How about if I want to monitor the apartment as a whole? Would 100m2 be too much for one sensor to handle?
francescopace•21m ago
It really depends on the environment: wall materials, interference, signal strength, and even temperature and humidity all play a role. Honestly, 100 m² is probably too large for a single sensor to cover reliably.

That said, ESP32 boards are very inexpensive, you can find them online for around €1 or even less.

roger_•1h ago
Been working on this very idea casually for couple years with ESP-IDF and I could never get the statistical signal processing just right (by my definition). Things I've tried: adapting filtering (LMS, Kalman), kernel methods (NEWMA, MMD), detectors (CUSUM, GLR), dimensionality reduction (random projection, online PCA), whitening, etc.

I use a single ESP32 in STA/AP mode which sniffs ACK packets with a specific destination mac, which come from any server on my WiFi network (uses a special sniffing mode IIRC). This way I can receive regular CSI packets originating from a fixed location and doesn't need another device running.

I'll have to look at this code, maybe I just overlooked the obvious or my requirements were too high!

francescopace•1h ago
ESPectre takes a different architectural approach that might address some of the challenges you encountered:

1. Instead of STA/AP mode on a single ESP32, ESPectre uses the natural traffic between your existing router and an ESP32-S3 in station mode. To ensure a stable, continuous CSI packet rate, I implemented a traffic generator that sends ICMP pings to the gateway at a configurable rate (default: 20 pps). This provides bidirectional traffic (request + reply) that reliably triggers CSI generation, giving you predictable packet timing without relying on ambient network traffic or special sniffing modes.

2. Rather than applying filters directly to raw CSI, ESPectre uses Moving Variance Segmentation (MVS) on unfiltered spatial turbulence (std dev of subcarrier amplitudes).

3. The filters are applied to features, not to the segmentation signal itself. This preserves motion sensitivity while cleaning up the feature data

I found that having a stable transmitter (the router) combined with controlled traffic generation provides more consistent multipath patterns and predictable CSI timing, which makes the segmentation more reliable.

roger_•23m ago
Actually I misspoke. I previously used STA/AP mode (and two ESP32s) but I switched to something close to what you describe. I filter the pings to only get the ones targeting a specific MAC (in promiscuous mode). This way I get only specific CSI packets and they're perfectly periodic at whatever rate I want.

Sounds like your MVS approach is a sliding window variance of the cross channel variance, with some adaptive thresholding. My pre-processing has generally been an EWMA de-meaning filter followed by some type of dimensionality reduction and feature extraction (kernel or hand-crafted, like raw moments), which I think fits into your overall architecture.

I'll have to look more closely at your work, thanks for sharing!

francescopace•6m ago
Interesting note, I actually disabled promiscuous mode after some testing because it made the CSI signal noisier and consumed more resources. I found that normal station mode with pings to gateway gave me cleaner, more predictable CSI data. But your MAC filtering approach might mitigate those issues!

You're spot on about the MVS approach. It's essentially a sliding window variance of the spatial turbulence (std dev across subcarriers), with adaptive thresholding based on the moving variance of that signal.

If you're interested in the MVS details, I wrote a free Medium article that walks through the segmentation algorithm step-by-step with visualizations. Links are in the README.

Your approach is actually quite similar to what I'm doing, just in a different order:

- My flow: Raw CSI → Segmentation (MVS) → Filters (Butterworth/Wavelet/Hampel/SG) → Feature extraction

- Your flow: Raw CSI → EWMA de-meaning → Dimensionality reduction → Feature extraction

The main difference is that I segment first to separate IDLE from MOTION states (keeping segmentation on raw, unfiltered CSI to preserve motion sensitivity), then only extract features during MOTION (to save CPU cycles).

Thanks for the thoughtful feedback! Always great to exchange notes with someone who's been in the trenches with CSI signal processing

Gys•1h ago
Interesting! Are you familiar with tommysense.com? I think it doing something similar? Did not yet have time to try it.
francescopace•1h ago
Tommysense creates a sensing mesh between devices, while ESPectre uses your existing Wi-Fi router as the transmitter. As a result, ESPectre needs only one device per area but requires a compatible router with solid 2.4 GHz coverage. The overall goal is similar, but ESPectre is open-source!
acl•1h ago
Would this work with a mesh router?
francescopace•42m ago
Sure, the ESP32 will connect to whichever mesh node provides the best 2.4 GHz signal

- It monitors CSI from that specific node (the one it's associated with)

- If the ESP32 roams to a different mesh node, it will start monitoring CSI from the new node

The system doesn't care about the router's internal mesh topology, it just needs a stable connection to receive CSI data from the associated access point.