HNHacker News
TopNewBestAskShowJobs

habibur

2,635 karma · joined August 26, 2008

habib@habibur.com
submissionscomments
habibur··on AI generated music barred from Bandcamp
I am on the opposite side. For the last few months I don't listen to music unless it's AI generate. I can feel the difference.
habibur··on FFmpeg has issued a DMCA takedown on GitHub
LGPL allows compiling the whole of ffmpeg into a so or lib and then dynamically linking from there for your closed source code. That's the main difference between LGPL and GPL.

But if you change or add something in building ffmpeg.so that should be GPLed.

Apparently they copied some files from ffmpeg mixed with their propitiatory code and compiled it as a whole. That's the problem here.

habibur··on It’s been a very hard year
After the year 2000. dot com burst.

An tech employee posted he looked for job for 6 months, found none and has joined a fast food shop flipping burgers.

That turned tech workers switching to "flipping burgers" into a meme.

habibur··on PHP 8.5

    Backticks as an alias for shell_exec() are deprecated
Used that a lot in shell scripts. using php-cli.

like in `mkdir $dirname`;

habibur··on Cloudflare outage on November 18, 2025 post mortem

    On 18 November 2025 at 11:20 UTC (all times in this blog are UTC), Cloudflare's network began experiencing significant failures
    As of 17:06 all systems at Cloudflare were functioning as normal
6 hours / 5 years gives ~99.98% uptime.
habibur··on Rust in Android: move fast and fix things

    5 million Rust LOC 
    One potential memory safety vulnerability found 
    Rust is 0.2 vuln per 1 MLOC.

    Compared to 
    C and C++ : 1,000 memory safety vulnerabilities per MLOC. 

Key take.
habibur··on Meta replaces WhatsApp for Windows with web wrapper
Windows still has Active Desktop, doesn't it?
habibur··on LLMs are steroids for your Dunning-Kruger
I think it's ok. When wikipedia arrived, everyone was up in arms that people are learning from something that's open for anyone to edit.

But it rectified itself.

The same thing happened when Internet arrived. "Don't believe anything you read on the Internet."

I guess the reaction was same when printed media arrived.

But the thing is, things get better over time.

habibur··on Vacuum bricked after user blocks data collection – user mods it to run anyway
Previous post

https://news.ycombinator.com/item?id=45503560

which points to the actual blog of the author on github, instead of a news coverage of it.

habibur··on Leaker reveals which Pixels are vulnerable to Cellebrite phone hacking
I was pretty much looking for this info. Thank you.
habibur··on How memory maps (mmap) deliver faster file access in Go
Is mmap still faster than fread? That might have been true in the 90s but I was wondering about current improvements.

If you have enough free memory, the file will be cached in memory anyway instead of residing on disk. Therefore both will be reading from memory, albeit through different API.

Looking for recent benchmark or view from OS developers.

habibur··on Claude Memory
How's "memory" different from context window?
habibur··on Show HN: I'm rewriting a web server written in Rust for speed and ease of use
Looking at the graphs, I would recommend it would have been better to market it as "just as performant as nginx and htproxy" instead of "faster than all ...". While highlighting the simplicity as the added benefit above those all.
habibur··on Why I Chose Elixir Phoenix over Rails, Laravel, and Next.js
Last I checked, Erlang strings were represented internally as a linked list of integers, one int for every character.

That worked, but I felt like not every efficient, as web is very text heavy.

Has that changed in the later versions?

habibur··on Two things LLM coding agents are still bad at
Might be related with what the article was talking. AI can't cut-paste. It deletes the code and then regenerates it at another location instead of cut-paste.

Obviously generated code drift a little from deleted ones.

habibur··on Svelte’s characteristics that likely contribute most to improved performance
> when I ask why they do SSR

What are the reasons for not doing SSR?

habibur··on The evolution of Lua, continued [pdf]
> Lua also essentially got lexical scoping of local variables correct from the beginning while js blessed us with the nightmare of var.

That was not my experience when I was working with lua. Did anything change since? Asked google. Answered :

> In Lua, if a variable is assigned a value inside a function without being explicitly declared with the local keyword, it will automatically become a global variable. This is because, by default, all variables in Lua are global unless explicitly specified as local.

habibur··on Self-hosting email like it's 1984
Configure google to forward mails to your self hosted server.

When replying reply from your self hosted server.

That way you can gradually shift over.

I had been self hosting like this for years.

habibur··on Lockless MPSC/SPMC/MPMC queues are not queues
I don't know what others are reading.

The article basically says that when you have multiple suppliers or consumers, the "order" of the queue loses meaning. It turns into an "unordered" pool of data. Therefore focus should be shifted from maintain a "queue of data" to a "bag of data".

habibur··on Lockless MPSC/SPMC/MPMC queues are not queues
I read "slow" and "fast" in the article as comparative term. "slower than" what the writer has seen in other cases.

Absolute ms doesn't prove much unless you put it in comparison with other best.

habibur··on Sj.h: A tiny little JSON parsing library in ~150 lines of C99
Will trigger UB if level depth is > 2 billion or in the 2nd case number of lines > 2 billion.

Limit you JS input to 1 GB. I will have more problems in other portions of the stack if I start to receive a 2 GB JSON file over the web.

And if I still want to make it work for > 2GB, I would change all int in the source to 64 bits. Will still crash if input is > 2^64.

What I won't ever do in my code is check for int overflow.

habibur··on If you are good at code review, you will be good at using AI agents
You review the code and found it broken. Then what?

- Rewrite it yourself?

- Tell AI to generate it again? — will lead to worse code than the first.

- Write the long prompt (like 6 page) even longer and hope it works this time?

habibur··on This website has no class
Right click -> view source.

Found "<span class=..." — What?

Read the page.

Footer : "I only got 99% of the way there. I use 11ty’s syntax highlighting plugin, which uses classes for styling."

habibur··on Show HN: FFmpeg Pages – because I was tired of fighting FFmpeg
Alternate,

a few batch files

for all common tasks

names starting with ffmpeg.*

and -h displays help.

habibur··on Bookmarks.txt is a concept of keeping URLs in plain text files
Did the same, with the following differences :

- tab separator instead of space. you don't need cut -d with tabs. tab is the default separator for cut.

- use xsel -b to capture clipboard data while adding. Copy the URL into from browser to clipboard. And then run on console

    $ url.add hn bookmark script  # all parameters are keyword tags.
The script fetches the URL from clipboard $(xsel -b)
habibur··on Chinese astronauts make rocket fuel and oxygen in space
This won't enable perpetual space travel in case anyone thought so.

Rockets need to eject particles to generate force. And to eject 1 kg of fuel, its photo synthesis system has to lose 1 km of mass in one way or another.

The solution is to find a way to generate thrust without rocket fuel ejection.

habibur··on IQ tests results for AI
caching is the solution. don't serve dynamic content w/o html caching.
habibur··on Guid Smash
The birthday paradox simplified : if you generate n bits of random data, you can at most generate n/2 bits of random numbers before clashes start to occur. That's square root of number's range.

So if you need 1000 random numbers, generate from 1 to 1 million.

habibur··on PHP 8.5 adds pipe operator
I tried to emulate something similar with PHP at one point. But the problem with PHP was parameter order. Especially in functions like array_key_exists() the array element is the 2nd parameter, while pipe operator expects the object to work on be the 1st parameter, the array in these cases.

I believe they have solved this problem by now. Though no idea how.

habibur··on I tried living on IPv6 for a day
Maybe it's me, but I think IPv6 should have been 8 bytes instead of 16 and somewhat backward compatible with IPv4.

Like how 2-byte Unicode was struggling and UTF-8 saved it.

Page 1 of 23Next →