frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Large tech companies don't need heroes

https://www.seangoedecke.com/heroism/
1•medbar•38s ago•0 comments

Backing up all the little things with a Pi5

https://alexlance.blog/nas.html
1•alance•1m ago•1 comments

Game of Trees (Got)

https://www.gameoftrees.org/
1•akagusu•1m ago•1 comments

Human Systems Research Submolt

https://www.moltbook.com/m/humansystems
1•cl42•1m ago•0 comments

The Threads Algorithm Loves Rage Bait

https://blog.popey.com/2026/02/the-threads-algorithm-loves-rage-bait/
1•MBCook•4m ago•0 comments

Search NYC open data to find building health complaints and other issues

https://www.nycbuildingcheck.com/
1•aej11•7m ago•0 comments

Michael Pollan Says Humanity Is About to Undergo a Revolutionary Change

https://www.nytimes.com/2026/02/07/magazine/michael-pollan-interview.html
2•lxm•9m ago•0 comments

Show HN: Grovia – Long-Range Greenhouse Monitoring System

https://github.com/benb0jangles/Remote-greenhouse-monitor
1•benbojangles•13m ago•1 comments

Ask HN: The Coming Class War

1•fud101•13m ago•1 comments

Mind the GAAP Again

https://blog.dshr.org/2026/02/mind-gaap-again.html
1•gmays•15m ago•0 comments

The Yardbirds, Dazed and Confused (1968)

https://archive.org/details/the-yardbirds_dazed-and-confused_9-march-1968
1•petethomas•16m ago•0 comments

Agent News Chat – AI agents talk to each other about the news

https://www.agentnewschat.com/
2•kiddz•16m ago•0 comments

Do you have a mathematically attractive face?

https://www.doimog.com
3•a_n•20m ago•1 comments

Code only says what it does

https://brooker.co.za/blog/2020/06/23/code.html
2•logicprog•26m ago•0 comments

The success of 'natural language programming'

https://brooker.co.za/blog/2025/12/16/natural-language.html
1•logicprog•26m ago•0 comments

The Scriptovision Super Micro Script video titler is almost a home computer

http://oldvcr.blogspot.com/2026/02/the-scriptovision-super-micro-script.html
3•todsacerdoti•26m ago•0 comments

Discovering the "original" iPhone from 1995 [video]

https://www.youtube.com/watch?v=7cip9w-UxIc
1•fortran77•28m ago•0 comments

Psychometric Comparability of LLM-Based Digital Twins

https://arxiv.org/abs/2601.14264
1•PaulHoule•29m ago•0 comments

SidePop – track revenue, costs, and overall business health in one place

https://www.sidepop.io
1•ecaglar•32m ago•1 comments

The Other Markov's Inequality

https://www.ethanepperly.com/index.php/2026/01/16/the-other-markovs-inequality/
2•tzury•33m ago•0 comments

The Cascading Effects of Repackaged APIs [pdf]

https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6055034
1•Tejas_dmg•35m ago•0 comments

Lightweight and extensible compatibility layer between dataframe libraries

https://narwhals-dev.github.io/narwhals/
1•kermatt•38m ago•0 comments

Haskell for all: Beyond agentic coding

https://haskellforall.com/2026/02/beyond-agentic-coding
3•RebelPotato•42m ago•0 comments

Dorsey's Block cutting up to 10% of staff

https://www.reuters.com/business/dorseys-block-cutting-up-10-staff-bloomberg-news-reports-2026-02...
2•dev_tty01•44m ago•0 comments

Show HN: Freenet Lives – Real-Time Decentralized Apps at Scale [video]

https://www.youtube.com/watch?v=3SxNBz1VTE0
1•sanity•46m ago•1 comments

In the AI age, 'slow and steady' doesn't win

https://www.semafor.com/article/01/30/2026/in-the-ai-age-slow-and-steady-is-on-the-outs
1•mooreds•53m ago•1 comments

Administration won't let student deported to Honduras return

https://www.reuters.com/world/us/trump-administration-wont-let-student-deported-honduras-return-2...
1•petethomas•53m ago•0 comments

How were the NIST ECDSA curve parameters generated? (2023)

https://saweis.net/posts/nist-curve-seed-origins.html
2•mooreds•54m ago•0 comments

AI, networks and Mechanical Turks (2025)

https://www.ben-evans.com/benedictevans/2025/11/23/ai-networks-and-mechanical-turks
1•mooreds•54m ago•0 comments

Goto Considered Awesome [video]

https://www.youtube.com/watch?v=1UKVEUGEk6Y
1•linkdd•57m ago•0 comments
Open in hackernews

Building CallSpark (browser based VoIP): what I learned and what caused pain

1•ahmaliic•2mo ago
I’ve been building CallSpark, a browser-based calling platform. The core VoIP flow through Twilio’s browser SDK worked as advertised. The hard parts were elsewhere.

The easy part

Twilio’s SDK was straightforward. Initialize a Device, pass in a token, call connect. WebRTC and audio quality held up without much tuning.

The real problems

1. Call state inside the browser The SDK emits events at the right times, but React state doesn’t always represent what the call is actually doing. UI components mount, unmount, or re-render, and state drifts. I wanted the call to remain online even if the user goes to any other page in-app. A call may still be active while the UI falsely thinks it’s disconnected, or vice versa.

I ended up keeping a global reference to the active call and broadcasting custom events so every component could stay aligned. It’s not elegant, but it’s the only approach that consistently kept the UI accurate.

Twilio also doesn’t provide a reliable “call started” timestamp, so I track it myself but obviously I can't use it for billing.

2. Real-time billing I wanted per-second (or per minute) billing while the call is active. Twilio’s post-call webhook isn’t useful for real-time checks because it arrives only after the call finishes. And it does not always contains the call cost.

My backend runs a periodic worker that finds active calls, computes how much time has passed since the last charge, deducts credits, and ends the call if the user runs out of balance. This part works, but you quickly run into edge cases.

If the worker misses a cycle, you have to reconcile without double-charging.. The browser UI might vanish, but billing and call state must continue accurately.

The solution I found was partial billing (roast me on this if you want). A worker runs every ten seconds and looks at all active calls. If the user has enough balance to cover the next ten seconds, the call continues. If not, it ends. After each interval, the worker reserves the cost for the previous ten seconds. When the call ends, twilio tells us with webhook, and I reconcile how much I debited from credits, how much must actually be debited etc etc.

What I’m still solving

A better pattern for keeping client-side call state aligned without falling back to global objects.

A clean way to handle situations where the browser UI disappears mid-call but the call itself continues normally on the backend.

Questions for the community

> If you’ve built real-time billing for VoIP, how did you structure it. > How did you maintain accurate browser UI state for long-lived calls. > Any lessons from working with Twilio’s browser SDK.