Twenty years of schoolin'
And they put you on the day shift.
Bob Dylan - "Subterranean Homesick Blues"
Software Rules - The Manual May Be Wrong
About 45 years ago we were taking a Programming Languages course at the University of Texas. It was a graduate-level survey course covering languages such as FORTRAN, LISP, and Pascal. When we got our first FORTRAN assignment, one of our classmates asked the professor, "Is this a one-pass or a zero-pass DO-loop compiler?"
Another classmate immediately responded, "Just read the manual." (RTFM was not spoken among the innocents of 1973 - at least not in class.)
The professor said, "No. Don't read the manual; test the compiler with code. There are any number of ways that you can get the wrong answer from a manual. The manual may be wrong. Or it may not be the manual for the version of the compiler you are using. If you want to know what the compiler does, ask the compiler."
That lesson has stood us in good stead for almost half a century, and we commend it to you.
Write it for yourself
We just added a feature to the composer-editor function ("edit_spiel/n") of the blox
database editor. Completely off-the-cuff, with very little consideration of appropriateness for anyone else who might want to use this system in the future.
It's the "+[placeholder]" button on the "edit_spiel" page. All it does is to add a placeholder rhyme at the end of the (ordered) list of rhymes for the spiel. (See commit 73880b4
We're working on the uWSGI post to go up in the next day or two. We originally wrote the uWSGI post back in March and April. For the current version we are copying individual rhyme content (i.e., verses) from those old posts and editing as we go along. After only a couple of iterations of hitting the "Add a New rhyme" button, then putting some placeholder text into the verse field, then confirming with the "Add Rhyme" button on the "new_rhyme" page, we decided to add the "+[placeholder]" button to the "edit_spiel" page. All it does is to put and empty "paragraph" rhyme at the end of the spiel.rhymes list. But it does it with a single button click. We think we are really going to like this feature.
Looking over the explanation above, it is apparent that we need to develop a clean lexicon for this blox
project - and explain it somewhere. For the time being, we're going to let that slide.
In our original business, we wrote a compiler (with our partner) for the HP3000 called PROTOS. The language had a simplified Pascal-like syntax with semantics customized to produce human-readable and -maintainable COBOL code to work with HP's Image database and View forms handler. After folks started buying it, we followed a two-pronged approach to guide and prioritize further development: 1) we listened to our customers; and 2) as users ourselves, we attacked whatever we considered to be the current biggest pain in the ass.
It was a very successful approach. Our own use of the product for new application development continually exposed the product's shortcomings. As typical (or near-typical) users, our difficulties and frustrations mimicked (or presaged) the needs of our users.
We happened onto a market technique much stronger than "eat your own dog food". When you are (or approximate) a typical user, "write it for yourself".
And just so you understand the parenthetical qualifications, we are aware that developers of tools are, of necessity, not entirely "typical users" of whatever they develop.
At long last, wireless ...
Apple finally offers a full-size wireless keyboard. We bought ours today, unboxed it at our desk, unplugged our wired full-size keyboard, turned on the new wireless, and it popped up immediately. Cmd-Tab shows us that it works just fine. Happy guy.
Now, though, our wireless Evoluent vertical mouse doesn't work. Jiggle it. Turn it off and back on again a couple of times. Nothing. Seems a bit too coincidental, but we replaced the battery. Still no joy.
We're still operational because we use two vertical mice: wireless right and wired left. But we are not happy. What is it about ginning up a bluetooth wireless keyboard that disables my wireless mouse? The mouse isn't even bluetooth. What's the connection?
About an hour later, it hits us. The mouse is not bluetooth. It connects to the computer via a USB fob - a fob that is plugged into our now unplugged wired keyboard. Move the fob to a USB hub, and all is right with the world.
That is how troubleshooting works. All too often we are distracted by coincidence or correlation and immediately assume causation - even when we cannot come up a reasonable explanation.