18,966 karma · joined August 8, 2018
Currently working on: https://www.bryanpg.com/games/pragma_twice
Ruby:
config = SOML.load_file('config.soml', symbolize_names: true)
config[:timeout] # what are the units? uses SOML::Duration non-Ruby type
Even worse if you ever convert to/from JSON. My opinion is that config files should be as dumb and simple as possible. If you want humans to be able to read/write fancy stuff like "72h" for config, build a UI layer for the human to use in front of the config. Then they can click a little calendar icon to select the date. The backing config uses dumb iso 8601 string instead of a magical date type baked into the config language.Pet peeve of mine, but I would argue that it's better to always keep units baked into the key.
If you have:
timeout_s: 30
Then unit information will never be lost, because the unit is always marshalled as a part of the key name and you don't have to worry if the target language has a duration type or not.If you have:
timeout: 30s
Then unit information probably won't be lost, but could in the following scenarios:- Target language doesn't have duration types (looking at the list - Ruby?)
- If you ever need to convert to/from a data format without durations like JSON
So basically you have to use SOML across your entire stack and always use languages that have native duration types, and also you have to be careful never to convert SOML to/from JSON (which is highly likely if you ever have to interface with external APIs). Do any of those things and you'll likely run into a unit confusion scenario at some point.
But there are going to be lots of configs that won't have native type like size. Again, just include units in key:
max_size_bytes: 30000000
In conclusion, my opinion is to KISS by including units in the key name and by sticking to bool/number/string primitives, hence why I almost always use JSON for everything (though if I could be granted one wish, it would be for JSON spec to allow for dangling commas)The only problem I've discovered is that group texts sometimes don't work (I can't see others' replies or worst case I don't receive the group text at all). Not sure if anyone else has run into this, seems like it could be related to RCS and unlocked bootloader not playing nice.
Well, if other projects with a glut of devs are a sign, probably integrate AI into it somehow
git cherry-pick + git rebase -i (to swap commit order)?
?
I presume you are referring to https://www.ncbi.nlm.nih.gov/books/NBK554570/
There will come a day (and probably soon) when "training on the public internet" (Reddit, etc) will taint your model with metric tons of corporate contamination, political poison, and other adversarial content intentionally crafted to bias AIs for various reasons (corporate gain, geopolitical information warfare, etc). Basically the AI-equivalent of SEO.
- Vertical activity bar (https://github.com/zed-industries/zed/pull/58868#issuecommen... - rejected because it "doesn’t match our design vision for Zed")
This is my #1 annoyance: clicking microscopic icons at the very bottom of the screen to switch views.
- Don't crash my entire PC when there's a large (100+ MB) JSON file in the working directory
- Don't freeze when resuming from suspension (I suspect this is GPU-driver related on linux) forcing me to `killall zed-editor`
And it all seems arbitrary anyway. Why are trigonometric functions written in english ("tan" being short for "tangent") but other stuff uses greek letters and other stuff still uses esoteric/abstract symbols? Why is the integral symbol shaped the way it is, and why use super/sub symbols for the bounds versus `integral [0,Inf] ...`?
In my ignorance, I'm assuming math is the way that it is because that's the way it's been for centuries, and messing with it harms its ubiquity. Math notation is not the way that it is because it's particularly well thought out. It's centuries of legacy tech debt that can't be changed. Kind of like how English is a crappy language in a lot of ways, but we can't change it now because too many people use it and you'd never get enough momentum to switch.
`sum function(x) from x=0 to x=infinity`