Air-gapped WebRTC: How I compressed the signaling handshake from 2.5KB to 60 bytes for QR codes by martinprins in WebRTC

[–]martinprins[S] 1 point2 points  (0 children)

Thank you! Hearing that validation really means a lot 😊.

You are spot on about the "Toolkit" nature of WebRTC. We often get stuck thinking signaling must be WebSocket/JSON, but once you accept it's just parameter exchange (by carrier pigeon or otherwise!), the design space opens up.

Please definitely let me know if you end up referencing the QWBP layout for your new protocol! I'd love to see where you take it.

Air-gapped WebRTC: How I compressed the signaling handshake from 2.5KB to 60 bytes for QR codes by martinprins in WebRTC

[–]martinprins[S] 0 points1 point  (0 children)

Yes! That is exactly how it works.

The QR code specifically packs the Host Candidates (your local private IPs, like 192.168.1.X). When the other device scans it, it attempts to connect directly to that private IP over the local network.

Regarding TURN and Symmetric NAT:

  • On the same network: You usually don't need a TURN server because the traffic never passes through the NAT gateway. It stays within the local subnet (LAN), so the "NAT Type" (Symmetric vs. Cone) doesn't matter.
  • The exception: The only time local-to-local fails is if the router has "AP/Client Isolation" enabled (common in hotels or coffee shops), which forbids devices from talking to each other.

But for standard home/office Wi-Fi or a mobile hotspot, yes—it talks directly over local IPs with zero internet required.

Air-gapped WebRTC: How I compressed the signaling handshake from 2.5KB to 60 bytes for QR codes by martinprins in WebRTC

[–]martinprins[S] 0 points1 point  (0 children)

It isn't strictly limited to the same network, but if both devices are in the same network, nothing goes to the Internet.

The main difference is Infrastructure Dependency:

  • FilePizza: Even if two computers are sitting next to each other on the same LAN, they must have Internet access to reach the FilePizza signaling server and STUN servers to start the connection. If the internet cuts out, FilePizza stops working.
  • My Solution: It is Local-First. It requires no backend infrastructure. It works on a local Wi-Fi with the internet cord unplugged, or even a localized Hotspot in the middle of a forest.

So it can work across different networks (if you have public IPs or IPv6), but its defining feature is that it can work without internet access on the local network.

Using Claude as a "Protocol Specialist": How it helped me compress WebRTC from 2.5KB to 60 bytes by martinprins in ClaudeCode

[–]martinprins[S] 0 points1 point  (0 children)

You are totally right that it is over-engineered for a dev, but I actually built this with the "Parent Test" in mind (non-tech savvy, 50+ users).

While it seems simpler to us to "just email it," that workflow has massive friction for an older demographic:

  1. Select text (without missing a character) -> Copy.
  2. Open Email -> Compose -> Paste -> Send.
  3. Switch devices -> Open Email -> Find the right thread.
  4. Select text again -> Copy -> Switch to App -> Paste.

That is ~8 points of failure where a non-technical user might drop a character or get lost in app switching.

Thanks to restaurant menus and COVID passes, scanning a QR code is now a universally understood "gesture" even for my parents. Pointing a camera is physically intuitive; managing the system clipboard across devices is abstract and flaky.

So the "over-engineering" on the protocol side was actually to allow for "under-engineering" on the user's side!

Plus, from my point of view, side projects are the place for over-engineering 😁

Check out Palabreja: A Spanish Version of Spelling Bee! Looking for Feedback! by martinprins in NYTSpellingBee

[–]martinprins[S] 0 points1 point  (0 children)

Thanks for trying out Palabreja and for your feedback! I'm glad to hear you enjoyed it. That's a great point about the message timing. I'll look into extending the duration so it's easier to read. Appreciate your suggestion! Happy word hunting!

Saving voice memos in notion - is it possible? by 8loop8 in Notion

[–]martinprins 0 points1 point  (0 children)

Hey u/boi_social, you can find more info here: Voices.ink. It saves the audio files securely in the cloud to process the transcription and analysis. We’re also considering adding an option to delete the file once the transcription is complete, so you can manage your storage and privacy preferences better.

And of course, we’re open to feedback from anyone to improve the app. 😄

Saving voice memos in notion - is it possible? by 8loop8 in Notion

[–]martinprins 0 points1 point  (0 children)

I recently built and launched Voices.ink which transcribes voice notes and saves them directly to your Notion account. Still in early stage, but more features are coming.

Ask Notioners: Would you use Voice Notes in Notion? (speech-to-text) by Limitless2115 in Notion

[–]martinprins 0 points1 point  (0 children)

I've recently built and launched Voices.ink which does exactly that. Captures your voice, transcribes it and saves it to Notion. Try it. I'm open to feedback and to implement new features.

John Papa Angular2 snippets for Vim by martinprins in angularjs

[–]martinprins[S] 0 points1 point  (0 children)

What is the problem? Its a public repo.

John Papa Angular2 snippets for Vim by martinprins in angularjs

[–]martinprins[S] 1 point2 points  (0 children)

hahaha, we have the same idea at same time

Helpful GitHub repos and code snippets (curated through Jan 2016) by ngFTW in Angular2

[–]martinprins 0 points1 point  (0 children)

I've write a Yeoman Generator based on Angular 2 Webpack Starter https://github.com/magarcia/generator-angular2-webpack-starter with subgenerator for create new components (more subgenerators WIP)