Microwave interface

I once explained my usage of our microwave. I use 3 buttons: a "pizza button" (25 seconds) * n times (e.g. n=2 is 50 sec, n=3 is 1.15 min ...), start and stop buttons. Our microwave probably does miracles but I (and I'm sure a lot of other people) use it only for heating drinks and food. I use the "pizza button" even for defrosting.

The microwave in the photo is from the lab's kitchen. It has an easy interface, but on the first sight. Let's look at the heating procedure:

  1. Select the heating power (90, 180, 360, 600, 1000) - in the middle of the panel
  2. Adjust time with the round button - top of the panel
  3. Press the start button - bottom of the panel

If the power is not selected, timer is not working either. To start with a step 2. a step 1. has to be completed. Most microwaves have a default heating power. If a user starts with the time it lets her/him proceed! It took me a while to understand why a button to adjust the time is not working.

Then look at the arrangement of power buttons as they are not in one line but rather split in two lines. I would guess that designer thought that power button labeled '1000' would not be used often. Or even that this button doesn't need to be grouped with the rest of power buttons. I would rather not have the button labeled '90' (I'd guess that most users want their food heated quickly) and fit all power buttons in one line.

Look also at the labels: M, P and kg. The last one is probably to select the weight of the food (to be heated or defrosted). Which button is used to enter weight? Maybe the round button, but the label above it says only sec/min. What are M and P buttons for? Now very informative.

And the last, look at how the interface is set up for the most used function: heating. The first step requires manipulation of the interface in the middle, the second on the top and for the third step a user has to go down to the bottom. The user has to travel too much on the interface. This interface would be much nicer if a procedure would follow the top-down approach.

  • Top: select heating or leave it on a default value.
  • Middle: adjust time.
  • Bottom: press start.

Scanning codes

Scanning bar codes became very popular. I already found three applications that get good use of scanning codes.

Grocery iQ

Grocery iQ is a social shopping list on which items can be put manually or by scanning bar codes. It has features like sharing the shopping list with others, organize by store, get coupons for products on the list, etc.

I can envision people doing groceries with a phone. Imagine when products will have RFIDs and when we will pass by an aisle with a product on our shopping list a phone will warn us. Imagine the phone automatically scanning similar products' RFIDs and suggest the best price. Imagine collaborative mapping (crowdsourcing) of grocery stores (similar to OpenStreetMap) and knowing where exactly are products on our list. Before even entering the store a phone will have the optimum walking path drawn for us (I hate shopping in enormous stores but I like their lower prices). 

Delicious Library

Delicious library is a cataloging software for books, movies, music, software, toys, tools, electronics, & video games. Scanning a code will find a product on the web and put in in our library. The feature list is too long but it allows sharing, categorizing, checking out, etc.

It reminds me of a product I did a prototype of 6 years ago. I thought of putting all person's files (documents, photos, etc.) on shelves (maybe with a treemap algorithm where importance would play a scaling factor instead of file size). Importance would be calculated by number of accesses, time when added to a file hierarchy and by users (something like thumbs up and down as used on YouTube). But rectangles would look like shelves with thumbnails to make it familiar to the physical world. The shelves would have to be decently static to allow users to adopt to and remember spatial position of files. But my supervisor at the time told me that shelves on a PC would look like driving a car with a riddle :)


Similar to DL is Booxter. Both also allows one to carry the whole digital library of physical things on an iPhone.


Sixthsense envisioned the future of reviews from the web. But thinking of it, the technology already exists to achieve this today without special wearable computing. It might be that such application (scan a barcode and application searchers the web to provide reviews, features and  ...) already exists for smart phones. I probably just don't know of it.

A door to and from the nursery

This door has two handles so the kids can not escape from the nursery. It is actually a really nice safety solution. I haven't seen such doors in other countries; only here in UK.

The lower handle is low enough for children while the upper one is in the head level of a grownup (170 cm). The door can be opened by an grownup using both hands or collaboratively with a child.

How to write scientific text?

Ever wondered what makes a good scientific text readable? Not that I'm good at it (and this blog is probably full of typos and bad structured sentences - it sure isn't scientific writing :)) but here are some things I learned so far:

  • Clear, understandable, not to long and not to short sentences that don't confuse (loose) the reader
  • Important things stressed out at the beginning of each sentence and not at the end (where reader gets lost)
  • Not to long and not to short paragraphs
  • First sentence of a paragraph is an introduction to what the paragraph is about (scanning first sentence of each paragraph of a paper should give a reader the idea of the whole paper's structure and content)
  • No citations in the abstract :)
  • Abstract is the key part to make readers read further and it should explain what the paper is about (don't make the abstract an introduction)
  • Abstract has to be one paragraph
  • Provide and overview throughout the paper and guide the reader

This is certainly not the whole list but just important points to consider when writing a scientific text. And practicing is what makes us better :). It's like playing an instrument: no practice, no success.

To read more on the issue, the following links should be the good start with examples:

I have recently read a nicely written paper which I not only recommend for the sake of language:

Alan Dix (2010). Human-Computer Interaction: a stable discipline, a nascent science, and the growth of the long tail. Interacting with Computers, 22(1) pp. 13-27.

I had a supervisor once who's papers were really nice to read, too. Even my wife has read a few of them just because his writing was fluent (she actually doesn't care about CS or HCI). An example abstract from one of his papers:

User Interface Management Systems have significantly reduced the effort required to build a user interface. However, current systems assume a set of standard "widgets" and make no provisions for defining new ones. This forces user interface designers to either do without or laboriously build new widgets with code. The Interface Object Graph is presented as a method for specifying and communicating the design of interaction objects or widgets. Two sample specifications are presented, one for a secure switch and the other for a two dimensional graphical browser. 

David Carr

Counting RSS subscriptions 2

A little bit more on counting RSS subscriptions. I'm posting on this blog cca. every 5 days (e.g. on the 5th, 10th, 15th, 20th, 25th and 30th of the month). It is really easy to see how many people visit the site on such days with Google Analytics. So I'd guess that I have around 20 RSS subscribers.

Lets count again as I did the last time:

# of RSS accesses 

$ grep index.rss access.log | wc -l

# of different IP address accessing RSS

$ grep index.rss access.log | awk '{IP[$1]++;} END {for(s in IP) print IP[s], s;}' | wc -l

# of people accessing RSS from dynamic IPs 343/30(days in a month)=11

$ grep index.rss access.log | awk '{IP[$1]++;} END {for(s in IP) print IP[s], s;}'| awk '{if ($1>0 && $1<100) print $1,$2}' | wc -l

# of people with fixed IPs

$ grep index.rss access.log | awk '{IP[$1]++;} END {for(s in IP) print IP[s], s;}'| awk '{if ($1>100) print $1,$2}' | wc -l

11+26=37 divided by 2 as this number seams too high (precision is a virtue :)) and we get 18.5 which is close to my estimate at the beginning. But I might be completely wrong as well.