Per Ola Kristensson | Blog

Blog
Publications
Software
Other Stuff
Log in

The beginning and the end of the world

October 6th, 2011

Having moved to St Andrews about five months ago I felt I should try to read up on the town’s rich history. However, I felt that the first book I picked up to read was just too dry to be interesting (it started with the ice age…). What I missed was a story about the people of St Andrews. Surely a 600-year old university town must have some interesting stories to tell from its past?

Therefore I was delighted when I read a review in the Guardian of a recently published book called The Beginning and the End of the World: St Andrews, Scandal, and the Birth of Photography by Robert Crawford, a professor in the School of English at the University of St Andrews.

This fantastic book paints a vivid picture of life within the University of St Andrews in the 19th century. It tells the tale of Sir David Brewster, an extremely distinguished scientist at the time and Principal of the United College in the University of St Andrews. This man, who among his many achievements invented the kaleidoscope, helped start the Literary and Philosophical Society of St Andrews. Despite St Andrews awkward location (it took about a day to travel from Edinburgh to St Andrews at the time), the Lit & Phil managed to attract individuals who went on to have a profound impact on both the British society and the world at large. Among other things, their ability to keep up with the research frontier on photography resulted in St Andrews becoming the first town in the world to be comprehensively photographed.

I very much recommend reading this fascinating book. It was a great pleasure to read this well-written and thoroughly researched account of 19th century St Andrews.

More open access spam

October 6th, 2011

Relating to a previous post on academic spam it seems the spammers from inTech now have competition in the open access “book chapter” business.

I just received the following email:

Dear Per Ola Kristensson,

On behalf of iConcept Press, I would like to invite you to submit a paper
to our new book project under the working title “Handbook of Pattern
Recognition: Methods and Application”. The editor of this book is Khalid
Hosny. The book description can be found at:

http://www.iconceptpress.com/01/site/publication.viewPapers.php?publicationID=BK020A

We notice that you have some publications related to this book project. For
instance, we are interested in your paper entitled “Parakeet: a
demonstration of speech recognition on a mobile touch-screen device
(2009)”. (Please note that we are not asking you to republish this paper).
You are welcome to submit an extended/expanded version of this paper, or
any work that is related to this book. We expect each chapter has a minimum
of 16 pages.

All iConcept Press books are published as hard copy with ISBN and as open
access. For more information, please visit our web site:

http://www.iconceptpress.com.

Since we are open access, we would like to ask our authors to contribute
part of the publication expense. This publication fee might be
waived/reduced if: Most authors are from countries that are not classified
as high-income economies
(http://www.iconceptpress.com/01/site/info.lowIncomeCountries.php). Please
contact us for more information. The standard publication fee for each
accepted manuscript is USD$38/page for the first 16 pages and USD$18/page
thereafter. The corresponding author of each paid chapter will receive one
hard copy for free.

I sincerely hope that you would accept the invitation and that you support
the open access idea.

Next step:
1. Please inform us about your decision via email by: 18 Oct 2011
2. Submit a tentative abstract and title via our online submission system
(http://www.iconceptpress.com/01/site/process.register.php) by: 10 Nov
2011
3. Upload a full chapter by: 15 Jan 2012

Please free feel to contact us if you have any question.

Regards,

iConcept Press
Web: www.iConceptPress.com

Again, I wonder why I would pay for an open access book chapter? These chapters seem to undergo minimal (if any) peer review (I have never been asked to review any and I have never heard of anyone else being approached either) so all an open access book chapter amounts to is a PDF document hosted on a website. I might as well make the text available on the web myself. For free.

SLPAT 2011 workshop report

July 31st, 2011

Yesterday I attended the Second Workshop on Speech and Language Processing for Assistive Technologies (SLPAT) in the Informatics Forum at the University of Edinburgh. It was held in conjunction with ACL’s annual conference on Empirical Methods in Natural Language Processing. Last Thursday I had presented a paper on our work on AAC language modelling work at EMNLP. Therefore, even though I did not have anything new to present at the workshop, the SLPAT workshop was of high interest to me.

I have attended quite a few workshops before and my impressions so far have been mixed. Sometimes workshops fail to attract high-quality papers. Other times the organisation is in chaos. Very rarely do the workshop organisers manage to get everything right. Therefore I was very pleased to note that SLPAT 2011 managed to both attract high-quality workshop papers and deliver on an ambitious workshop schedule that packed the day with talks interwoven with user panels, posters and demonstrations.

Besides the talks, two other features stood out. First, the workshop had two ambitious poster & demo sessions. Demonstrations included a Lightwriter, a popular text-to-speech AAC device. I had never used one before and it was instructional to learn how it was designed. I also think it was a brilliant move to invite the AAC vendors Toby Churchill and Tobii to the workshop. I think researchers in AAC have a duty to try to interface with industry and government so that our research results can translate into actual benefits for end-users.

Related to this point, another feature that stood out was the AAC user panel. The organisers had invited AAC users to deliver prepared speeches about their reflections and ideas of AAC based on their own first-hand experiences with AAC devices. Thereafter the audience had an opportunity to ask questions. It was a very instructional session and also a reminder to me about just how much AAC devices can still be improved. I was also amazed by the eloquence of some of the talks delivered.

In summary, SLPAT 2011 was a highly ambitious and well-organised workshop. It was run just as well as a full conference, albeit for a smaller and perhaps more dedicated audience. I had a great time, I met lots of interesting people and I learned a lot. I will definitely try to attend the next workshop.

AIED 2011 conference report

July 12th, 2011

Queen Street, Auckland

I recently attended the 2011 Artificial Intelligence in Education (AIED 2011) conference in Auckland, New Zealand.

The main focus of the AIED conference series is various approaches to designing and evaluating intelligent tutors. An intelligent tutor is basically a computer program that uses AI techniques (such as planning algorithms) to teach students new concepts or techniques based on a model of what the students already know, or are supposed to know. The conference is quite old, this was the 15th biannual conference. The conference is organized by the International AI in Education Society. It also seems that the AIED conference is liaised with the Intelligent Tutoring Systems conference (ITS) so that ITS runs every even year and AIED runs every odd year. Collectively ITS and AIED publish the vast majority of new research in the intelligent tutoring field.

I was at AIED to present a poster on the first steps towards designing intelligent tutors for text entry methods. The idea is to increase user adoption of novel text entry methods by using highly effective and engaging intelligent tutoring. I wouldn’t classify myself as an intelligent tutoring researcher so attending this conference was a good opportunity to get an insight into the field’s frontier.

AIED conference proceedings

The conference was held at the Faculty of Engineering at the University of Auckland’s city campus. The conference had a poster session, an interactive event, and three parallel paper tracks. In my opinion the overall organization of the conference and the program worked out very well.

The presented papers fell into three categories: systems, user studies, or data mining. I learned that the latter is apparently so popular that people have felt the need to start a conference on just that, the Educational Data Mining conference (EDM). I also found that machine learning is becoming increasingly popular in intelligent tutoring systems. Some of the machine learning techniques people used were POMDPs and Bayesian models. An interesting concept I didn’t know about before was Open Learner Models (OLMs). OLMs exploit the fact that while a student is using an intelligent tutor the system develops a model of the student. The idea behind OLMs is to figure out how to present the entire model (or aspects of it) to the student. Presumably this can aid the student’s learning.

Some of the papers presented intrigued me. In particular a paper on motivational processes seemed to point in good directions and another paper on confusing students (!) had led to some rather surprising results. I also found out that another active research area is authoring tools for ITSs, some which use techniques from the end-user programming field.

Overall I very much enjoyed going to this conference. It was refreshing to learn about an area of research outside of my comfort zone. Time will tell if I will submit a full paper to AIED 2013!

Firefox 4 and the disappearing status bar: on forcing interface redesigns upon users

May 30th, 2011

Update (June 24, 2011):

Firefox 5 brought back the status bar, at least for Windows.

So Firefox prompted me to update to the new version, which I did. And the first thing I noticed was that the menu bar was gone. However, an option enabled me to get it back relatively quickly.

The second thing I noticed was that the status bar was gone. As it turns out, there is no option to get it back, and this is by design.

This puzzles me because there are at least three pieces of information I am relying on the status bar for:

  1. Which URL I will load if I click on a link.
  2. Whether or not I am on a secure link (the padlock icon).
  3. Status of long downloads.

Now these pieces of information are not visible, save for item 1 above. The way Firefox 4 solves item 1 without a status bar is to implement a “temporary status bar” which is only visible when you hover over a link, or when a page loads. Given how many links there are on websites nowadays this results in a lot of flicker in the bottom-left corner of my browsing window when my cursor inadvertently hovers over some of the links.

With the new design I lose information (padlock icon and download progress) and I have to endure distracting flicker in the bottom-left corner. Further, the fact that the status bar is not really gone shows how a mantra (I would guess minimalism) has taken precedence over function.

This makes me think about the philosophy of user interface redesigns and software updates. Do we really want to design software that forces new interface redesigns upon users? Shouldn’t we convince users of the benefits of a new user interface design rather than force it upon users? Unlike software bug fixes, user interface updates always come with retraining costs. Habitual patterns break and users must invest time and effort in figuring out how to achieve the same tasks—assuming those tasks are even possible to achieve with the new design! In the case of Firefox 4, wouldn’t a more democratic and user-friendly approach had been to keep the status bar as it was and gently ask users upon installation whether or not they would want to try the new interface redesign with a flickering status bar?

Economists say it is (in some instances) challenging to convince users to give up suboptimal technologies because of path dependence. Under this interpretation, forcing interface redesigns upon users opens up a way to escape a local optimum in which users refuse to upgrade poor technology they consider “good-enough” . However, interfaces redesigns always come at a cost for users, no matter if those interface redesigns prove to be better later on. Therefore, the expected gains of an interface redesign must always be weighted against the non-negligible adaptation and retraining costs that are imposed on users. And sometimes an interface redesign is just a step backwards. Such as the removal of the status bar in Firefox 4.

On Nokia and Microsoft

February 12th, 2011

By now it seems everyone has some form of opinion on the announced Nokia and Microsoft collaboration. Most of the opinions I’ve read or heard essentially state that Nokia risks becoming a low-margin hardware manufacturer while Microsoft may benefit hugely from using Nokia’s market share to spearhead their reattempt to enter the mobile operating system (OS) war.

So what’s in it for Nokia? I think it depends hugely on the unannounced details in the deal. If Nokia gets some form exclusivity on the Microsoft Windows Phone OS and accompanying app store that they can leverage then I think Nokia’s CEO may have made a very smart move. Nokia wants to avoid Google’s Android OS, which is rapidly becoming a lowest common denominator OS for a variety of manufacturers (for example, Samung, HTC and Sony Ericsson). The best situation for Nokia would probably be if they had their own version of Apple’s iOS. However, for various reasons Nokia failed to execute on this very sensible strategy (the OSs Symbian, Maemo, Meego are seen as non-viable today). Hence the conclusion is that Nokia has now realized their engineering divisions are simply incapable of creating a competitive OS and ecosystem that can rival Apple’s iOS. However, Microsoft can, indeed they have already done this with the Windows Phone OS. Contrary to popular opinion it is a very well-designed system. If you haven’t tried it, you may think Windows Phone is the Windows Mobile disaster all over again. It is not. Try it! Thus Microsoft provides Nokia with their very much wanted exclusive OS and ecosystem that Nokia can use to avoid being diluted to just another hardware manufacturer for Google’s Android OS. However, it really depends on the details in the deal with Microsoft. There is a long list of companies that tried to collaborate with Microsoft and failed miserably. Perhaps this is the first move before a full-scale Nokia takeover by Microsoft? It may not necessarily be a bad move for either company.

Shumin Zhai named ACM Fellow

December 14th, 2010

Fantastic news!

Dr Shumin Zhai, my former PhD advisor, has been named an ACM Fellow “for contributions to human-computer interface research and innovation”!

Congratulations!

Connecting iPhone UI widgets designed in Interface Builder to Objective-C code in Xcode

December 6th, 2010

When I design an iPhone app I tend to use Interface Builder. However, I always forget how to actually connect the widgets (buttons, labels and so on) in Interface Builder to variables I can reference in my Objective-C code in Xcode. Hence this post. Note that this is one approach, there are several others. However, the procedure I describe below is beneficial as it is quite simple, yet usually all that is required.

Step 1. Design some widgets using Interface Builder

The way I usually do it is to simply start a new project, open the Resources tab in the Groups & Files sidebar, and then double-click on a pre-generated Interface Builder XIB file (for example, MainView.xib).

(Note: The screen captures and code fragments I will show below are from a simple project that was automatically generated from the Utility Application code template provided by Apple. A Utility Application project has two default views: a MainView and a FlipsideView. The procedure I describe works for any iPhone application, so if you don’t understand references to FlipsideView and other objects then just ignore them for now.)

Then I design some rudimentary user interface, like this one (click for a larger image):

Step 2. Create outlets in your code

OK. So we have designed a user interface using Interface Builder. Now, how do we access all these widgets in our code? Here I will describe how we are going to connect the button labeled Next in the above screen capture to a variable named nextBtn.

First, declare the instance variable nextBtn in your interface (for example, MainViewController.h):


@interface MainViewController : UIViewController <FlipsideViewControllerDelegate> {
    UIButton *nextBtn;
}

Below your interface declaration, introduce an outlet that references the instance variable you declared above:


@interface MainViewController : UIViewController <FlipsideViewControllerDelegate> {
    UIButton *nextBtn;
}
 
@property (nonatomic, retain) IBOutlet UIButton* nextBtn;

You have now declared that your class contains a UIButton instance, and this instance variable can be accessed via an IBOutlet. However, no code has been generated to set the value of this variable yet. To do so, open up the corresponding implementation file (for example, MainViewController.m) and introduce the following line somewhere below the @implementation declaration:


@synthesize nextBtn;

Step 3. Connect Interface Builder widgets to your outlets in Xcode

Now that we have created the necessary instance variables and outlets we can open up Interface Builder and connect the widgets to the corresponding variable declarations in the code. First, select File's Owner in Interface Builder’s Inspector window:

Then open the Connections Inspector (Command-2). In the Outlets section you will see a small connector (circle) to the right of a label named nextBtn. If you hover over the connector it will highlight and turn into a plus-sign. Click it and drag the blue thick line that appears to the button in the interface you wish to connect to nextBtn. See below for an illustration (click to enlarge):

Step 4. Create actions for your Interface Builder widgets

The next step is to implement a method that will be called when an action is triggered for the button. To do this we first add the following function prototype to the header file (for example, MainViewController.h):


- (IBAction)respondToButtonClick:(id)sender;

Thereafter we add a function body to the implementation file (for example, MainViewController.m):


- (IBAction)respondToButtonClick:(id)sender {
    NSLog(@"The user clicked on the nextBtn button!");
}

The code above prints out a message to the console whenever the button labeled Next is pressed by the user (to view the console press Shift-Command-R).

Step 5. Connect Interface Builder widget actions to your designated methods in Xcode

Now we need to tell Interface Builder which function it should call when nextBtn is pressed. Open up Interface Builder again and click on the button in the user interface which we previously connected to the nextBtn variable. The Connections Inspector will change and show you a list of possible actions this button can take. Now click on the connector (circle) for the action Touch Up Inside and drag it to File's Owner in the Inspector (click for a larger image):

A menu will pop up and propose possible methods in your code that could receive the action:

Choose respondToButtonClick:. Then save your interface design in Interface Builder.

All done!

Now we can run the program on an iPhone or via the emulator. Whenever you press the button labeled Next a message appears in the console (click to enlarge):

Voila! You can now access the button labeled Next using the nextBtn instance variable in your code. Further, whenever a user presses this button, your method respondToButtonClick: will be invoked and execute any custom code you insert here.

The above procedure used a single button for illustration purposes. However, this procedure generalizes to all widgets and actions supported by Interface Builder. Have fun!

For more information, check out Apple’s own documentation on integrating Interface Builder with Xcode.

How to transfer files from an iPhone app to the desktop

December 3rd, 2010

How do you transfer files from an iPhone app to a desktop machine? One would think this is easy. As it turns out, it is relatively easy but not very intuitive.

What you need to do is to locate the property list (.plist) file for your app in Xcode (it is typically found under Resources in the Groups & Files panel). The file is usually called Application-Info.plist (replace Application with whatever the name of your project is). Open the file in plain text mode and then append the following:


<key>UIFileSharingEnabled</key>
<true/>

Now run your app on the iPhone. Then do a sync. Thereafter open iTunes, select the Apps tab, and scroll down. You will see a new section named File Sharing. You can use this section to transfer files generated by an iPhone app to your desktop machine. It will look something like this (click the thumbnail for a larger image):

Problem with the web host

November 14th, 2010

I have noticed that my website, in particular the blog part, has been down a lot recently. Apologies for that. My web host, the Swedish company Binero, has had some trouble recently. Early last week their systems failed completely and even their own website went down. I thought they managed to fix the issues but apparently there were still some glitches because this weekend my blog went down again. I hope they have now fixed any outstanding problems. They have been good in the past so I am willing to give them the benefit of doubt this time.