RSSAmplifier

Blog

Jesús Leganés-Combarro ‘piranna’

To do what anyone can do, leave it to anyone else

piranna.github.ioRSS feed ↗10 posts

Latest posts

Understanding npm Lifecycle Scripts (Once and For All)

Or: how a simple question about prepare vs prepublishOnly turned into a full-blown reverse-engineering of npm.

Mediasoup DataChannels: When Replacing WebSockets Actually Makes Sense

For years, the default answer for real-time bidirectional communication on the web has been simple: Need a chat? Use WebSockets. Need signaling? Use WebSockets. Need lightweight control messages? Use WebSockets. And honestly, most of the time, that answer is still correct… although not necessarily the most optimal (I still find XMPP / Jabber a pretty robust alternative, and my default choice for…

How to get all branches from a git remote and push them to a new remote

git push newremote refs/remotes/oldremote/*:refs/heads/* This command will push all branches from the oldremote to the newremote. The refs/remotes/oldremote/* part specifies that we want to push all branches from the oldremote, and the refs/heads/* part specifies that we want to push them to the newremote as branches. For tags, that would not be so much complex, just git push newremote --tags…

Who Watches the Watchmen? AI Code Generation and the Limits of Code Review

Some weeks ago I read an article that captured something many experienced developers have been feeling for some time: software development is changing rapidly in the age of generative AI, and not always in ways we fully understand. One quote from the article especially resonated with me in particular: An MIT professor called AI “a brand new credit card that lets us accumulate technical debt in…

WebRTC bitrate is not what you think, Part II (Mediasoup edition)

What changes when you add an SFU (Mediasoup) in the middle of the pipeline?

WebRTC bitrate is not what you think

Most WebRTC discussions about bitrate are wrong. Not because people don’t know the APIs, but because they don’t control the experiment. So instead of asking: “what bitrate should I use?” I built something slightly different: a reproducible WebRTC benchmark to measure how codecs behave under controlled conditions This is what came out of it.

Mafalda SFU receives “Best Scalable Real-Time Media Platform 2026”

I’m happy to share that Mafalda SFU has been recognised as “Best Scalable Real-Time Media Platform 2026” at the Spanish Business Awards organised by EU Business News. You can find the official listing at https://www.eubusinessnews.com/winners/mafalda-sfu/, and the announcement published on the project website. It’s always nice when a side project receives some external recognition, especially one…

Deterministic Audio Fixtures for End-to-End Testing

Designing Robust Spectral Validation for Audio Pipelines Testing audio systems is deceptively hard. Unlike text or structured data, audio pipelines are often lossy, time-sensitive, and highly stateful. Codecs introduce quantization noise, transports introduce jitter, buffers may reorder or drop frames, and decoders may subtly alter timing or amplitude. Traditional byte-level comparisons or…

Routing Android Device Through a Laptop Using Bluetooth PAN and Tailscale

A Practical Walkthrough of a Surprisingly Hard Problem For a task that sounded trivial at first, this experiment turned into a surprisingly deep dive into Android networking limitations, routing constraints, VPN behavior, and how Bluetooth Personal Area Networking (PAN) actually works under the hood. My goal sounded simple: Connect an Android phone to my Linux laptop over Bluetooth PAN and route…

Adding Backpressure to Python’s ProcessPoolExecutor

Recently I’ve hit a practical limitation with Python’s ProcessPoolExecutor: when feeding it tens of thousands of tasks from hundreds of producer threads, the executor happily accepted them all. The result? Memory usage ballooned, latency increased, and eventually the whole system became unstable.