[…] whatever name I chose, what I mean are users who have the ability to achieve their goals regardless of the primary purpose of an application or device. Such users will find a way to their aspiration without an app or utility programmed specifically for it.
An example the author gives:
You can have two Twitter accounts and log in to one in Firefox, and the other in Chrome. This is how I do it and it doesn’t matter why I prefer to manage it this way. Maybe I don’t know that an app for managing multiple accounts exists, maybe I knew but didn’t like it, or maybe I’m too lazy to install it. Whatever, I found a way. And you will do as well.
I used to be a bit sneer-y when people (ab)used spreadsheets to solve problems for which I would “just” write a little Python script to do. But I look at things the other way round now: people finding ostensibly technically inferior ways to do what they need, rather than giving up or asking someone else to do it for them, is a success for both them and the tools they managed to bend to their will. And I think the onus is on software developers, not users, to close the gap between powerful tools for structured programming and tools which ordinary humans can use without training.
|badZeppelin:||I checked out and ran wjt's eyes branch and now all the toolkit applications use dvorak layout, I switched back to master and cleaned and install but still the same :) how do I fix that?|
In PHP, the scope resolution operator is also called Paamayim Nekudotayim, which means “twice colon” or “double dot twice” in Hebrew. Although it has been confusing to many developers who don’t speak Hebrew, it is still being used in PHP 5, as in this sample error message:
$ php -r '::' Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
Of course, the real issue here is that their implementation language does not support (un-Romanized) Hebrew in identifiers.
Today, a Perl programmer needs just four letters to invoke decades of research into filesystems and physical media: “open.” A finely-tuned mergesort is available with the word “sort,” and even more finely-tuned hashing algorithms require just a pair of brackets. Until machine learning is as accessible and effortless as typing the word “learn,” it will never become widespread.
…says Bret Victor in Magic Ink, which—to grossly oversimplify a hundred-page paper—asserts that most computer software is information software as opposed to manipulation software, and hence should be approached from the perspective of presentation, not interaction. This paragraph appears towards the end of a section titled Engineering inference from history, where he discusses how his critically acclaimed train timetable widget infers the user’s transport schedule from her past usage of the widget, and hence guesses what timetable to show her when she summons the widget at a particular time of day. He backs up his machine learning algorithm with statistics on number of incorrect guesses for a variety of sample users, showing how infrequently it presents the wrong timetable to these hypothetical users. All very nifty.
- Be a beautiful thermostat which is a pleasure to use;
- Learn what temperature you would like your house at various times of day, based on you tinkering with the thermostat.
(I won’t go into the assumption that tinkering with your thermostat is a worthwhile pastime.)
Arment complains that Nest doesn’t have the context to be as smart as it tries to be. For instance, suppose it’s learnt to heat your house to 21 °C starting at 5pm. But you decide this is too warm, and remember to turn it down to 19 °C at 6pm for a few days in a row. What should it do? Based on the very limited data available, it could either decide to turn on at 19 °C at 5pm instead; or it could learn to turn on at 21 °C and then turn down to 19 °C about an hour later—which is, in practice, what it does. Either decision would be reasonable, but guessing wrong is very frustrating.
Victor’s implication is that, given the choice between presenting the user with generic, uninteresting information (plus a search box) and information which is probably exactly what the user wants (plus a search box), guessing wrong in the latter case is no worse than not even trying. Taking these examples side-by-side, perhaps the cost of incorrect inference could be used to partition software into Victor’s two categories (“information” and “manipulation”).
For another example of inference gone wrong, consider the following rules the (generally excellent) iPhone keyboard follows:
- If the user enters an unknown word a few times and doesn’t correct it (or explicitly chooses not to autocorrect it), learn it. (For instance, I believe that “typoing” is a word.)
- Never autocorrect a word beginning with a capital letter: it’s probably a name. (For instance, I might have a friend named “Andrzej”.)
- Capitalize the first letter of a sentence.
- Having learnt a word, autocorrect similar unknown words to it. (For instance, correct “andrzej” to “Andrzej”.)
All well and good, but I keep typing “Thr” at the beginning of sentences. It doesn’t get autocorrected, it gets learnt, and now “thr” in lowercase corrects to “Thr”, not “the”. It’s impossible to recover from this situation without clearing the dictionary and starting afresh.
(While I was writing this post, I accidentally pressed Ctrl-Right and moved away from my editor to a different, empty virtual desktop. But pressing Ctrl-Left returned me not to the workspace I was on before, but to the workspace which was previously to its left. It seems OS X reordered my workspaces based on my usage, yielding frustration along with a worse layout on the basis of its wrong interpretation of my very limited input.)
Obviously you have all already seen this, but…
failbowl:~(master!?) $ jsc > Array(16) ,,,,,,,,,,,,,,,
I have no words to describe js. is js really our glorious future after C?
I am reminded that “we only use a strict subset of C++” is like saying “I only smoke meth socially”
Just one of a whole bunch of fascinating articles in Evan Martin’s Chromium Notes series I ended up reading after looking into Glick as a possible remedy for the long, slow process of trying to publish a binary tarball of Bustle which works on more than one Linux distribution. As a fan of messing with people’s software by embedding RTL markers and the like, I particularly enjoyed the footnote:
In this image, I constructed a page with a specially-crafted title, which Chrome naively formats as “$PAGE_TITLE - Google Chrome” and then hands it on to the OS. The image shows what happens when I alt-tab.
if software doesn’t build, then clearly it’s not being run. And if it’s not being run, then it’s not being tested. And if it’s not tested, then it will be crap.
Wiser words have rarely been written.