Personally, I prefer duplicate keys to be eaten by the parser but I can see how it’d be beneficial to prevent them.
Personally, I prefer duplicate keys to be eaten by the parser but I can see how it’d be beneficial to prevent them.
Yeah, I remember when I was trying to parse XML into some lua tables and it forever stumped me how to represent something like
<thing important_param=10 other_param="abracadabra"> stuff </thing>
You just have to have different ways to turn different tags into stuff in your program and that’s a huge amount of overhead to think about when all I want is a hash map and maybe an array.
It’s inconsistent and annoying. Expressive, yes. Gets it’s job done, yes. Absolute nightmare of a spec, YES.
The fact that JSON is a subset of YAML should tell you everything about how bloated the spec is. And of course there’s the “no” funny things.
Personally, my favourite way to write configs was using lua (because it was already part of the project so why not), but JSON does fine.
Anything an API returns should just look like 1720533944.963659
.
There’s no reason to store dates as anything other than UTC. User-side, sure, timezones are useful. Server doesn’t have to know.
Oh, I know the experience pretty well. The fun fun fun of having something stuck at 98% for a week or more :D
I was thinking, if the creator themselves would seed their stuff it could work - although I admit it’d have to have some kind of seed schedule and maybe some heuristic to see which videos were still available or not. There’d be problems with bandwidth, but I think it would at least allow a decentralised video network to exist, even if it would feel a bit more like watching anime in year 2010.
And yeah, fair point. I don’t really do live streams so I didn’t think about them. Honestly don’t know what a solution for that even could be, in terms of “everyone hosts a little bit to spread the load and price”.
Don’t really think it’d be that big of a mess for premiers, but then again I don’t see a big issue in waiting a day to get good content. Y’all are spoiled with cdns and social media /s :D! In my experience torrents propagate pretty quickly so it could still work. Think the bigger issue would be the fact that people have preference for different resolutions, so you’d end up with massive torrent downloads that have 4k, 2k, 1080p, 720p, etc. Or multiple torrent files for different resolution. The worst outcome would of course be “creator just dumps 8k 60fps content on the network and tells you good luck”.
Either way, I won’t pretend like torrent net could match the service of youtube right now - but I do think it could actually make a video network actually work, without prohibitive costs for the hosters and subscriptions for the basic users. It’d still be nice to support creators and the trackers but those aren’t as big of an ask as “host hundreds of 4k videos per creator forever”.
[edit] as a last minute thought - I think I know another reason why torrents may not work so well. You’d have to have an app or a browser extension to use them, which limits the accessibility compared to “open url and watch”.
I feel like the true decentralised approach to video that may work… Are torrents. Don’t know if PeerTube works that way, but if you’re allowing people to eat your bandwidth with direct streaming, you’re gonna run into problems sooner or later.
There are usually plenty of choices for ISPs here, actually. But switching between them isn’t likely to give me IPv6 since either they share a magistral or the hardware is just plain old. That, and IPv6 is just not a thing anyone markets.
…and with the current fuckery going on, I doubt many of them have budget for big upgrades. Or maybe even access to hardware to buy.
Yeah, here in Russia the ISPs and IT infrastructure guys seem to be treating IPv6 like it has cooties. I can’t find an article (and it’d be in russian anyway) but as far back as 2022, if you get IPv6 you can expect a variety of issues with it, ranging from “you need to reboot your router every once in a while” to “you technically have v6 but good luck actually browsing v6 internet”.
And of course, why would they give you a stable IP when they can charge for it :T. At least it’s only a third the price of a stable IPv4.
My current ISP technically provides v6 according to their site - but my connection doesn’t have it, and since there’s nothing about it in the years-old contract, I’d need to redo that if I want to complain.
Imagine actually having ipv6 available through your ISP.
…and ever if my ISP actually provided one, getting a static one costs money so there’s no difference in the end.
Yeah, I just checked, getting a static IPv6 here in Russia from my ISP costs ~.4 eur per month. IPv4 is ~1 eur, so you get a discount if you go for v6! Oh and despite my ISP saying they support v6, connection I got doesn’t have it at all. Probably whatever hardware they got in my house doesn’t know what it is.
From what I understand about the providers, they really don’t like it when you’re generating outbound traffic. Sure it’s advertised to be symmetrical, but the actual hardware they place here can get bogged down if you start hosting a popular site (or seeding too much).
And of course, if they can charge you for a static IP then defaulting to dynamic is imperative, isn’t it? Pretty sure they’d try that with IPv6 too just to keep the income stream.
Regardless, the actual issue with IPv6 around here seems to be that the providers either don’t know how to or don’t care to implement it properly. Sure I can tick on “IPv6” in my router, but that doesn’t mean I have an unbroken chain or routing hardware that supports it connecting me to the great internet.
I mean, at least over here, a white IP has been a paid service for as long as I can remember. Absolute majority of people don’t need a static IP, which is why we haven’t had internet “breaking” because of IPv4 running out.
“Everyone is using IPv6”
It’s barely supported. Most providers here “offer IPv6”, but each has a different gotcha to actually using it, if it works at all and they didn’t just route you through hardware that doesn’t know what it is.
Well, there’s a few things I personally think are a must for a config format:
Oh god, parsing complexity. I actually tried writing a YAML parser in my free time before and boy was that not worth the headache. So many little things that complicate parsing and are ignored by majority of users!
I really like python, but I can agree that it’s no-delimiters style can be… Confusing at times. I definitely had to hunt down bugs that were introduced by wrong indentation. That and the way it handles global/local variables, mostly.
I do appreciate not having to enclose every key in “”, and being able to copy values - but if we want that kind of logic making our configs, why not just switch to writing configurations in Lua? It certainly has less footguns than YAML and it has the niceties like “I can just write {key = "value"}
instead of {"key": "value"}
”.
Most comment-aware JSON parsers I’ve seen just use standard // to delineate comment lines.
Python has stricter rules about what can be cludged together and how.
Yaml is… Kind of nebulous, which is not a good thing for a data serialization format.
Well, if you’re writing something the user will be looking at and clicking on, you will probably want to have some sort of state management that is global.
Or if you’re writing something that seems really simple and it’s own thing at first but then SURPRISE it is part of the system and a bunch of other programmers have incorporated it into their stuff and the business analyst is inquiring if you could make it configurable and also add a bunch of functionality.
I also had to work with a system where configurations for user space were done as libraries setting global constants. And then we changed it so everything had to be hastily redone so that suddenly every client didn’t have the same config.
In my experience, the managers get confused when issues/PRs are closed without any comment.
Useless comments beat having them pop into your slack to ask “hey, did you review this?” with a link to an approved PR.
Man, the variable scoping thing is insidious. It will never not be weird to me that
if
s and loops don’t actually create a new scope.And then you try to do a closure and it tells you you didn’t import anything yet.