December 7, 2009: Last Post -- An Ancient Egyptian Reviews the Book
"Hello, my name is Ammon, I've been asked to review for you today a new techology for displaying written information: the Book.
First, let's review the current forms of information storage and retrieval. We're all of course familiar with the carved clay tablet, that staple of any scholar's home. While devices are certainly long lasting, they were cumbersome and time consuming to create. Of course, recently we've seen the invention of the papyrus scroll, which for the past several hundred years has represented the pinnacle of modern technology, being easy to manipulate and quick to create.
I hold here in my hands a book, which appears to be many small papyrus sections cut to the same shape and covered with a hard material which folds open from one side. We are told this format will be the future, and while it does have its promising points, I remain skeptical.
First let's cover those promising points. First, the amount of information which can be contained in a small physical space is somewhat improved with the book. Books do appear to usually be heavier than scrolls, however, which will be a disappointment to those who were most excited to get rid of their clay tablets. Secondly, the hard covering of the book makes the object more robust; no longer do you have to worry about your brother Aapep sitting on your scrolls and breaking them.
However, books do suffer from their usability problems. For example, when reading, one must occasionally 'turn' the page over to continue the sentence. This break of continuity can really distract from a good 'Who killed the pharoh' mystery thriller. Secondly, one of the advantages of the scroll, that one's place in the document is always saved, is missing from the book. Some early adopters have reported success in keeping smaller pieces of papyrus in between the leaves of the book as placeholders, but these frequently fall out or get lost in the pages. Others resort to folding over the corners of important book pages; however this destructive process is not recommended by the manufacturer. Finally, manufacturers are still working out how to place very long figures on the small book pages.
Whether or not the book will be useful to anyone in the future is still unknown. However, some people find them a fun distraction from the boring tedium of the scroll and the painful carving of tablets --- you may too."
November 23, 2009: Reblogging, Customization
Stephen Lagree recently blogged about customization in user interfaces, questioning whether it was a good thing or not. Although he concedes that it is often useful and fun, it can hamper productivity by providing an inconsistent user interface.
While I do think this is certainly possible, I'd like to offer a counterpoint. I think that when customization (skinning, theming, etc.) hampers productivity, this is a fault of the designer of the customization. If an application has a good default layout, and the options for customizing aren't in the way in general use, then there should be no productivity losses by default. Moreso if
customization is presented only as an "advanced option" (hidden in the preferences of the application, for instance); thus most likely only users who would be able to deal with the changed interface would enable it.
One of the great benefits of the customization, from a human/computer interaction perspective, is that they can make computing more fun and personable. Even extreme customizations, such as in the media players of old (think winamp 5.x back in the day), can help create a personalized experience, encouraging people to become more familiar with the machine, not less. (For some reason, I have images from back in my IT days of lonely office workers, whose only joy at work was to set their background picture and desktop theme according to their tastes...)
Of course, there is a very real problem if multiple users are expected to use the same application on the same machine...
By the way, this used to be my favorite winamp skin:
November 16, 2009: Processing.org
Have you heard of processing.org? It's pretty awesome, basically a language extension for java which makes drawing primitive graphics very easy. Think java for art students. It even comes with it's own little editor, and exports applets for web pages. The biggest downside was that the applets will slow down in they are large (say, bigger than 600x600); I think this is because the backend needs to do some convoluted software double buffering to handle all the cool transparency/blur/etc. effects that are built in. I haven't played with it in a while, perhaps they've fixed that.
Link: http://processing.org/
Here's a fun little program I wrote a while back (to experiment with gui design, actually): Mystik Spiral. You can click and drag with either mouse button in either axis; giving control over two colors, direction, speed, and jitter, all with no visible buttons or sliders.
November 9, 2009: Grouping Messages in gmail
I don't have any really good ideas for the blog today... so I think I'm just going to say that I love how gmail groups emails into conversations. How many years did we have email before that awesome idea was implimented? A lot, that's how many.
Here is an idea for the gmail team: I get a lot of "copies" of emails, which are very similar but aren't exactly the same in content (notably, they don't always have the same subject, and one might quote another). There are a couple reasons this happens: 1) someone sends out a mass email, notices an error, and then corrects it by sending another, 2) everyone who thinks I might be interested in an event feels the need to send a mass email about it.
I would like to see gmail group these together too, based on some similarity metric within the email. There might be some confusing groupings, but I think it would make my inbox much easier to navigate.
November 2, 2009: Virtual Desktops
Being a long time linux user, I've always had the option of using virtual desktops (ala OSX "Spaces"). However, in the past I never used them. Now, I use them all the time. What gives?
Here's what gives: now I am using Compiz, which places my virtual desktop on the sides of a virtual "cube" which I can spin around. See:
Why do I like it so much better? First, it's pretty, and as I've stated before, I'm more likely to use pretty things. Second, and much more importantly, it puts my virtual desktops in the context of a physical space metaphor. Previously, I could never remember which desktop I was on related to the others, even if they were in a linear row, because my mind was bad at following the transitions between desktops. Now, however, I very intuitively know that my firefox window is "to the left," and my photo organization software is "on the back."
OSX's "spaces" have a similarly nice physical representation: although the desktops are on the plane, there is still a movement effect when going from space to space. However, I find it a bit more difficult to remember locations in 2d space as opposed to 3d space. This is probably one of the few examples of successful 3d guis.
October 26, 2009: Cross Platform GUI Development Redux
Well, I've made some progress using QTRuby and QTDesigner for cross platform, rapid development coding. Which is to say, it works! Actually, I haven't tried
creating OSX or Windows versions of anything yet, but I suspect (er, hope) that it will work as well as it does on linux. Here were my original requirements, and which
I've accomplished:
Cross platform (Windows, Mac, Linux) toolkit with nice widgets <-- Check! QT is pretty, and rubyscript2exe makes things nicely cross platform.
Easy/fast development language (perl (yuck), python, ruby (yay)) <-- Check, Ruby.
"Compilable"/packagable down to single-click executables (no "please install the gtk-toolkit before installing this application") <-- Check*
Easy to use gui development, with a designer application if possible. <-- Check, QTDesigner
*On the downside, because everything needed to run the executable (including ruby, and the QT libraries, as well as any other libraries used), even simple programs run at
around 19 megabytes. They also start up slow, since everything needs to be unpacked.
Here is a screenshot of a simple application I'm working on:
This converts a blast output file (not biologist friendly) into an excel spreadsheet (biologist friendly), for easy DIY data mining type stuff.
Here's what I like about using QT: First, the QTDesigner handles most of the gui stuff very well, and I don't have to dive into the XML. Also, I can give each widget
a name which I can query from the code. Second, the way that events are handled is very nice. In QT, there is the idea of "slots" and "signals." A slot is basically just
a method which can be called. A signal is a way to call a slot. Gui elements can also have slots and signals. In the code, we can connect arbitrary slots to signals.
For example, I can create a progress bar widget, which has a PercentComplete slot, and I have a class BlastConverter which processes a big file. In this class I define a ChangedPercentComplete
signal, which I can connect to the progress bar slot. Thus, from my BlastConverter class, I can just call ChangedPercentComplete, and the progress bar autowonderfully reflects the change.
Beautiful.
October 12, 2009: Another Text Input Alternative
Ooops, posting a day late this time...
I remembered something the other day, which was an alternative text input method for touch based devices:
To type a word, you start by touching the first letter. Since the cells are laid out according to common letter combinations in English text, usually the next letter in the word is right next to it. If you need to, you can just lift your finger and begin wherever you need to.
I used a version of this for the nintendo DS once upon a time. I was able to type pretty fast with the small stylus, but it did take some time to remember where the letters were. It's really designed for single touch, though, not multitouch. So, perhaps the onscreen keyboard Microsoft is working on (see Sept.28) would be better.
October 5, 2009: In Defense of Pretty UIs
Some people place function over form in their UIs. I think that's fine, and I can understand it. Personally, I'm willing to actually sacrifice some ease of use, even ease of understanding, to use a really beautiful user interface. Admittedly, this is only possible if the UI is also sufficiently simple.
I'm not exactly sure why that is. Perhaps there is just a certain subset of the population who finds aesthetics to be very important, and I am a part of it. I am must much more likely to want to use a piece of software frequently if it is pretty (see iPhone). The same goes for hardware. I designed this amplifier, which has no labels on the controls. I love this amp. I use it every day, and I think I would enjoy using it less if there were ugly words scribbled all over it. Other pics.
September 28, 2009: Multitouch Keyboarding
A small rant:
Ok, one of the drawbacks of multitouch in my opinion is the anathema towards traditional input, especially keyboard input. There are a lot of applications which require this sort of input, and without being able to accept it multitouch will, for the most part, be a non-starter. For instance: word processors, web browser, instant messengers, many games. Sounds like about 95% of what computers are used for, right?
Well, here is one possibility, coming out of microsoft research: a multitouch keyboard.
I don't know how well this would work (I can think of a few problems, for instance I usually move my hand to reach the backspace), but something like it is needed, I think. Contrary to perceived opinion, not all information handled on computers (or "next generation computing devices") is video or images: text is still the backbone of useful computing.
September 21, 2009: Towards a rapid development, cross platform GUI solution
I've been playing with the Windows WPF wizard thing in Visual Studio, and I must say, it is nice. Here's what I would like: a language/gui toolkit which accomplishes the following:
Cross platform (Windows, Mac, Linux) toolkit with nice widgets
Easy/fast development language (perl (yuck), python, ruby (yay))
"Compilable"/packagable down to single-click executables (no "please install the gtk-toolkit before installing this application")
Easy to use gui development, with a designer application if possible.
As far as I know, these things are quite difficult to come by in combination. C/C++ development is slow for the sorts of single-person projects I want to work on, and most of the gui bindings for them are quite confusing anyway. Java is good, but developing gui's is a pain and they still look ugly. GTK is fairly ugly (by default, IMHO), and Glade sucks.
I was playing with "Ruby Shoes" for a while, which was interesting hack which added an easy to use gui toolkit to ruby, along with a cross platform packager. However, there were a lot of bugs, and the project appears to have gone up in flames. My next attempt will likely be trying QT4 (which has a designer) with Ruby, and packaging it up with RubyScript2Exe. This requires that each executable be packaged separately on each platform, but you can't have everything. (The great thing about shoes was it actually gave you executables for windows, mac, and linux no matter what platform you were on.) Hopefully it will even work...
September 14, 2009: Learning Interfaces, or Better UI?
I'm tempted to say that in a perfect UI world, learning interfaces would be completely unnecessary. However, I don't think that is true. Even a perfect UI for a web browser, for example, should still include functionality for autocompletion of forms---a learning interface.
However, in my opinion learning UI's are often something marketing might think up without considering the user. Let's take an example of a well known, excellent user interface with no learning functionality, the iphone "home screen" (I think this is called the springboard):
For several versions of the iPhone software, the user interface of the home screen has barely changed. It is simple, easy to understand and use, and constant. There are several pages of icons, which can be found via a quick swipe. The icons on the bottom are always present on every page. Icons can be moved by holding your finger down on one, and then dragging it to a new position.
Could this UI be improved with learning functionality? I think not, but let's try and force it: the bottom row could always reflect the four most accessed applications, or perhaps the four most recently accessed applications. Icons could self organize based on application function. However, both of these possibilities mean that the UI would lack consistency for the user: everything would be changing as usage changed!
In contrast, here is an example of a learning UI which serves the user: suggested search phrases in the firefox search bar:
Common completions are presented to the user, with searched recently used by the user him/herself at the top of the list. This is useful for two reasons. First, it saves typing time, especially since users frequently do perform the same search many times. Second, when searching the web, knowing the right terms to search for is important, and seeing the search phrases of others helps.
So far, I think what makes for a good "learning UI" is the following: the number of possible inputs should be very large, and these inputs should be repeated frequently by the user. It so happends that text input fields, whether on the command line or in a GUI, fit these requirements nicely. Since few other inputs do, my suggestion is to focus on clean, simple UI design for the most part.
September 7, 2009: Trying to link an image on Facebook
Have you ever tried to link to an image on facebook, and make it so that it shows up in other people's news feeds? Like, "hey, check out this cool picture of a cat with funny words by it!"
I tried it once, and failed. First, I tried the "photos" link to the left. Which shows me other peoples photos. No good. Next, I tried to update my status, clicking the "attach image" icon. This allows me to upload a photo (no good), take a photo with a webcam (no good), or create an album with many photos (ugh).
Ok, lets try a different angle. I go to my "profile" page, which shows me all the interactions I've had with others recently, on my "wall." Ahah, there is a tab for photos. Clicking this shows me photos others have uploaded of me, as well as my albums.
Perhaps it's not a "photo," but a "link?" So I try to update my status again, and this time include a "link," giving the URL of the picture. Fail again.
August 30, 2009: Video Gaming on the Surface
Well, I certainly know that I won't be designing anything like this for the surface. It would be awesome though, because I think real time strategy (RTS) games are a perfect application for multitouch, especially on the horizontal surface of the uh, surface. Being able to change the perspective, rotation, and zoom level in this way looks very intuitive and easy. Viewing different parts of the battlefield quickly in traditional RTS games was always fairly awkward: so much so that they often allowed one to "bookmark" different views of the field. Being able to draw loops
around units with your fingers also seems much easier than with the mouse.
However, there may be problems with complex games on the surface in general, due to a lack of a keyboard. Onscreen buttons would probably suffice, but you wouldn't be able to fit many and it would reduce playing area. Good players really do use many of the keys on the keyboard frequently, even in such mouse driven games. Then again, the surface has a keyboard, perhaps it can be used as well?
Although I hope humanity eradicates war, I imagine in the future robot armies clashing, controlled by skilled commanders on devices such as this, hidden in bunkers. Yeah, lets just stick with video games.
Tag: Surface, Gaming
-- ShawnONeil - 28 Aug 2009
Links:
http://gizmodo.com/5368149/microsoft-getting-cleverer-and-cleverer-with-new-multitouch-screen-keyboard