> In her “diagram of development,” Lovelace gives the fourth operation as v5 / v4. But the correct ordering here is v4 / v5. This may well have been a typesetting error and not an error in the program that Lovelace devised. All the same, this must be the oldest bug in computing. I marveled that, for ten minutes or so, unknowingly, I had wrestled with this first ever bug.
The real mark of a non-trivial program is that it doesn't work on the first try.
It's incredible how Babbage, frustrated that the mass production precision machining technology necessary to make his simple engine work didn't exist yet, decides that the best way forward is to design a new system an order of magnitude more complex and then go to Italy to find more advanced manufacturing somehow.
He'd want to do something, and hit a roadblock, so he'd design his own tool (He wrote his own font, once, because he didn't like the way the built-in ones worked at teeny point sizes).
Best damn engineer I ever knew, but I had to keep an eye out for rabbitholing.
Obviously yak shaving is a hazard in that it can result in the original project getting abandoned or deadlines being missed, but often the tools you develop along the way are more (economically) valuable than the original project. They're often more widely applicable and narrower in scope, so they're more likely to get done and more likely to find an audience.
An example that comes to my mind is the Rust library mio. The Metal database for which it was the I/O component never materialized. But mio is a core component in the Rust ecosystem.
Similarly, many applications could benefit from a font that's legible at tiny sizes, not just the one that it was developed for. (Though obviously in most work cultures, this would be considered inappropriate, and for good reasons. My remarks apply mostly to greenfield research/personal projects where deadlines are loose.)
We had a developer write his own System.out.println in Java. But it wasn't because he didn't like the built-in System.out.println, it was because he didn't know it existed. He had a PhD and was supposedly a senior developer. He didn't last very long.
He must have had a very interesting educational path to write functional Java code without knowing about println. I marvel at that. I almost admire it. Because I think pretty much every tutorial in the world for every language starts with printing, and every project has it someplace. He must have learned via some esoteric means.
Same here, and I have worked alongside engineers from both ends of that spectrum. The only thing the degree'd individuals seemed to bring to the table is that they typically did not know what they did not know, thus were much more subject to Dunning-Kreuger.
I once worked with a dev that implemented his own forEach in JavaScript. And literally used an ECMAScript version 6 feature to do so! (native forEach in JS showed up in ECMAScript 5) Meanwhile, that project already had jQuery and Underscore... which also had their own versions of forEach! It was a bizarre choice.
To be fair that was quite a late addition to the language all things considered. It could be he learned Java before it existed, or had most of his experience in 1.4 (which survived quite long in some environments because 1.5 was such a huge overhaul). But still, a good dev will keep up to date with language features.
My thinking exactly. He could've created a market for adding machines and, building on commercial success, use revenues to build more ambitious machines.
And he may well have done, if Ada Lovelace hadn't got cancer: she had managed to convince him to let her run his business, leaving him to deal only with R&D.
I didn't just create my own font, I created a font editor too because nothing else was just right (context: MSDOS 5/VGA era). For clarity, I was not that employee :)
Up until quite recently I used to render a fixed-width TrueType to bitmaps so I could fix some rendering and typographical foibles, in order to use it with rxvt.
I got the idea from another cursor I'd seen back then, and the basic tail was based on it. I think I did the animated ones, the blue dot was my own addition, and the fox head is entirely my own creation.
It doesn't actually flicker in and out like that, it seems to be some quirk from recording it.
+1 for Babbage/Lovelace history, however IMO, although the two facts are separately true:
(1) he was let down by precision machining not existing (Tim Robinson https://www.meccano.us/difference_engines/rde_1/ says that "I have no doubt that if the Meccano of the 1920's had existed 100 years earlier, Babbage would have been entirely successful in his quest"), and
(2) he designed a more complex system, tried Italy, etc,
I don't think it's fair to say that he decided that (2) was the best way forward from (1); it's rather that both were consequences of his ideas outpacing what was realistically feasible: he was a software guy thrust into hardware, coming with up ideas that seemed straightforward and discovering that manufacturing was impossible. Apart from his lack of business/project-planning sense (scope it down; don't aim for 10 digits etc), I think other complicating factors that went into the tragedy of Babbage were:
(1) He kept coming up with new/better ideas and pursued them (basically rabbitholing as mentioned),
(2) He had won a bunch of awards at a young age simply for proposing the Difference Engine (everyone could see it was a good idea and also seem to have expected it to be straightforward to build: a fait accompli) — so in the intervening decades he must have felt like he couldn't give up,
(3) He got entangled with the government. IMO the tragedy here is that he was just middle-class enough to have a romantic idea of government: while the nobles distrusted government/politics as they sort of looked down on it, and the lower classes distrusted government as it had never done anything much for them, he was of just the right class (his father came from humble origins and had made money in banking) to have patriotic notions of government and all that — he wanted to offer his invention to "the nation" (government), and conversely thought the government "ought to" reward him for it, rather than understanding the practical problems of government officials in funding his project. (The government offered to give his invention back to him, but he refused.)
(4) Possibly as a result of these awards, he seems to have been attached to the idea of being a "smart" person (many examples, e.g. the anecdote quoted in one of the appendices in Sydney Padua's wonderful book, where he refused to judge an award along with Faraday — he thought he "deserved" to be the sole judge) — this also probably got in the way of doing practical things rather than pie-in-the-sky "genius-type" ideas.
I think the government entanglement is probably a big part of the story (he asked them basically "I haven't completed the Difference Engine but I have a much better Analytical Engine that I could implement with more money, what should I do?" and they sat indecisively for twenty years!), and it's interesting to read his accounts (in his memoirs) vs others', e.g. Lord Playfair's account from the same appendix:
> "He was in chronic war with the Government because it refused to furnish supplies for his new machine, the ground of refusal being that he never completed the first. […] Babbage always considered himself a badly treated man, and this feeling at last produced an egotism which restricted the numbers of his friends. […] Babbage, who was delighted with the suggestion, but made it a condition that he alone should be appointed, as a reparation for all the neglect of the Government towards his inventions. Even the association of such a distinguished man as Faraday would take away from the recognition which was due to him."
Anyway Padua's book (The Thrilling Adventures of Lovelace and Babbage) seems very well-researched (I admit I haven't read much of it but read all the appendices in detail; would strongly recommend anyway).
Not -necessarily- true. I don’t typically expect my c to compile on the first try at 100 plus lines. Some languages do seem to be either so forgiving that they”work” without complaint or so structured that they guide you away from errors but are less expressive feeling.
The real mark of a non-trivial program is that it doesn't work on the first try.
It's incredible how Babbage, frustrated that the mass production precision machining technology necessary to make his simple engine work didn't exist yet, decides that the best way forward is to design a new system an order of magnitude more complex and then go to Italy to find more advanced manufacturing somehow.