frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Better Than JSON

https://aloisdeniel.com/blog/better-than-json
12•barremian•42m ago

Comments

spagoop•19m ago
Is it just me or is this article insanely confusing? With all due respect to the author, please be mindful of copy editing LLM-assisted writing.

There is a really interesting discussion underneath of this as to the limitations of JSON along with potential alternatives, but I can't help but distrust this writing due to how much it sounds like an LLM.

port11•15m ago
I don't think it's LLM-generated or even assisted. It's kinda like how I write when I don't want to really argue a point but rather get to the good bits.

Seems like the author just wanted to talk about Protobuf without bothering too much about the issues with JSON (though some are mentioned).

dkdcio•13m ago
do you have any evidence that the author used a LLM? focusing on the content, instead of the tooling used to write the content, leads to a lot more productive discussions

I promise you cannot tell LLM-generated content from non-LLM generated content. what you think you’re detecting is poor quality, which is orthogonal to the tooling used

spagoop•1m ago
Fair point, to be constructive here, LLMs seem to love lists and emphasizing random words / phrases with bold. Those two are everywhere. Not a smoking gun but enough to tune out.

I am not dismissing this as being slop and actually have no beef with using LLMs to write but yes, as you call out, I think it's just poorly written or perhaps I'm not the specific audience for this.

Sorry if this is bad energy, I appreciate the write up regardless.

codewritero•17m ago
I love to see people advocating for better protocols and standards but seeing the title I expected the author to present something which would be better in the sense of supporting the same or more use cases with better efficiency and/or ergonomics and I don't think that protobuf does that.

Protobuf has advantages, but is missing support for a tons of use cases where JSON thrives due to the strict schema requirement.

A much stronger argument could be made for CBOR as a replacement for JSON for most use cases. CBOR has the same schema flexibility as JSON but has a more concise encoding.

port11•13m ago
I think the strict schema of Protobuf might be one of the major improvements, as most APIs don't publish a JSON schema? I've always had to use ajv or superstruct to make sure payloads match a schema, Protobuf doesn't need that (supposedly).
written-beyond•14m ago
Idk I built a production system and ensured all data transfers, client to server and server to client were proto buf and it was a pain.

Technically, it sounds really good but the actual act of managing it is hell. That or I need a lot of practice to use them, at that point shouldn't I just use JSON and get on with my life.

esafak•13m ago
It's premature and maybe presumptuous for him to be advertising protobufs when he hasn't heard of the alternatives yet.
pzmarzly•13m ago
> With Protobuf, that’s impossible.

Unless your servers and clients push at different time, thus are compiled with different versions of your specs, then many safety bets are off.

There are ways to be mostly safe (never reuse IDs, use unknown-field-friendly copying methods, etc.), but distributed systems are distributed systems, and protobuf isn't a silver bullet that can solve all problems on author's list.

On the upside, it seems like protobuf3 fixed a lot of stuff I used to hate about protobuf2. Issues like:

> if the field is not a message, it has two states:

> - ...

> - the field is set to the default (zero) value. It will not be serialized to the wire. In fact, you cannot determine whether the default (zero) value was set or parsed from the wire or not provided at all

are now gone if you stick to using protobuf3 + `message` keyword. That's really cool.

volemo•6m ago
S-expressions exist since 1960, what more do you need? /s
Jemaclus•2m ago
"Better than JSON" is a pretty bold claim, and even though the article makes some great cases, the author is making some trade-offs that I wouldn't make, based on my 20+ year career and experience. The author makes a statement at the beginning: "I find it surprising that JSON is so omnipresent when there are far more efficient alternatives."

We might disagree on what "efficient" means. OP is focusing on computer efficiency, where as you'll see, I tend to optimize for human efficiency (and, let's be clear, JSON is efficient _enough_ for 99% of computer cases).

I think the "human readable" part is often an overlooked pro by hardcore protobuf fans. One of my fundamental philosophies of engineering historically has been "clarity over cleverness." Perhaps the corollary to this is "...and simplicity over complexity." And I think protobuf, generally speaking, falls in the cleverness part, and certainly into the complexity part (with regards to dependencies).

JSON, on the other hand, is ubiquitous, human readable (clear), and simple (little-to-no dependencies).

I've found in my career that there's tremendous value in not needing to execute code to see what a payload contains. I've seen a lot of engineers (including myself, once upon a time!) take shortcuts like using bitwise values and protobufs and things like that to make things faster or to be clever or whatever. And then I've seen those same engineers, or perhaps their successors, find great difficulty in navigating years-old protobufs, when a JSON payload is immediately clear and understandable to any human, technical or not, upon a glance.

I write MUDs for fun, and one of the things that older MUD codebases do is that they use bit flags to compress a lot of information into a tiny integer. To know what conditions a player has (hunger, thirst, cursed, etc), you do some bit manipulation and you wind up with something like 31 that represents the player being thirsty (1), hungry (2), cursed (4), with haste (8), and with shield (16). Which is great, if you're optimizing for integer compression, but it's really bad when you want a human to look at it. You have to do a bunch of math to sort of de-compress that integer into something meaningful for humans.

Similarly with protobuf, I find that it usually optimizes for the wrong thing. To be clear, one of my other fundamental philosophies about engineering is that performance is king and that you should try to make things fast, but there are certainly diminishing returns, especially in codebases where humans interact frequently with the data. Protobufs make things fast at a cost, and that cost is typically clarity and human readability. Versioning also creates more friction. I've seen teams spend an inordinate amount of effort trying to ensure that both the producer and consumer are using the same versions.

This is not to say that protobufs are useless. It's great for enforcing API contracts at the code level, and it provides those speed improvements OP mentions. There are certain high-throughput use-cases where this complexity and relative opaqueness is not only an acceptable trade off, but the right one to make. But I've found that it's not particularly common, and people reaching for protobufs are often optimizing for the wrong things. Again, clarity over cleverness and simplicity over complexity.

I know one of the arguments is "it's better for situations where you control both sides," but if you're in any kind of team with more than a couple of engineers, this stops being true. Even if your internal API is controlled by "us," that "us" can sometimes span 100+ engineers, and you might as well consider it a public API.

I'm not a protobuf hater, I just think that the vast majority of engineers would go through their careers without ever touching protobufs, never miss it, never need it, and never find themselves where eking out that extra performance is truly worth the hassle.

DeepSeek-v3.2: Pushing the frontier of open large language models [pdf]

https://huggingface.co/deepseek-ai/DeepSeek-V3.2/resolve/main/assets/paper.pdf
155•pretext•3h ago•41 comments

India orders smartphone makers to preload state-owned cyber safety app

https://www.reuters.com/sustainability/boards-policy-regulation/india-orders-mobile-phones-preloa...
123•jmsflknr•13h ago•64 comments

Ask HN: Who is hiring? (December 2025)

137•whoishiring•3h ago•162 comments

Ghostty compiled to WASM with xterm.js API compatibility

https://github.com/coder/ghostty-web
34•kylecarbs•1h ago•4 comments

Intel could return to Apple computers in 2027

https://www.theverge.com/news/832366/intel-apple-m-chip-low-end-processor
21•DamnInteresting•54m ago•18 comments

Why xor eax, eax?

https://xania.org/202512/01-xor-eax-eax
370•hasheddan•7h ago•143 comments

High-income job losses are cooling housing demand

https://jbrec.com/insights/job-growth-housing-demand-metro-analysis-2026/
152•gmays•1h ago•149 comments

Isn't WSL2 just a VM?

https://ssg.dev/isnt-wsl2-just-a-vm/
101•sedatk•6d ago•49 comments

Cartographers Have Been Hiding Covert Illustrations Inside of Switzerland's Maps

https://eyeondesign.aiga.org/for-decades-cartographers-have-been-hiding-covert-illustrations-insi...
183•mhb•5h ago•40 comments

Ask HN: Who wants to be hired? (December 2025)

49•whoishiring•3h ago•107 comments

Better Auth (YC X25) Is Hiring

https://www.ycombinator.com/companies/better-auth/jobs/eKk5nLt-developer-relation-engineer
1•bekacru•2h ago

Better Than JSON

https://aloisdeniel.com/blog/better-than-json
12•barremian•42m ago•11 comments

Response to Ruby Is Not a Serious Programming Language

https://robbyonrails.com/articles/2025/12/01/why-so-serious/
69•robbyrussell•1h ago•51 comments

Search tool that only returns content created before ChatGPT's public release

https://tegabrain.com/Slop-Evader
767•dmitrygr•15h ago•308 comments

ImAnim: Modern animation capabilities to ImGui applications

https://github.com/soufianekhiat/ImAnim
50•klaussilveira•3h ago•12 comments

Durin is a library for reading and writing the Dwarf debugging format

https://github.com/tmcgilchrist/durin
8•mooreds•1h ago•0 comments

A vector graphics workstation from the 70s

https://justanotherelectronicsblog.com/?p=1429
103•ibobev•6h ago•17 comments

Self-hosting a Matrix server for 5 years

https://yaky.dev/2025-11-30-self-hosting-matrix/
202•the-anarchist•8h ago•88 comments

Google unkills JPEG XL?

https://tonisagrista.com/blog/2025/google-unkills-jpegxl/
160•speckx•4h ago•141 comments

Historic Engineering Wonders: Photos That Reveal How They Pulled It Off

https://rarehistoricalphotos.com/engineering-methods-from-the-past/
93•dxs•6d ago•17 comments

I made a quieter air purifier

https://chillphysicsenjoyer.substack.com/p/i-made-a-quieter-air-purifier
98•crescit_eundo•6d ago•46 comments

Games using anti-cheats and their compatibility with GNU/Linux or Wine/Proton

https://areweanticheatyet.com/
222•doener•12h ago•309 comments

React and Remix Choose Different Futures

https://laconicwit.com/react-and-remix-choose-different-futures/
3•surprisetalk•43m ago•0 comments

Langjam Gamejam: Build a programming language then make a game with it

https://langjamgamejam.com/
102•birdculture•1d ago•46 comments

How we built the v0 iOS app

https://vercel.com/blog/how-we-built-the-v0-ios-app
11•MaxLeiter•6d ago•15 comments

Spleen Monospaced Bitmap Fonts

https://github.com/fcambus/spleen
17•keyle•5d ago•5 comments

WordPress plugin quirk resulted in UK Gov OBR Budget leak [pdf]

https://obr.uk/docs/dlm_uploads/01122025-Investigation-into-November-2025-EFO-publication-error.pdf
102•robtaylor•4h ago•92 comments

It’s been a very hard year

https://bell.bz/its-been-a-very-hard-year/
308•surprisetalk•14h ago•407 comments

The Penicillin Myth

https://www.asimov.press/p/penicillin-myth
100•surprisetalk•5h ago•50 comments

Trifold is a tool to quickly and cheaply host static websites using a CDN

https://www.jpt.sh/projects/trifold/
89•birdculture•1w ago•33 comments