4 ms·
A better question: Why is computing like this? I spend vast amounts of time hacking around in Linux with whatever I aim to do. It's almost never easy. There
by andrewstuart 4y ago
A better question:
Why is computing like this?
I spend vast amounts of time hacking around in Linux with whatever I aim to do. It's almost never easy. There's always this problem then that problem - you have to shave yaks until you're so deep you forgot what you were working on in the first place.
It ain't just JavaScript.
1: how to make a software thing work:
2: follow instructions for (software thing)
3: hmm, wrong instructions, out of date
4: find right instructions
5: do step one of instructions
6: hmmm.... an error find some new software thing to solve this problem, then for this new software thing, goto 2
Programming is problem solving as much as anything else.
- Arnavion 4y agoYour step 3 is because you're looking at the wrong Google results. Read the manpages that shipped with the distro and the ArchLinux wiki for everything else.
- ElevenLathe 4y agoArchLinux wiki is great but manpages really only answer "what does this command/syscall/etc. do and what are all the options I have when calling it?". People Google stuff and copypasta from StackOverflow because these answers are to questions they actually have like "how do I integrate $x with $y?". The answers may not be good but they are at least to questions that real people have.
- salawat 4y agoProgramming is discrete math. You must line up all the functions correctly, or else it won't work. Alas, the chain of functions you're managing nowadays (3 to 4 layers of primitive on top of primitive on top of primitive, ) leads to a combinatoric explosion of potential layers to encounter a fault.
- mdaniel 4y ago> Why is computing like this? IMHO because the happy path is easy, but guarding against error conditions, and then either taking action or advising someone of that outcome is horrifically hard. It's hard not only because it requires the experience to know that not every HTTP request is 200, not every method call is a-ok, not every disk has plenty of space, nor permissions to write to whatever, and even with a huge checklist of the way things go toes up, a disciplined library author can have 250 different illustrative return codes that the caller can then throw in the trash, iterate all the way up the call chain and everything has to align perfectly for the actionable error to reach the end user That especially plays out, in my experience, in programming languages that place the "please check the return code" upon the programmer, as opposed to ones where errors are more "in your face," but the joy of `try { doSomething(); } catch (ex) { /* lolol */ }` makes it all too easy to ship something because It Works On My Machine Being on the pointy end of your checklist makes me have a great deal more empathy for users of my software, but I am merely one person who thinks swallowing errors is a crime against humanity
- Existenceblinks 4y agoOne thing I'm quite confident is name based of thing. Naming is very coupled with versioning. A lot of things break if name changes. The world of hash or id based of thing is going to eliminate huge amount of problems (probably bring some of something else problems). Imagine API consumers have the initial ids of things and remembers (implements) meaning of them, and then you can re-order parameters, change functions name, module names, fields name, even something moves could also be auto migrated on consumer side (or call site).