181 karma · joined September 22, 2015
The online purchase was only $75 for high-end frames and coatings, plus $27 for three pairs of prescription "computer monitor" glasses (one for the office, one for the home office, one for the other home office!). And by having more pairs, I can bring a pair on trips, just in case the main ones get broken!
(Personally, I've also never had any useful help in picking out frames. I'm not very fashion conscious, and every time the help doesn't seem to want to actually help be find frames that would look good on my face)
AFAICT, the headline is wrong. He's been asked multiple times (the Debian team was nice enough to have clear links about emails) to shape up, and he's not being teachable.
I love the idea of a language that has the absolute fewest number of decisions between "I need a little program" and being able to share the program with a friend. The current trend where there's a seemingly bazillion steps before you can write a trivial utility is unfortunate.
However, the microcomputer BASICs had big usability problems. Us modern programmers are so used to block oriented languages that we assume every language just had them. For example, in C you can replace any statement with a list of statements enclosed in { }. In Python where blocks are indented statements, or Pascal where you can make a block of statements with a BEGIN/END.
But many microcomputer BASICs don't have that at all. The IFs often don't have the concept of an ELSE, and often the only thing you can do from an IF is a GOTO.
The end result is a mess of jumps where the programmer is "emulating" real blocks with GOTOs. I've had the recent fun of transcribing programs from a bunch of different early BASIC languages. The complaint that BASIC leads to spaghetti code is real. There are bazillions of GOTOs, and it's a real drain on your mental processing to keep them all straight.
Mind-blowing BASIC example from the 1970's:
100 A$="ABCDEF"
110 A$ = REP ("123", 4, 0)
120 PRINT A$
The result is ABC123DEF -- at position 4 (strings start at 1), replace 0 characters with "123". So the REP function looks at the statement it's part of, finds the variable that is being assigned to, and uses that as the starting string (!). It's kind of like a function, only with a weird implied variable that only works in an assignment.You can't just PRINT the result directly, because then how would REP know what the string to change is?
Nowadays "weird" syntax has some solid foundational reason why it's useful or important. This not-really-a-function, though, simply has no justification whatsoever.
(This example is from the BASIC embedded in the Tektronix 4050 terminal).
There are enough variants of BASIC that there's a really nifty handbook with the differences at https://archive.org/details/Basic_Handbook_2nd_Edition_1981_...
Or heck, let me just tell the charity my email address, and then tell the IRS that all the donations for that email should be credited to me. People who want more privacy can "just" sign up for bespoke email addresses.
What the article does do is present a survey of what the known data shows, and compares it to other risks that are asked about (e.g., scuba diving),and demonstrating that on it's face, gun ownership is higher risk.
A VAX 11/780 (size of a refrigerator) had more CPU power, but access was via RS232 link to a VT100 terminal. These could be pretty slow: it wasn't unusual to type a command line and wait up to 10 seconds (or a minute, in really bad times) to get a response. And a graph could easily take a minute to fully display on a VT240 graphics terminal.
A PC on the other hand had "user interface MIPs" and could display a graph instantly. What the PC couldn't do is run our very large, 32-bit required simulation code.
(As far as how easy it was to add a hard drive: at the time, to add a new disk to a sun station, you had to recompile the kernel)
Can you come up with an example of an API which you would consider to be effectively broken and yet is not actually broken? Presumably, it would be an API that's easier to misuse than strncpy.
You might argue that a modern computer is more like programming a tightly-bound, nonuniform multi-processor system. And I'd agree. But C doesn't much to help program such a thing.
Its easily the best car I've owned because it's reliable, cheap to operate, dead quiet, and has a nice amount of get-up-and-go.
So no, the current crop of EVs are not undesirable. They may not meet everyone's needs (e.g., in rural Idaho where the nearest town is 40 miles away). But if they do meet your needs, the current set is great.
And there's a snarky comment on page 163 about companies that have to fix roads after ripping them up ("breaking"): if they do condescend to cart anything away it is generally the metal, which they think will come in nicely for the repairs of the trench during their liability for such repairs.
TL/DR: your town engineer just needs to specify the right stuff in the contract, and the road paving companies will just have to adapt.
If you think about it, the same thing holds true for any large, bespoke contract. What you get at the end depends in part on the supervision you put in.