Quik Thinking

 

High-level goals for interactive software

1. Typical usage should be easy and efficient.
2. All expected usage should work correctly.
3. Unexpected usage should result in safe behaviour.

Clearly it isn't just unexpected usage that should result in safe behaviour and we would certainly expect that typical usage should be correct as well. But that hierarchy makes it easy to see the cascading importance of software properties in relation to the degree to which user behaviour is expected to happen. If we plot expected human interaction on a distribution curve then we can overlay the probability axis with one that indicates what level of behaviour the software should respond with. That probably made sense to very few so here's a clearer explanation.

Under no circumstances should software ever do something unsafe. Losing data or allowing it to be accessed by unauthorized parties are typical examples of failure at this level. Although I posit this as a minimum requirement for software, in practise both of these things occasionally happen because it is generally intractable to enumerate all possible things a user might do for any piece of software sufficiently powerful to be worth discussing. But there are tools like fuzzers that can help automate the task of searching for such problems.

For every action that a user might reasonably be expected to perform, software should respond in a manner that the user could reasonably expect. Put like that, it seems only fair! That level of behaviour is usually verified by manual feature and regression testing based on feature specifications. Because this level of usage is not typical, it is important to provide contextual user-assistance for it. Of course, users tend to assume that performance will scale linearly with the amount of data they provide. It is therefore important to keep these expectations realistic by detecting input data beyond the range of typically expected workloads and warn the user that they will produce uncharacteristically low performance.

Typical usage is what software is designed for and therefore using it in these ways should be discoverable (so that documentation is unnecessary), simple (so frequent usage does not frustrate) and efficient (even at the cost of code complexity, so that users do not waste their time).

It is illuminating to think about software evolution in terms of these three levels. Initial releases of software tend to have tiny sets of behaviour considered typical and large set of behaviour considered unexpected but as software matures, more behaviour moves away from being considered unexpected and toward being considered typical. This tends to increase the complexity of code unless it is refactored to account for the changing levels of expectation assigned to different user behaviour.

Anybody care to disagree?

Comments [10]

Animals on hands

                                     
Click here to download:
hands.zip (651 KB)

Comments [1]

Web-browser Javascript performance round-up

There've been a spate of new browser releases recently, all of which claim to sport new Javascript engines designed from the ground up with performance in mind, so I decided to put them through their paces again. I'm happy to note that standards compliance has been a major focus, with only the Gecko-based browsers scoring less than perfect (72 for Camino & 93 for Firefox).

On the performance front, both Safari and Chrome blew away the others by an order of magnitude on the V8 benchmark. So I decided to try the SunSpider benchmark instead this time. Safari 4.0 leads the pack with a mere 1222ms to complete the battery of tests, although the Chrome alpha is close on its heels, taking just over 1300ms. Firefox 3.5 beta 4 is solidly in third place with 1930ms. Camino fares much worse with nearly 5000ms and the Opera 10 beta is a distant last with over 7800ms.

Overall, a pleasing improvement since last Fall.

Filed under  //   web-browsers  

Comments [0]

A compromise on my preferentially vegetarian diet

For the past year or so I have been adhering to what I call a preferentially vegetarian diet: I would eat vegetarian food whenever it was reasonably convenient to do so and wouldn't cook meat at home. That still had me eating meat once or twice a week but it meant I appreciated it more when I did so.
 
Recently, however, I have begun wearing an Invisalign device that requires me to spend no more than about two hours per day eating. This means that I can no longer get by on a primarily vegetarian diet, thanks to my stratospheric metabolism. But I was reluctant to completely abandon my progress with reducing my meat consumption so I thought about reason I ended up finally going that route and realized that it was because of the truly awful factory-farming practices in vogue through this country's food industry.
 
My compromise, therefore, is to start eating meat again but avoid the big 3 culprits: pork, beef and chicken. This still lets me eat all sorts of other meat like seafood, bison, goat, duck, rabbit, etc. Let's see how that works out.

Comments [0]

People are so irrational it's funny and scary

Comments [1]

Invisalign: the untold downsides

I've had crooked teeth for ages but I've avoided getting braces to fix them because braces are extremely inconvenient and I'm unwilling to deal with them. Last year, however, my dentist told me about something called Invisalign, which she claimed would not be inconvenient because I could just pop them out when I wanted to eat. This seemed like a great idea so, despite the $6400 price tag, I decided to give it a shot. She took moulds of my teeth and they used 3D modelling software to compute the movements my teeth would need to make, then sliced up the sequence of movements into 23 phases, each of which resulted in a different transparent plastic shell that I'll need to wear on my teeth for a fortnight. All well and good so far, until she told me that I could only have the shell out of my mouth for a maximum of 2 hours per day!
 
That is proving to be a major hassle because I can no longer just pop food into my mouth whenever I feel hungry, which is very frequently. Neither can I enjoy the luxuriously long meals to which I am accustomed. I feel like the treatment was misrepresented to me because neither the literature, nor the disclaimer, nor my dentist made it clear that I'd be limited to eating for a maximum of 2 hours per day. I'm trying to eat meals faster but I may have to revert the mostly-vegetarian diet I'm been cultivating for the past year just so I can stave off the hunger pangs more efficiently.

Comments [0]

Indoor skydiving

A bunch of us went indoor skydiving yesterday as part of Magic Dave's bachelor party festivities. It's more like a vertical wind tunnel than anything else but still plenty of fun. It's also surprisingly tiring! I didn't think that 6 minutes would be very much time but by the time we finished I was exhausted and today I'm quite sore from it. The wind rushing up my nose caught me by surprise too. It's also pretty loud and we had to wear earplugs, although that's not really very surprising.

At the end of our session, the safety instructor did a few advanced moves for our our entertainment, where he looked like he was on an invisible trampoline and then spun around like a helicopter while topsy-turvy in the air. I think we appreciated them much more after having experienced for ourselves how hard it is to maneuver under the circumstances.

Comments [0]

Living in the cloud

Three weeks ago, while I was out of town, the hard drive in my Mac Mini died. Being three years old, this wasn't a huge shock, and Time Machine had been making daily rolling snapshots of my filesystem so I wasn't concerned with data-loss. But this Mac Mini is the first computer I've ever owned that hasn't started to seem outdated after three years and I'd been looking forward to using it for at least a couple of years longer.

Thinking I'd just replace the hard drive, I bought a new 500 GB one from Amazon to replace the 80 GB one that had died. Unfortunately, Apple's genius bar was unwilling to install it into the Mini for me and the 3rd-party repair shop to which directed me wanted to charge me $125 to install a $95 disk! So I decided to try and replace the drive myself using instructions on the Web. Having assembled several computers from scratch during university, I wasn't entirely unfamiliar with the general process, although the cramped interior of the Mac Mini made things tricky. After much effort I finally succeeded in replacing the drive and reassmbling the machine, only to discover that the disk wasn't being recognized by the system when I powered it on. My suspiscion is that I damaged the cable connecting the disk controller to the motherboard.

While I could afford to purchase a new Mini, I thought I'd try an experiment instead and live in the cloud. I plugged my work Thinkpad into the lovely 24 inch LCD previously powered by the Mini and have been using that instead. Because I can access my Gmail, Calendar and Blog Reader on the Web and GChat stores my chat history on the server, I haven't had any major problems. The two things that I do miss from having a real desktop are both iTunes-related: music and iPhone syncing. I'm able to access the GCal Web UI on my iPhone but it's not quite as nice as the native calendar app and being unable to sync the addressbook on my phone is slowly starting to get annoying as I acumulate contact info from various people in my GMail addressbook, for which there isn't yet a mobile-friendly Web UI.

The lack of music is a multi-layered problem. Firstly, the music in my Time-Machine archive is stored on a filesystem that isn't readable by default in Linux. Secondly, a small portion of my music is encrypted, although, given that I have about 30 GB of music, I probably wouldn't miss that. Thirdly, most of my music is in AAC format and, while I think unencrypted AAC is playable on Linux these days, all the available Gtk-based music players suck (i.e. don't scale well to handling thousands of songs and exhibit flaky behavious when it comes to user interaction). Finally, for reasons that continue to mystify me, the sound output jack on my Thinkpad does not send any data to the surround sound system to whcih I've grown accustomed, so I'd have to listen to music through the awful built-in speaker.

Perhaps I will eventually get sufficiently annoyed with this that I get a case for the new hard disk and just run the Mini off it as an external drive.

Comments [1]

The new face of SEO spam

* SERVICE NOTICE*
 
* Attention: Important Notice
Complete and return by fax to:
_1-646-385-7542_*
 
   
 
*47-47 36th Street #16452
Long Island City, NY 11101
United States of America*
 
* ATT:* ANTONIO DSOUZA*
 ADMINISTRATIVE CONTACT*
 -
 2124 22ND ST
 SAN FRANCISCO , CA , 94107
 CA
 Phone: 1.650798066
 WWW.NEUROHIVE.ORG
  * *
 
* Domain Name: NEUROHIVE.ORG
Search Engine Submission*
 
_*Requested Reply
*_May 12,2009
 
*PART I: REVIEW SOLICITATION*
 
*Attn: ANTONIO DSOUZA
As a courtesy reminder, we are sending you this notification for your
business Domain name search engine registration. This letter is to
inform you that it's time to send in your registration and save.
 
_Failure to complete your Domain name search engine registration by the
expiration date may result in cancellation of this offer making it
difficult for your customers to locate you on the web.
 
_Privatization allows the consumer a choice when registering. Search
engine subscription includes domain name search engine submission. You
are under no obligation to pay the amounts stated below unless you
accept this offer. Do not discard, this notice is not an invoice it is a
courtesy reminder to register your domain name search engine listing so
your customers can locate you on the web.
 
This Notice for: WWW.NEUROHIVE.ORG will expire on May 12,2009 Act today!
 *
 
--------------------------------------------------------------------------------------------------------------------------
 
DETAIL OF SERVICE: ANNUAL WEBSITE SEARCH ENGINE SUBMISSION FOR DOMAIN
NAME WWW.NEUROHIVE.ORG
 
*Detail of Service:**
SEARCH SUBMISSIONS*
 
   
 
* Reply by Date:*
*5/12/2009*
 
   
 
* For Domain Name:
NEUROHIVE.ORG*
 
*100% SATISFACTION IS GUARANTEED OR YOUR MONEY BACK
 
*Select * * Term* * Your Existing Domain* * Period Covered* * Price*
 
  NEUROHIVE.ORG
 [ ] 1 year 5/12/2009 - 5/12/2010 $75.00
 [ ] 2 year 5/12/2009 - 5/12/2011 $119.00
 [ ] 5 year 5/12/2009 - 5/12/2014 $199.00
* [ ] 10 year* *-Most Recommended-* *5/12/2009 - 5/12/2019* *$295.00*
 
 
 
* Please ensure that your contact information is correct or make the
necessary changes.*
* Full Name: * * ANTONIO DSOUZA*_ _ *

** Phone: * _____________________* *
*Today's Date:* _____________________ *Signature:* _____________________
 
* PLEASE COMPLETE AND RETURN BY FAX: 1-646-385-7542*
 
 
 
--------------------------------------------------------------------------------------------------------------------------
 
By accepting this offer, you agree not to hold DN liable for any part.
Note that THIS IS NOT A BILL. This is a solicitation. You are under no
obligation to pay the amounts stated unless you accept this offer. The
information in this letter contains confidential and/or legally
privileged information from the notification processing department of
the DN. This information is intended only for the use of the
individual(s) named above. There is no pre-existing relationship between
DN and the domain mentioned above. This notice is not in any part
associated with a continuation of services for domain registration.
Search engine submission is an optional service that you can use as a
part of your website optimization and alone may not increase the traffic
to your site. If you do not wish to receive further updates from DN
send an email to wdsrv278@operamail.com to unsubscribe. If you are not
the intended recipient, you are hereby notified that disclosure,
copying, distribution or the taking of any action in reliance on the
contents for this letter is strictly prohibited. * 100% satisfaction
guaranteed, you may request a refund within 30 days.

Comments [0]

Carrot brightens the window-washers day

Our office tower is having the windows cleaner so there've been window washers ascending and descending for the past few days. Today we decided to cheer them up a bit by positioning the Carrotine Kid so he faced out the window. Now they get to see his smiling visage every time they go by and they always grin at us.

Comments [0]