this post was submitted on 30 Jun 2024
571 points (98.1% liked)

Programmer Humor

25395 readers
1667 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 

Meme transcription:

Panel 1: Bilbo Baggins ponders, “After all… why should I care about the difference between int and String?

Panel 2: Bilbo Baggins is revealed to be an API developer. He continues, “JSON is always String, anyways…”

top 50 comments
sorted by: hot top controversial new old
[–] RustyNova@lemmy.world 110 points 1 year ago* (last edited 1 year ago) (9 children)

To whoever does that, I hope that there is a special place in hell where they force you to do type safe API bindings for a JSON API, and every time you use the wrong type for a value, they cave your skull in.

Sincerely, a frustrated Rust dev

[–] Rednax@lemmy.world 9 points 1 year ago (1 children)

The worst thing is: you can't even put an int in a json file. Only doubles. For most people that is fine, since a double can function as a 32 bit int. But not when you are using 64 bit identifiers or timestamps.

[–] firelizzard@programming.dev 35 points 1 year ago (15 children)

That’s an artifact of JavaScript, not JSON. The JSON spec states that numbers are a sequence of digits with up to one decimal point. Implementations are not obligated to decode numbers as floating point. Go will happily decode into a 64-bit int, or into an arbitrary precision number.

load more comments (15 replies)
[–] Carighan@lemmy.world 4 points 1 year ago (1 children)

Relax, it's just JSON. If you wanted to not be stringly-typed, you'd have not used JSON.

(though to be fair, I hate it when people do bullshit types, but they got a point in that you ought to not use JSON in the first place if it matters)

load more comments (1 replies)
load more comments (6 replies)
[–] apprehentice@lemmy.enchanted.social 48 points 1 year ago (1 children)
[–] kionite231@lemmy.ca 50 points 1 year ago (2 children)
[–] Skua@kbin.earth 24 points 1 year ago (3 children)

strings are in base two, got it

[–] Rez@sh.itjust.works 38 points 1 year ago (2 children)

Wouldn't the answer be "10" in that case?

[–] Skua@kbin.earth 41 points 1 year ago

yes, if I could do maths

[–] joyjoy@lemm.ee 22 points 1 year ago (1 children)
[–] Eheran@lemmy.world 5 points 1 year ago (1 children)
[–] CanadaPlus@lemmy.sdf.org 16 points 1 year ago (6 children)

1 11 111 1111 11111 111111

That's base 1. By convention, because it doesn't really fit the pattern of positional number systems as far as I can tell, but it gets called that.

[–] Eheran@lemmy.world 6 points 1 year ago (1 children)

Oh, I get it, was reading as base 2 and confused by that. Essentially Roman numerals without all the fancy shortcuts.

load more comments (1 replies)
load more comments (5 replies)
[–] SpaceNoodle@lemmy.world 9 points 1 year ago

That's unary.

load more comments (1 replies)
[–] wesker@lemmy.sdf.org 7 points 1 year ago
[–] andyburke@fedia.io 45 points 1 year ago (4 children)

These JSON memes got me feeing like some junior dev out there is upset because they haven't read and understood the docs.

[–] wesker@lemmy.sdf.org 46 points 1 year ago
[–] RustyNova@lemmy.world 26 points 1 year ago (5 children)
load more comments (5 replies)
[–] kbin_space_program@kbin.run 14 points 1 year ago

Timing is about right for it to be a batch of newly minted CS grads getting into their first corporate jobs.

[–] Valmond@lemmy.world 6 points 1 year ago

Comments? Comments? Who needs comments?

[–] maxinstuff@lemmy.world 20 points 1 year ago (1 children)

I'll have you know all of my code is stringly typed.

load more comments (1 replies)
[–] ooterness@lemmy.world 18 points 1 year ago (7 children)
[–] 0x0@programming.dev 11 points 1 year ago (13 children)

If there are no humans in the loop, sure, like for data transfer. But for, e.g., configuration files, i'd prefer a text-based solution instead of a binary one, JSON is a nice fit.

[–] MonkderDritte@feddit.de 10 points 1 year ago* (last edited 1 year ago) (1 children)

What, no! Use TOML or something for config files.

[–] 0x0@programming.dev 6 points 1 year ago

TOML

Interesting... me likes it.

load more comments (12 replies)
[–] bleistift2@sopuli.xyz 4 points 1 year ago

Hell, no. If I wanted to save bytes, I’d use a binary format, or just fucking zip the JSON. Looking at a request-response pair and quickly understanding the transferred data is invaluable.

load more comments (5 replies)
[–] chicken@lemmy.dbzer0.com 8 points 1 year ago (1 children)

Explicit types are just laziness, you should be catching exceptions anyways.

[–] fapforce5@lemmy.world 8 points 1 year ago

I do. I return an error.

[–] veganpizza69@lemmy.world 7 points 1 year ago (2 children)

It's the API's job to validate it either way. As it does that job, it may as well parse the string as an integer.

[–] bleistift2@sopuli.xyz 6 points 1 year ago (1 children)

I refuse to validate data that comes from the backend I specifically develop against.

[–] TrickDacy@lemmy.world 7 points 1 year ago (1 children)

A string that represents types...

[–] RustyNova@lemmy.world 8 points 1 year ago

If a item can have different type, those label fields are actually quite useful. So I don't see the problem

[–] brian@programming.dev 6 points 1 year ago (2 children)

json doesn't have ints, it has Numbers, which are ieee754 floats. if you want to precisely store the full range of a 64 bit int (anything larger than 2^53 -1) then string is indeed the correct type

load more comments (2 replies)
[–] NigelFrobisher@aussie.zone 5 points 1 year ago

This is String - you’ve seen it before haven’t you, Gollum?

load more comments
view more: next ›