Friday, May 16, 2008

Mac OS X Speech Synthesis

Since the introduction of the Macintosh in 1984 Mac OS has had the ability to convert text into speech. Even eight-bit computers like the Commodore 64 had SAM, an early voice synthesizer, but as I bemoaned several months ago, there has been relatively little progress in speech recognition and synthesis in the intervening decades. For the more than 45 million Americans with literacy problems this is especially important. Despite the lack of exceptional progress, OS X does offer options for text-to-speech that may be of interest to users regardless of their literacy level.

Here are some uses for speech synthesis that you may not have thought of. Anyone who writes, even if it's only an occasional professional email, can benefit from text-to-speech. While spell checkers are great for finding egregious errors, more subtle problems are harder to spot. Often writers inadvertently use the wrong word or add extra words to their text. For example, how often have you seen "you" in place of "your" accidently? One easy way to find these problems is to listen to someone read what you wrote. OS X can do that for you.

Similarly to the Dictionary application, speech synthesis has been integrated into the modern Mac operating system. Any highlighted text whether it be in a web browser or an e-mail, can be read aloud by the computer. In many applications like word processors the user just needs to bring up the context menu by right clicking or control clicking and choose the "Speech" option, and "Start speaking". If the option is not in the context menu it is still available in the Services menu. Click on the name of the application in the menu bar and then go to "Services/Speech/Start speaking". It is also possible to create a shortcut key for this option. Simply go to System Preferences and open the Speech preference pane. In the "Text to speech" tab, check "Speak selected text when the key is pressed" and then push the "Set key" button. Now just highlight text in any application, and your computer will read it to you at the touch of a button.

Another speech feature can be useful to many people. When working on the computer it's easy to lose track of time. Sometimes hours go by before I realize it. To avoid this, OS X can announce the time for you. The option is available in the Date and Time settings. These can be accessed in several ways. There is a button in the aforementioned "Text to speech" pane, or you may click on the time in the menu bar and choose the "Open Date & Time..." option. Date and Time is also a choice from the main System Preferences menu. Once there, simply click "Announce the time", in the Clock tab, choose how often, and click "Customized voice" if you wish to set specific voice options.

Some users like me, who keep their Dock hidden, may not always notice applications bouncing their icons in the Dock when they need attention. This can be addressed by having OS X speak to you when a program needs attention. This option is also in the "Text to speech" tab of the Speech System Preferences. Just check "Announce when an application requires your attention". The computer is even very polite, saying, "Excuse me. Application X needs your attention."

What if you are dissatisfied with the standard computer voices? Without doing an exhaustive search I found two companies that offer commercial voice packs for OS X. Both have fairly realistic voices. You can hear many samples or download demos at the InfoVox and Cepstral web sites. Unfortunately, they're rather pricey. The InfoVox voices are $100 for the American English pack, whereas Cepstral voices are sold individually for $29 each.

While it would be hard to say that speech synthesis has come a long way on the Mac, the availability of universally integrated speech options and high-quality commercial voices does make a compelling combination. For those who prefer to have text read to them or just simple system alerts, text-to-speech can be a useful and important component of the operating system.

For more great information on the Services menu, see this web site.

Thursday, May 15, 2008

Universal Access Options for Everyone

As with most operating systems of the last decade or so Mac OS X contains options for accessibility by people with disabilities. What users may not realize is that some of these options are extremely useful to anyone.

OS X puts these functions in the Universal Access pane of System Preferences. This article will concentrate on a few options in the Seeing and Keyboard tabs.

The first item that is certainly of use is the zoom feature. Pressing Command- Option 8 zooms in on the screen around the mouse cursor. By default graphics are smoothed after the zooming takes place, so images that would otherwise appear pixilated still look decent. I often use this feature when watching low-quality web video. Rather than putting up with a tiny postage stamp sized video I simply press the short cut key and watch it much closer to full screen. Once in zoom mode the magnification can be adjusted by pressing Command- Option-minus or Command- Option-equals.

The Keyboard tab has features designed for people who have difficulty typing. However, one of the options in Sticky Keys is very useful for people creating screen casts. With Sticky Keys open and the option "Display pressed keys on screen" checked, the symbols for modifier keys, command, option, control, or shift, appear on the screen when they're pressed. In tutorial situations and with new users this is useful to provide a visual cue to go along with the name of the key being used.

Finally, the option "Enable access for assistive devices" appears at the bottom of the Universal Access pane all the time. This choice needs to be selected in order for tools like text expanders to work. It allows applications to access the keyboard buffer as you are typing.

For people with no challenges using a computer the Universal Access pane may be the last place they would look to add useful functionality to OS X. As you can see, there are some options, however, that can improve the computing experience for anyone. Hopefully people will be inspired to explore further.

Wednesday, May 14, 2008

A Blog Meme Thought Virus

Many years ago my brother became interested in the concept of "thought viruses" as he called them. In high-school he tried to get everyone he knew to "whomp the zimbob" (a nonsense phrase that he made up). He is also fond of infecting people with tunes by whistling or humming a catchy song.

The idea of these thought viruses, however, goes back farther than my brother. The concept is called a meme and was developed by Richard Dawkins in a book written in 1970. Memes are very prevalent on the Internet, starting with simple e-mail forwards and now including vast social networks. One manifestation is the blog meme. I was recently "tagged" by Lon of NoLimits2Learning. Here are the rules that were outlined.

1. The rules of the game get posted at the beginning.
2. Each player answers the questions about themselves.
3. At the end of the post, the player then tags 5-6 people and posts their names, then goes to their blogs and leaves them a comment, letting them know they’ve been tagged and asking them to read the player's blog.
4. Let the person who tagged you know when you’ve posted your answer.

Here are the questions:

1. What were you doing 10 years ago?

Ten years ago I was working as a software developer at a printing company in Milwaukee, Wisconsin. I had dropped out of college a couple years before. My daughter was only three, and I tried to spend as much time as possible with her. I had not yet broken my neck, so I still had full control of my body. We enjoyed going to the park, riding bikes, and going on walks.

2. What are five things on my to-do list for today?

I don't keep a to do list, but today I am trying to catch up on my writing. I am using voice recognition for only the second time, so learning to do this better with also be on my list. This afternoon I have to pick up my nephew from school.

3. Snacks I enjoy...

I love chocolate, the darker the better. I also tend to snack on oatmeal or a banana since they are fast and easy.

4. Things I would do if I were a billionaire:

If I were a billionaire I would have a private jet. Traveling is such a hassle. I would also have a portable wheelchair that allows me to go up hills. I am not strong enough to push myself in my manual chair, but my power chair is not portable. I'd also have money to start a business. I'm not sure which idea I would pursue, but I would do one of them.

5. Three of my bad habits:

My worst bad habit is procrastination. I can also be hypercritical, and I'm not very friendly with new people.

6. Five places I have lived:

I have lived in the northwest suburbs of Milwaukee, Wisconsin, USA, on the east side of Milwaukee, on the west side of Milwaukee, on the northwest side of Milwaukee, and in Santa Barbara, California. Not much diversity.

7. Five jobs I have had:

I have worked as a pizza delivery guy, an archaeologist, a beetle dissector and drawer, a software developer, and an elementary special education teacher.

8. People I would like to know about because I am just that nosey:
I'm afraid I don't have five or six people, but here is my list: Jared Goralnick at, Ricky Buchanon of ATMac, and Daniel Eran Dilger of Roughly Drafted Magazine.

Tuesday, May 13, 2008

Recognition for Speech Recognition

My friends came through again. If you've been following this blog you may remember reading about my attempts to get dictation software installed and running. I ended up creating a virtual Virtual PC. Unfortunately, the package with the IBM ViaVoice did not contain the CD. However, yesterday I received a disc in the mail from my friend; ViaVoice version 10 for Windows XP.

This is the first article that I am attempting to dictate. So far the recognition has been so-so. Correcting mistakes is not intuitive yet. I'm sure it will get better as I get used to the software. When it works the speed is amazing, so I am looking forward to getting this working better.

In order to make this somewhat more technical I am going to describe the set up that I am using in the order to get my dictated text onto the Mac.

ViaVoice's SpeakPad dictation application.

As I have it set up, ViaVoice allows dictation into its own application called SpeakPad. I am using this program to create a simple plain text file. In order for my Mac to access it, I set up Windows file sharing. Because I am using the Powerbook as a wireless gateway for the PC, it was somewhat harder to get the two computers to see each other. I was able to see the Windows share from my Mac but not vice versa.

The simple green screen interface of WriteRoom.

Aside from that issue setting up sharing was fairly straightforward. I followed the directions here. Then, to finally published the article I am using several Mac applications. First, I save the file from SpeakPad into the shared directory. I use the application, WriteRoom, to open that text file in order to proofread. I like the green and black full screen mode for this because it is easy on my eyes and typing with text expansion is responsive. Plus, once a file is open in WriteRoom, it will reopen it the next time the program is run. I simply save over the same text file in the virtual PC, and the Mac text editor reflects those changes. Next, I drag the text file into MacJournal in order to keep a nice, searchable copy. From there it's one click to publish. I open the blog in a browser where I add images and links and do the final check.

It seems that voice recognition will be a real time saver if I manage to tame it. Obviously the current setup is somewhat convoluted, but moving the information from app to app is actually fairly painless. And the much smaller amount of typing certainly causes me less pain. It's nice to have good friends, and it's especially good to have nice friends.

Thursday, April 24, 2008

Assistive Technology Blogging

Assistive technology (AT) is a topic that has become near and dear to me. For those unfamiliar with the term, it refers to devices that help people with disabilities perform a function better. There are low tech examples like pencil grips or colored text overlays, or high tech items like a pen-based optical character recognition text reader or advanced computer software. The reason I am familiar with the subject is that I was trained as a special education teacher and worked in that capacity until an accident imparted to me a disability of my own. After breaking my neck, assistive technology became essential for helping to recover as much of my former function as possible.

AT: Pencil grip and pen text scanner

This blog has not focused on AT per se, but several of my posts relate to the topic. ATMac made me aware of a blog carnival asking for submissions of bloggers' favorite AT posts. Mine are on the topic of text expansion tools.
Text Expansion: Wasting Time Trying to Save Time tells of my travails as I tried several tools to improve my typing speed. I recently added an addendum, Text Expanders Revisited. While this reads too much like an advertisement for my taste, it necessarily updates the topic of available text expansion software since newer versions have been released.

If I may be somewhat optimistic for a moment, I'd like to think that some people who never considered the topic of text expanders may read this information and use it to improve their ability to use a computer. No one has requested my abbreviations yet, but I hope they may be useful to someone in the future. In particular, users of head pointing systems with onscreen keyboards may benefit from using fewer keystrokes. Plus, anyone in a position similar to me, where finances impede the adoption of a full dictation system, could be able to type faster. The two linked posts, therefore, are my entries to the AT blog carnival.

Wednesday, April 23, 2008

Attachment in the Digital Age

Lately I've read several books involving Buddhism. One of the primary teachings of the Buddha is that attachment causes suffering. This was exemplified for me this morning by a dream. In it the roof of the house I lived in caught fire. After a brief effort by firefighters, the neighboring house caught fire and became the focus of their attention. We risked entering the first floor of our house to retrieve the kids' possessions, but the second floor, where my things were, was already lost. When questioned about what was up there, I could only remember a couple things, yet my feeling of loss was extreme. For the remainder of the dream, I had intermittent crying spells, and a few tears even crossed over into waking life.

For ages past the fear of loss was merely related to physical things. We were saddened by the death of a loved one or the breaking of a treasured memento. Now, however, a whole new breed of attachment has been born-- attachment to non-physical, digital media. Steve Jobs understands this. This was initially demonstrated by his comments on subscription music services, and then again by recent Apple product innovations.

Jobs has repeatedly declared that people want to own their music. It has been the rationale given for the iTunes Music Store eschewing any type of subscription download service. From a marketing perspective this choice was right on. The subscription-based music stores have all stuttered or folded, and Apple now controls 85% of the legal download market and is the number one music retailer in the world. That belief has also led Jobs to publicly call for music files free of Digital Rights Management (DRM) software, which makes it harder to use legal music when and where a person wants.

Along with ownership comes attachment. Apple has responded to this fear of loss in several software and hardware offerings. People can assuage their fears by making backups to other media or across the internet.

Probably the first such offering was the Dot Mac subscription service. For between $69 and $99 per year, a user gets a storage area on Apple's servers (called an iDisk), in addition to several other services. Many applications now include quick and easy back up to iDisk. In addition to Apple's own Backup utility, which will copy photos, purchased music, and other selected files, users can also store their book and CD collections on iDisk via Delicious Library, back up their taxes from Turbo Tax, and more. This service is an easy way to create off-site back ups of important digital documents.

A noted feature of the most recent release of OS X, Leopard, is the program called Time Machine. It is basically just a backup utility, but its innovations are that it runs automatically with little user intervention, and it provides a novel interface making restoration from backups simple and easy. The stated goal was to increase the number of people who actually back up their data.

In conjunction with Time Machine is a hardware offering called Time Capsule. It is a wireless router (aka Airport Base Station) with a built in hard drive for seamless backups for an entire home network with little user intervention. These innovations are obviously geared toward ensuring that more people are more comfortable with the digital world where music, movies, and memories only exist as pips on a disk.

If you imagine losing all of your digital photos and MP3 or AAC music, it may bring a tear to your eye. I for one have not become enlightened enough to release my attachment to these modern age materials. Which reminds me, I haven't made any backups for quite a while. Better go do that.

Tuesday, April 22, 2008

Text Expanders Revisited

A couple months ago I posted an article about my experience with text expansion utilities. At the time I had chosen TypeIt4Me as the only alternative able to expand one-character shortcuts. Recently, both MacUpdate and MacHeist launched new shareware bundles. Since the former includes Typinator, and the latter originally was said to include TextExpander, and I was already interested in a few other offerings, I decided to give them one more try. To my surprise, Typinator exceeded my expectations and contradicted my memory.

As you may recall, I intended to use text expansion as a poor man's assistive technology for improving text input speed and accuracy. I had used CoWriter with elementary students but could not afford the price tag for my own use. As an alternative, I set up a large number of abbreviations in TypeIt4Me, allowing it to expand out the most common words as I typed the first few letters. However, I was not entirely satisfied with this solution either, since TypeIt4Me had the fewest features of the three programs I had tried but retained a fairly hefty $27 price tag. Therefore, I turned it off for the moment and located TextExpander and Typinator once again.

After a brief revisiting of TextExpander, it was clear once again that it would not fit my needs. As noted before, the one-letter abbreviations did not work. They gave a warning message, but were not highlighted in red and disabled like other illegal shortcuts. I sent the following email to their tech support.

      Subject: TextExpander snippets
      Date: April 11, 2008 5:55:59 PM PDT
    I've previewed your product, and it has very nice features. Unfortunately, it does not fit my needs because single letter abbreviations are not supported. (It seems to me a bug that it does not highlight them in red even though there is a warning message.) I use a text expander to facilitate all my typing because I cannot use one hand since I broke my neck. Being able to use "t" for "the" and "n" for "and", for example, saves me a lot of time. The only program that I have been able to do this with is TypeIt4Me.
    Please let me know of you will ever make single letter abbreviations possible.

This email was sent almost two weeks ago, and I have not heard any reply, plus the MacHeist bundle does not in fact include the program, so I have written off TextExpander.

The other program, Typinator, was a pleasant surprise. I believe the version was updated to 3.0 since the last time I examined it, and the changes were dramatic. First and most noticeably, Typinator now runs nearly invisibly, with just a small icon in the menu bar. Next, when I went to import my TypeIt4Me shortcuts, I had none of the problems that I had had before. I simply dragged and dropped the file into the list of abbreviation sets, and it worked. Finally, my one-letter shortcuts worked! It may be in part due to my faulty memory, but the new version of Typinator was well worth trying.
There were some differences to adjust to in switching from TypeIt4Me. In Typinator features like whether to expand immediately or after a delimiter and how to treat case sensitivity can be set on a shortcut by shortcut basis. Unfortunately, the default on my imported abbreviations was not what I needed for most cases. In the long run, though, having this level of control will enable better functionality. Another issue I had was trying to create an expansion with a backspace in it. In TypeIt4Me I used this to enable typing " g" instead of "ing". The program would backspace over the initial space before adding the "ing". Typinator allows setting the cursor position, but not using the backspace key as far as I can tell.

Overall, I am happy I gave Typinator another try. I have over 200 abbreviations set up, and it is pretty amazing how many of the words I type are abbreviated now. The application is part of the 10-program bundle being offered by MacUpdate for $64.99. I was seriously considering the package before, but Typinator sealed the deal. I would love to have the full functionality of CoWriter or dictation software, but Typinator is not a bad replacement, and right now the price is right.

If anyone else is interested in my abbreviation file, I would be happy to share it. If you purchase the MU bundle through the link above, I earn a $3 credit.

Sunday, April 13, 2008

Why-Mac Part One: Window Management

Apple stock compared to the Nasdaq and Dow Jones.

Until recently, there were no real contenders to Microsoft's OS monopoly. Since the release of OS X and the iPod, however, Apple has steadily begun to challenge that dominance. Apple has over 19 billion dollars in cash stashed away. Their stock price, despite recent declines due to economic fears, has increased over 350% since 2005. Studies have shown 40% of incoming freshmen at some universities using Macs, and Apple has garnered a 25% market share by revenue for laptops sold by all manufacturers for February 2008.

Why-Mac will be a series of articles explaining in detail how I have found Mac OS X to be the best in usability, productivity, and aesthetics. Much has been written about switching to Mac or intricately tweaking OS X, but most of this information is either very basic or too technical. These articles will span the middle ground. For readers who are familiar with computer usage and MS Windows, recent switchers or those considering a Mac, it will present details about how Macs are different and how those differences can make you more productive. Hopefully even longtime Mac users will find some tips and tricks and come to understand their computer better.

First, a bit of background on what qualifies me to be writing these articles. I started using personal computers at the age of 11 on a Texas Instruments 99 4/A. My parents wouldn't buy any game cartridges for it, so my brother and I learned to program in Basic. Later, I became a fan of Atari computers. The Atari ST used the GEM interface, which was a knock-off of the Macintosh OS, but it offered more "Power Without the Price". In high school, the local newspaper published a letter to the editor in which I argued against the purchase of Macs for our school (infuriating our computer teacher). After high school, I worked at a couple of PC clone stores, selling, building, and repairing computers. I learned the workings of DOS and Windows. The promises of Microsoft for each revision of Windows would excite and then disappoint me. In 1995, I became an internet programmer and later learned Java. My experience with Macs began shortly after OS X was released. Having tinkered with Linux off and on for years, the stability of Unix coupled with a nice user interface appealed to me. I got my first Mac in 2001, spent a couple months learning OS 9.2 in order to understand some history, then plunged into OS X and never looked back. While I don't like to consider myself a "fanboy", as my friend said on the matter, "There is no fervor like that of the converted." Without further ado, here then is part one of Why-Mac.

One of the primary differences between Windows and OS X that is often overlooked is the basic way applications are run and windows handled. The Unix world uses the concept of a window manager. It decides how to arrange and display the individual windows of running applications. Though MS Windows and OS X lack a true window manager program, for ease of discussion I will nonetheless use this terminology.

The OS X window manager offers many usability and productivity advantages over Windows. As most anyone who has used a PC and a Mac knows, the running application in OS X displays its menu options, File, Edit, et cetera, at the very top of the screen. Windows on the other hand, puts these options within the window of the program. Ergonomics experts talk about Fitts's Law, which calculates the amount of time for a desired target to be accessed when doing something like moving a mouse. It has been shown that having these common options on a border makes them easier and faster to access.
Safari windows revealed by Exposé.
The next OS X feature that is often overlooked is how multiple documents within one program are handled. Unlike Windows, Mac OS distinguishes between an application and its separate documents. This enables several advantageous usage scenarios. Take the Safari web browser, for example. If several separate windows are opened, they can be quickly switched between by using Command and ~, the tilde key, (i.e. Apple-~). To view the open windows graphically, press F-10 to activate what Apple calls Expose, which also gives the ability to click on a desired document. If you want to switch to a different program altogether, say going to iTunes to change playlists, pressing and holding Command-Tab shows the current apps. Sensibly, they are shown only once, not once for each open document. Similarly, the Dock shows running applications, not their individual windows.
Alt-Tab reveals running applications.
There is even more granularity available, though. Minimizing a document by pressing the yellow minus sign removes it from this internal list, so it no longer appears in Exposé or when switching with Command-~. This is useful, for example, when there is a website I want to read but not right at the moment. A tiny screenshot of the minimized window appears in the Dock, complete with the icon from its parent application to make distinguishing it easier.
Safari windows minimized in the Dock.
OS X has also retained the Macintosh feature of hiding an application. Pressing Command-H makes a program hide. Its minimized windows are removed from the Dock (though the program's icon remains), and Exposé no longer shows any of its documents. The program can be unhidden by selecting it with Alt-Tab or clicking on the Dock icon.

The differentiation between windows and applications provides still more benefits. Pressing Command-W on a Mac will consistently close only the current document window. Pressing Command-Q will quit the entire application and close all of its documents. In MS Windows it tends to be a crap shoot whether Alt-F4 (the shortcut for closing a window) will exit just that document or the entire program. In addition, an option available only in OS X is running a program with no open documents. At first this seems nonsensical and confusing. If you close all a program's documents, it remains running with its menu bar at the top of the screen but nothing below. An obvious use for this functionality is loading a program like Photoshop and leaving it run even when no images are currently being edited. Photoshop has many plug-ins and takes a long time to load. Being able to leave it open in this way is a real productivity boost.

The newest OS X, Leopard's window manager also gives the option of placing programs on various virtual desktops. This feature is called Spaces. It provides a simple way to segregate your work into separate domains; a further option that eliminates the clutter of running many applications and makes accessing information faster and easier.

The final area of window management in which OS X excels is maximizing windows. In the Microsoft world, maximizing a window means making it take up the entire screen regardless of how much information it actually presents. In most OS X applications the documents are smart enough to resize only as much as needed. For example, when zooming in and out on images in Photoshop, a maximized image window will fit the size of the image on screen as long as there is available real estate and not cover additional space with a blank window.

This concludes part one of my Why-Mac series. Understanding window management is key to maximizing productive computer use. Mac OS X facilitates efficiency by providing the aforementioned means of organizing, viewing, and switching between applications. The rest of this series will look at more ways Macs enable a more pleasant and productive computing experience.

Saturday, April 12, 2008

Playing Games with Python and Volity.Net

A few years ago my friends and I used to get together just about every Friday night to play board games. Our old standby was Risk in all its variations. One week, however, a guy brought over a new card game he had bought called Fluxx by Looney Labs. It was fast-paced and fun and quickly became a regular at game night.

The game Fluxx on

Then about a year ago I met someone who serendipitously mentioned that she played Fluxx. She introduced me to a free online version hosted by It's a great implementation of the game, complete with the original artwork and decks from two different versions of the game., though it has largely failed to do so, aspires to build an online community for gamers interested in traditional card and board games played by computer. They have developed an infrastructure using the Jabber network for interested programmers to develop their own games. The great thing is that the implementation is open source and very expandable. There are several games I would love to see electronic versions of, and having quite a bit of programming experience, I decided to take a look.

While the games available on Volity are fairly impressive, I unfortunately found their documentation and infrastructure underwhelming. The following is a log of the steps I followed in trying to use their Application Programming Interface (API). Hopefully it will not only serve as a critique of the Volity service but also be helpful to others considering using it to implement their own games.

I found a developers' guide on the Volity wiki. The first thing to do was decide what language to use. Volity has libraries for Perl and Python. I have a passing familiarity with both, but decided to go the Python route in order to learn it better. After a bit of searching, I headed to another wiki page to download the following libraries: volity.tar.gz, games.tar.gz, zymb.tar.gz, and from another wiki (I didn't feel like dealing with a Subversion server.) Some people will recognize these as *nix compressed files, which they are indeed. They need to be ungzipped and untarred in a working directory.

Next, rather than trying to implement a whole new game off the bat, I decided to modify an existing sample in order to get a feel for the API. I chose the classic, and very simple, Rock Paper Scissors (called RPS for short in the Volity docs).

Following the tradition of many a shoddy programmer, the best documentation I eventually found was in a source code file, It explains how to get things running. It's a bit complicated (fortunately OS X includes Python, so I did not need to install it), but basically there is the concept of a Parlor. It is a specialized Jabber client that knows about one type of game and lets users sit down at a Table to play that game. Making a new game means creating a new Python class that extends the class

To get things going, I made a simple change to games/, commenting out the logic that decides the winner so that white was always victorious. In order to test my changes I had to register my Parlor with Volity's servers. This was a simple process on the Volity web site. Note that if I had created a whole new game rather than just modifying an existing game, I would also need to register a RuleSet document and a User Interface.

I fired up Gamut, the Java-based user interface application for Gamut requires a Volity user ID, which I had already created for playing Fluxx. After logging in, I chose Game/New Table At... and typed in my Volity/Jabber ID for my Parlor. The RPS interface came up. I could add a bot (computer player), take a seat, and play the game. As white I won every time, sort of.

Apparently the user interface code has its own logic for determining the winner. The Game (ie referee) knew that I won and registered that fact with the server, but the UI would show the result of the original implementation. This is obviously far from ideal, especially in a distributed system.

At this point my initiative was about spent. I explored the UI implementation for a time. It basically requires creation of an SVG file to create the graphics and Javascript to implement interface interaction. Even though for this game the interface file is surprisingly short and straightforward, dealing with two more technologies was a bit more than I was willing to bite off at the moment.

For others more adventurous than myself, I did locate the following resources. Within Gamut, selecting Game/Game Info... and clicking the UI tab tells the location of the current user interface SVG file. This can be downloaded and modified. Then choosing Game/Select New Interface... can load a local SVG file. There is also a UI tutorial available on the Volity web site, and an SVG Testbench application.

I give the Volity developers a lot of credit for creating a usable infrastructure with many good game implementations. It is also great that they have made it open source and tried to lure further developers. Unfortunately, the system fails in the way many open source projects do. The documentation is hard to locate and often incomplete, and the implementation is exceedingly complex. Granted, if I dedicated several days to understanding the intricacies of the system, I'm sure it would all be very straightforward, but in reality how many people are going to take the time to do that before getting started on a project?

In addition, to be fair, my choice of Python may have been non-optimal. The Volity reference implementation is in Perl, so that language may be better documented. There is also a developer forum available on the web site that I did not take advantage of. Overall, I found a good effort but disappointing for new development.

Wednesday, April 9, 2008

The Psychology Behind Apple's Success

Believe it or not, psychologists can watch a 10 minute conversation between spouses and predict with a high degree of accuracy which couples will remain together. Or would you believe that adding a sprig of parsley to the apostrophe in a soup can's logo can compel taste-testers to use the term "fresh" in their comments? These studies and more are described in the book Blink: The Power of Thinking Without Thinking by Malcolm Gladwell.

A couple of the stories in particular had me thinking about Apple's product lines, marketing, and psychology. Whether conscious of it or not, Steve Jobs's company does a great job of appealing to people's underlying decision-making factors in their corporate strategies. Blink illuminates some of these otherwise murky processes.

One counter-intuitive factor in decision-making is that more options does not mean greater sales. Most people would think that we would rather get exactly what we want rather than have our choices limited. However, a study by Sheena Iyengar described in Blink found just the opposite. She set up a stand selling jelly. When offered 24 flavor options, only 3% of customers made a purchase, whereas 30% of customers bought when given only six choices.

Apple follows this example in several ways. The iPod line has always been limited to three or four base models, each with only two or three capacity choices and up to five color choices. Each of these decisions has few enough options to be quite manageable. Similarly, while slightly more complicated, Apple hardware is divided into a few simple categories. There are laptops or desktops. Within each category there is a consumer-level machine and a professional model. For example, in laptops there is the MacBook and the MacBook Pro. They are named to easily distinguish the intended market. Finally, for each model there are usually three basic configurations. Advanced users can specify components more precisely, but the average consumer has only a few limited choices to make. As a final example, Apple has made a point of the confusion surrounding the numerous versions of Microsoft Vista as compared to their own latest release, OS X Leopard. Leopard comes in only one version, with all the options included.

The Aeron office chair.

On the other hand, some of Apple's choices butt up against another psychological propensity, fear of the unfamiliar. Jobs tends to take product design risks, keeping Apple on the cutting edge. An analogous situation is described in Blink with the creation of the now ubiquitous Aeron office chair. It was the first such product to incorporate many ergonomic advances. The back was designed to fit the contours of a person's body, smaller at the base and larger at the top-- the opposite of traditional chairs. The chosen material was a thin, breathable plastic stretched tight over the frame, no padding or leather as in most high-end office products. The design was rated by early users extremely high in comfort but remarkably low in aesthetics. It took quite a while for people to get used to the chair and appreciate it. As Gladwell writes, "The problem is that buried among the things that we hate is a class of products that are in that category only because they are weird. They make us nervous. They are sufficiently different that it takes us some time to understand that we actually like them."

Apple's iMac and the later Dell XPS One

Following the maxim, Think Different, Apple has not been afraid to create "weird" products. The original berry-colored iMacs, all-in-one computers, were extremely novel, and they did end up being liked by many people. The more recent LCD iMacs have set design standards copied by other companies. The Mac Cube, on the other hand, was never well-received, but its reincarnation a few years later as the Mac Mini has done quite well. Apple has also been first to dispense with older technologies. They stopped putting floppy drives in Macs while PC's continued to incorporate them for years. The recent MacBook Air, despite its high price tag, does not include any optical drive. It has been decried by many pundits for this fact, but sales have been extremely strong nonetheless. In each case it may have taken time for customers to adapt to these changes, but in most cases they eventually get entered into the collective culture as part of the standard, just as the Aeron is now a prototype for many office chairs.

The psychology of consumerism is a large and complex topic. Gladwell's book focuses more on how our snap judgments can be useful once we are trained at recognizing situations where the subconscious can lead us astray. An article in Time magazine, "The Why of Buy", further discusses the neuroscience of buying decisions. They conclude that 95% of consumer purchasing is decided subconsciously. Also, "brands are so powerful that we are sometimes more likely to buy something we identify with than something we like better or that is better for us." The Apple brand has certainly been successful at entrenching itself in consumers' psyches. Whether they are conscious of it or not, Apple has very adroitly navigated the complexities of marketing.

Monday, March 24, 2008

MS Idealists Gaining Ground

I recently commented to friends that the continual shunning of web standards by Microsoft's Internet Explorer team would surely lead to the demise of that browser in the long run. My point was that as other browsers gain market share, I think more sites will follow the standards. It seems self-destructive to be non-compliant. My thoughts were prompted by the release of the Acid3 test, which the beta of IE8 scores a whopping 18% on. The result of my comment was a brief debate that left me with an altered opinion on the state of Microsoft.

My friend referred to an article by Joel on Software. With the danger of blogging on bloggers fully recognized, I do have some comments. Joel seems to ignore a few things in his discussion of the difficulties of choosing standards (such as those measured by Acid) versus compatibility (with IE7) mode for the new IE. First, an easy solution does exist. Simply return a different string for the browser name when asked. User agent detection code in existing web sites searches for the string, "MSIE". It'd be pretty easy for version 8 to return "MicrosoftIE" or any of the 1000 variations you can think of. Then those sites looking to include the new version just update their script, while the majority of sites that would break with the newly more compliant browser treat it as an unknown standard browser.

Second, Joel bemoans the triumph of the "Idealists" when in fact it is a good thing. It should have happened when Windows 95 came out. MS tried to maintain backward compatibility with 3.1 at the expense of quality (and to sidetrack OS/2). Then, the NT kernel was supposed to eliminate the DOS layer from the consumer Windows, but this did not happen until a decade later with Vista. 

Look at Apple as a counterpoint. They have effectively abandoned their entire installed base (OS 9 "classic" apps don't work on OS X.5), switched to a new hardware platform, and with the latest OS X introduced a number of API's that will quickly make it the standard for new applications. Their numbers are up to the point that in February 2008, Apple captured 25% of the PC market by revenue. The great improvements in Macs have come from a willingness to stick to the "Ideal", and that is in a niche market.

Apple Mac share of web surfers for two years.

If Microsoft had maintained technological integrity, it could have deployed better operating systems with less regard to old software. Certainly the monopoly OS has the ability to deploy standards and have people come around. They have done this repeatedly by "embracing and extending" industry standards. The same philosophy of breaking interoperability could be used for nice (technological advancement) rather than naughty (monopoly maintenance). Stop selling XP, and Vista will catch on inevitably.

The third thing the article ignores is the fact that, for the most part the "bugs" he talks about were intentionally put into IE 7 and before in order to differentiate it and build its market share. Why people cared back then whose browser people ended up using is beyond me, but the war was so hard fought that standards were ignored, and web developers have paid the price for last decade and more. It makes perfect sense for people to be fed up with coding browser specific hacks to get a site working. Code to the standards and let the "buggy" browsers wither on the vine.

Thursday, March 20, 2008

Creativity Unleashed Through Technology

"When the tools of productivity become transparent, true creativity is unleashed."* I worked next to a guy who was so fond of this quotation that he had it scrawled on his whiteboard for several months. It has become increasingly clear to me that the advance of technology is providing more and more of these transparent tools, and, indeed, the creativity of more and more people is being unleashed.

Historically, there has always been a distinction between the artist and the rest of us. Average Joes may have enjoyed doodling, writing stories, or making up songs, but their audience was typically limited to friends and family or, at most, the local community. The main barriers between "creative professionals" and everyone else could be placed in one of two categories: expense and expertise.

The example of photography is a good illustration of the diminishing barriers to creation and distribution of artistic works. The amount of devotion and expertise required to create in the modern world has dramatically decreased. The Eastman Kodak Company revolutionized photography in 1888 by releasing a camera anyone could use. It cost $25 for the camera with 100 exposures and another $10 for developing and reloading. The company's slogan was "You press the button, we do the rest." You can't get much simpler than point and shoot, so changes in photography were evolutionary for almost a century. Then came the digital revolution. An employee at Eastman Kodak created the first successful digital camera in 1975. It weighed 8 pounds, captured black and white images at 0.01 megapixel, took 23 seconds to do so, and was never put into production. It took until 1990-91 before this technology reached consumers.

As you can clearly see from the graph, the price of digital photography drastically came down during the first decade of the technology. Now people can "press the button" and don't even need anyone else. The ease of utilizing digital photos is an equally important development. Most cameras make it trivial to hook up to a computer and download the images. Software like Apple's iPhoto, Google Pikasa, and Adobe Photoshop Elements make it easy for consumers to quickly make simple changes like cropping, removing redeye, or adjusting colors. Photos can be printed on inexpensive photo-quality ink jets, shared by email, or loaded on file sharing sites like Flickr. What used to be the expensive, reclusive process of film developing and printing can now be a simple, communal activity.

Obviously, there are myriad examples of this transition. People armed with camcorders and iMovie become celebrities on YouTube. Back in 2006, YouTube announced it was serving 100 million videos and receiving 65,000 uploads per day. Anyone with a mic and something to say can develop a following with a podcast. According to Steve Jobs last September there were over 125,000 podcast programs available on iTunes and over 25,000 video podcasts. In addition, blogging and web site creation are simple enough now that anyone can make professional-looking content for the world to read and review. Also from back in 2006, an article reported these astonishing statistics: There are over 50 million blogs. Two new blogs are created every second, and 18.6 new blog articles are posted every second.

Clearly the technology of creation is liberating many people, allowing their artistic expression to come out in the form of graphics, text, audio, and video. As technology continues to advance and simplify the creation and dissemination of such content, it certainly seems that true creativity is being unleashed for more and more people.

* I quoted the saying as best I can remember. I was unable to find a source, so it may have been something my coworker made up.

Sunday, March 16, 2008

Making a Virtual Virtual PC

Before the transition from PowerPC to Intel CPU's by Apple, Mac users had to rely on various other means if they needed to run the occasional Windows app on their computer. The most popular and practical solution was the commercial software package, Virtual PC. It was created by the company, Connectix, but subsequently purchased by Microsoft. Virtual PC would emulate a full Pentium II computer system. Unfortunately, translating instructions between processors is time-consuming and fraught with errors. The program worked for the most part, but was slow at best.

Recently, some of my friends conspired to get me voice recognition software. As I have posted in the past, here and here, my ability to type has been greatly decreased, and I have sought ways to make entering information into the computer faster and easier. Dictation is certainly a good option. It so happened that my friend had gotten a free copy of IBM's ViaVoice for Windows. The system requirements call for a 600MHz Pentium III. Obviously, my emulated Pentium wouldn't cut it.

The native Mac options for speech recognition are very limited. The company, MacSpeech, makes a product called iListen that would run on my G4 PowerBook. There is also a Mac version of ViaVoice. Unfortunately, these products have gotten fairly negative reviews and cost between $50 and $100. A new, superior product called Dictate is being released by MacSpeech, but it will only run on Intel Macs. The answer to this conundrum, my friends figured, was to just send me another computer.

So I have inherited my friend's Gateway 1.6GHz Pentium 4 with Windows XP. Since he wasn't using the computer, this became the most economical option. However, there were a couple of issues to overcome in order for this system to be useful to me.

Issue one: No wireless
First of all, my computer is set up in the garage, far away from any physical network cabling. I use the Mac's Airport card to connect to our wireless network. The Gateway, being an older desktop model, has no wireless available. Thanks to OS X's amazing networking, though, this problem was easily resolved. The first step was to connect the Gateway and the Powerbook with an ethernet cable. Normally this kind of direct connection would require a crossover cable, but I recalled reading that Mac network adaptors automatically detect when a crossover cable would be needed and adjust accordingly to use a regular cable, so I gave it a try. The next step was to enable Internet sharing in the Mac's System Preferences. This was as simple as choosing Airport from the drop-down list and clicking Ethernet for the other computer's connection. I hooked up the cable, started the sharing, and it just worked.

OS X Tiger Internet Sharing

Issue two: Only one monitor
The second issue was that I only have one monitor available (and really no room for another). Normally, I could just use my laptop's display and hook the monitor to the PC. Unfortunately, due primarily to some very rough treatment by its previous owner, my Powerbook's hinge broke, disconnecting the LCD from the computer internals and effectively rendering the display useless. Therefore, sharing the one monitor was the only option.

For several reasons I decided to continue using the Mac as my main computer and run the Gateway remotely as needed. To facilitate this I installed VNC on both systems. For the Windows VNC server, I used Alkit VNC, which allows the sharing of a single application window or the whole screen. I figured this would enable me to just have a ViaVoice window or IE window displayed within the laptop's applications. On the client side I used JollysFastVNC. Though technically just an Alpha release, this app eliminates the biggest problem in using VNC; this client is actually fast. In my limited use I have not had any problems with it. You can see the Gateway's XP desktop running half size in the screenshot beginning this post.

Final issue: No disc!
After getting everything set so I had a virtual Virtual PC, a real PC in a VNC window, it was time to install ViaVoice, the whole reason for all this effort. When I opened the box, I found a nice USB headset mic and a directional desktop mic, a user manual, and an empty CD case! When I asked my friend about it, he said he had never opened the box. Someone must have taken the disc before my friend got the package.

This last problem was one I couldn't overcome. I had successfully set up the computer, but obviously couldn't do dictation with no software. In the end I have a surprisingly responsive "virtual" Windows computing solution. Now I just need some reason for using Windows.

Thursday, March 13, 2008

Future-Proofing Applications: another purpose of design docs

I was doing some reading recently on statistics and testing, and I came upon a free online book, The Basics of Item Response Theory, by Frank B. Baker. It had originally been published in 1985, with this second edition from 2001. What had made it very popular, it said, was the availability of free, as in beer, software to use while following along with the book. The first edition application was written in AppleBasic for the Apple ][. Fifteen or so years later, the program was ported to Microsoft Visual Basic 5 for Windows 95. I don't know if the program runs on modern Windows computers. It certainly does not work on my PowerPC Mac. I found it unfortunate that a freely available educational program would be limited in this way.

Bouncing these ideas around got me thinking about how it would be possible to future-proof an application. It is clear to anyone who has worked at a large company more than 20 years old that aged software platforms are a real problem. Internally developed applications become a mainstay of business operations, but more and more quickly, it seems, the computers and operating systems to run these programs become obsolete. Companies in the situation of upgrading their computer systems can use one of several strategies. Most common, perhaps, is to port the app to a new platform. This usually involves a large expenditure in software development and user retraining and many headaches as new systems attempt to replace the old while having the kinks worked out of them. Many resist porting and end up keeping legacy systems in place long past their expected life cycle. Another possibility is to upgrade computers but keep legacy applications alive through emulation software, which can have a slew of problems of its own.

It is a fact of modern life that programming languages, operating systems, even user interface devices change over time. To truly archive the functionality of an application would require isolation from all of these factors. One such means which would work for simple applications at least, occurred to me. Basically, the idea is to record the functionality of the program in an easily read and understood design document.

To illustrate, I will create a description for a game of tic-tac-toe as a dialog between the user and the computer. This technique is similar to a Use Case, but to me is much more clear. The questions the computer asks are the parameters necessary for the program to run. Note that this example is incomplete in that the rules for deciding if the game has ended would have to be specified, but I left this out to keep it short and simple.

  • User: I want to play tic-tac-toe.
  • Computer: Do you want to be X's or O's, or should I choose?
  • U: You choose.
  • [Assign symbols randomly with an equal chance User is X's or O's.]
  • C: You are X's. You go first. Please choose a location for your X.
  • U: Middle box.
  • [See if the game has ended. If not, randomly choose one of the remaining plays.] 
  • C: I go in the upper left.
    [See if the game has ended. If not, repeat the turns until the game ends.]
  • C: You win. Do you want to play again?
  • U: No.

The important point of this trivial example is that it describes the functionality of the system while remaining entirely interface-independent. If written for the Apple ][, it would probably use a simple text prompt for user interaction. More modern computers would likely allow the user to click on the game board to mark their move. The choice of X's or O's could be made by a GUI button. The computer of the future might use synthesized speech and voice recognition to interact with the user in a very similar manner to how this dialog is written.

Even the algorithms employed can be written in plain language and left up to the programmer to implement in the most reasonable way for the current architecture. For example, assigning the X's or O's randomly in Java could entail use of java.util.Random class to perhaps check whether the next random integer is even or odd. In Python, the "random" module provides the following easy syntax: human = random.choice(['X', 'O']). As long as the implementation follows the documentation of assigning the marker with equal probabilities, the details are unimportant.

There is another advantage to such documentation. In some cases, especially in the sciences and education, the person creating a computer application is not a professional programmer. However, a domain expert could specify the exact functioning of a desired program and leave the actual implementation to others with more expertise. Even if an implementation is created, the functional specification can be made freely available, allowing others to make versions without needing access to the original source code.

Obviously, the more complex a program is, the longer and more complex its design document will be. Full-blown design languages like UML provide the standardized means to create such documentation. For applications that will be around for a long time, a proper functional specification becomes vital to allow for changes in the computing environment. This is clearly the case with many educational computer programs as well as integral business systems. Well documented design is not just for the initial implementation as most people think it is. It can also be one of the best ways to future-proof applications.

Friday, March 7, 2008

The Coming iPhone Halo Effect

The other day Apple held their much anticipated iPhone SDK Roadmap event. Executives Steve Jobs and Phil Schiller were on hand to kick things off. Around the same time Fortune magazine published an interview they did recently with Jobs. At some point during the coalescence of these two events it occurred to me just how big the SDK announcements were. They foretell the coming storm of new Mac adoption due to an iPhone halo effect.

Jobs references the so-called iPod halo effect that analysts cite as a reason for rises in Mac market share in the Fortune article, "We helped it along. But I think a lot of it is people have finally started to realize that they don't have to put up with Windows - that there is an alternative. I think nobody really thought about it that way before." Since digital music players didn't have a monopoly brand associated with them, there was no stigma in the Apple devices gaining a lion’s share of the market. As these devices become more advanced, people are starting to realize that when they have “the whole internet” in their pocket, as with the iPod Touch or iPhone, what they really have is a mini-computer; and that mini-computer is running Mac OS X, not Windows.

Back to the SDK Roadmap, it might have been more clear if Schiller had stood on stage shouting, “Developers! Developers! Developers! Developers!” in a mad frenzy like Steve Ballmer, but it still became apparent that Apple’s strategy is to bring developers into the Mac fold to build a robust application ecosystem all the way from the mobile iPhone OS up through full-fledged OS X.

A large portion of the event was taken up by developer presentations of the work they had completed in just two weeks using the new SDK. It was mentioned repeatedly how many of them had never used a Mac for development or even used Objective-C. It was also revealed, though not trumpeted loudly, that iPhone development will take place on Macs and only on Macs. Those who want to take part in building the iPhone revolution will have to become Mac users and XCode developers.

Just how lucrative this market could be and how easy it is to sign up were clearly flaunted. Apple will host, sell, distribute, and update your app if you simply register as a developer for $99. The tools are free. The developers set prices and get a straight 70% of the revenue. And of course there was “One more thing.” If the regular enticements are not enough, how about $100 million in venture capital earmarked for revolutionary iPhone apps?

Apple is pushing the Mac market from the bottom up and from the back door in. More than a few independent developers are going to be enticed by this potential revenue. They will need Macs. Many of the mobile apps will likely scale easily to full-blown OS X. Once developers are comfortable in XCode, why switch back to anything else? At the same time users are getting used to carrying around a mini Mac. With the OS, applications, and even multi-touch gestures transferring over from mobile to desktop, more and more people will find comfort in this Windows alternative. The iPhone halo could be huge.

Wednesday, February 27, 2008

Whither (or Wither?) Mac Mini?

It's been over three years since the Mac Mini was introduced. At the time it had a clear mission and was built to fit its goals. Apple was pushing hard to convert Windows switchers. The Mini filled the niche of an entry-level PC replacement priced to compete with the beige commodities. After several revisions and a price increase, it seems to me the Mini has lost its way.

In early 2005 a person could become a Mac user for $499 if they already had peripherals. A full system with 17" CRT could be had for $799 in the form of the eMac. Since the transition to Intel processors, however, Apple seems to have been sapped of its desire to compete for the low-end market. The eMac was discontinued and now the Mac Mini comes in $599 and $799 models.

The extra $100 for the modern Mini would not be so bad if it purchased a full-powered system. Unfortunately, the base model includes only an 80 GB hard drive, a combo optical drive (no DVD writer), and a graphics card using 64 MB of shared main memory (no dedicated video RAM). Even the one gigabyte of main memory is problematic in that it fills both memory slots, so upgrading means discarding the old memory.

The design of the Mac Mini is very nice; too nice in my opinion. In order to fit the components into the miniscule 6.5 x 6.5 x 2" case, more expensive laptop components have to be used. Is extreme smallness really so important? Why does anyone need a desktop system that weighs less than 3 pounds?

If Apple continues the Tuesday updates it has been releasing every week, I would like to see a Mac Mini update. The AppleTV, now priced starting at just $229, is very similar to a Mac Mini internally. Teardowns show a one GHz Intel processor, 64 MB NVidia video card, 256 MB of RAM, and a Fujitsu laptop hard drive. Obviously the Mini could have improved specs and/or a lower price.

The desktop PC market is no longer as explosive as the laptop market, but Apple could be a much larger contender by answering the wishes of many users and making a Mac Mini "Maxi". It would necessarily come in a bigger case. It would have a desktop hard drive, a full video card in a real PCI or AGP slot, and open memory slots. Ideally the case would even swing open easily like the Mac Pro, encouraging people to upgrade it. With a larger hard drive and better video card than currently offered and otherwise similar specs, the base model could still be priced back at the $499 level.

My imagined Mac Mini Maxi

Whether this would be a new product or a redo of the Mac Mini would be up to marketing, but such a formulation would demonstrate a commitment on Apple's part to continue to court Switchers. Without such a model in their arsenal, the Hackintosh becomes much more appealing to potential Mac users. Better to have a low-margin customer than no customer at all.

Wednesday, February 6, 2008

Immersive Virtual Reality Is All About the Turing Test

While the technical specifications and modes of interaction with modern computers and gaming systems continue to advance, we are still quite a long way from graphics, sound, and user interface that provide a life-like experience. Even so, a properly programmed virtual world could be extremely immersive if the focus was in the right place. Imagine a game world where it is impossible to tell which characters are controlled by real humans. If the ugly troll might be your cousin, and that swamp rat could be your neighbor's pet, while the friendly paladin might simply be a computer character, the world suddenly has some moral ambiguity.

The key to a new breed of virtual reality is the Turing test. Simply put, the idea is that a true test of artificial intelligence is whether you can interact with it and a human being and not know which one is the computer.

Most of the immersive games up to this point have primarily focused on hack and slash. World of Warcraft (or a decade ago Diablo II) allowed people to create a virtual personality and go around looking for evil to slay and treasure to liberate. Other virtual worlds focus only on the social aspect. Services like Second Life let people set up homes and environments and communicate via avatars. The web site, Virtual Worlds Review, lists almost 30 such games.

Some single player games have started to introduce the idea of players choosing their character's morality. Most notable in this genre are Black & White and Fable. Both have sequels in the works. These games were novel in their approach to the characters' interaction with the world. Stealing, killing civilians, and other "evil" acts are allowed. The game tracks a characters' behavior and changes accordingly.

An evil character in Fable has grown horns.

While it is a start for games to apply their own interpretation of ethics, having the world apply real, natural consequences seems even more interesting. If you have no idea whether that troll is computer- or human-controlled, attacking it without provocation becomes much more problematic. Say you kill a real player's troll character. He may have friends or family in the game or even the ability to be resurrected. Those characters could either seek revenge or go through the legal system and seek justice.

This would lead to many new types of game play. Being a thief stealing from both "real" and artificially intelligent shopkeepers adds a new level of potential danger. Some characters might specialize as bounty hunters, tracking down the miscreants. Even the details of a world could vary to increase player interest. Some communities could be frontier towns with only personal revenge type justice, similar to the Old West. Others would be more "civilized" and have complete systems of laws and consequences. Racial prejudice from place to place or outright war would add further interest.

All of this could be realized with existing technology if only people were allowed to play a wide variety of roles in the virtual world and the computer characters became smart enough to blend in with the humans. If Turing is satisfied, the game world would be very satisfactory.

Tuesday, February 5, 2008

Pulling My Leg, Robotically

For over four years bipedal robots have had the ability to run (defined as movement where both feet are off the ground at some point). High tech walking robots have been developed by Sony (the QRIO) and Honda (Asimo).

These developments are of more than academic interest to me because just over two years ago I lost the ability to move. On December 28, 2005, I went over a downhill ski jump, landed on my neck, and shattered a vertebra and damaged my spinal cord. After a five-hour surgery and another three months of inpatient physical therapy I slowly regained my physical function. Now I can walk slowly for short distances using a cane.

Spinal Cord Injury is more complicated than I would have imagined. My accident resulted in hemiplegia, which means paralysis of one side of the body. Doctors also call people like me "walking quads". But even paralysis has a lot more subtlety than you might expect. Some of my nerves are indeed disconnected, causing those muscles to be unresponsive and atrophy. Another result, however, is that sometimes the muscles get into a feedback loop causing an uncontrollable sputter or spasm. Still other muscles are overactive, firing all the time. This results in an inability to move the affected limb in the opposite direction.

This last is the main factor inhibiting me from walking better. My calf and hamstring are perpetually flexed, so lifting my foot and bending at the knee are very limited. In addition, for reasons I don't really understand, my balance is very poor.

If robots can be made that walk and even run and climb stairs bipedally, couldn't this technology be applied to a medical condition like mine? I can envision a cast-like legging containing robotics for helping to propel the leg forward and keeping balance. There would be some adaptation necessary to take the mechanics of a solid robot and transform them into a hollow shell. I suppose keeping the balance of a six-foot, 150-pound person would be considerably more difficult than for little Asimo, but the mechanics wouldn't have to do the job alone. The person still has some sense of balance to contribute.

Even if such uses are being developed, one major problem remains: medical technology is ridiculously priced. As an example, I recently found geared manual wheelchair wheels available online. They allow downshifting like a bicycle to facilitate climbing hills. This kind of wheel would be great for someone like me with limited upper-body strength. I checked the order form and discovered that a pair cost $5,000!

$5,000 "Magic Wheels"

Part of the problem is surely the proprietary nature of this kind of development. If it is patented technology, the manufacturers basically have a monopoly to charge whatever they want. A bigger issue, I think, is our whole health care insurance system. It is standard practice for doctors to charge more when someone has insurance than if they don't. Likewise, products that are typically paid for by insurance seem to have super inflated prices. For those of us with no or limited insurance it makes these items out of reach. I hope that some day in my lifetime our country puts an emphasis on quality of life and helping people whose lives can be greatly enhanced by some of these great developments.

Monday, January 28, 2008

Text Expansion: Wasting time trying to save time

Perhaps nothing is more irritating than trying to set up some time-saving software, having problems, and wasting lots of time resolving them. That's one reason why I found OS X so compelling when I first started using it; for the most part things just worked. Rather than fighting with the computer just to get the proper tools in place, I could actually get things done.

For reasons I'll go into some other time I have been searching for quite a while for ways to speed up my text input. My most recent endeavor was based on the idea of using text expansion to minimize the number of keystrokes I have to enter. As a special education teacher I had worked with the application Co:Writer by Don Johnston software, which does a fine job of text prediction as letters and sentences are typed. Unfortunately, a single license is $325. Since that is far too rich for my blood, I decided to set up a system of abbreviations myself. That can't be too hard, right? Guess again.

I found three programs that work as text expanders for OS X, Typinator, TypeIt4Me, and TextExpander. All are available as free trials with full licenses costing 19.95 Euros, $27, and $29.95, respectively.

All three programs work the same way. They run in the background watching your keystrokes. When you type a space, punctuation, or other defined key, the programs compare the keyboard buffer to the list of abbreviations you have defined. If there is a match, they backspace over what you have just typed, copy the expansion onto the clipboard, and paste its contents. A sound can also play when this happens.

To give you an example, I have "ty" defined as a shortcut for "thank you". When I start a new word with "ty" (typing it right after a space or other delimiter) and then type, say, a period, the text expansion program backspaces three times, deleting the delimiter and the "ty". Then it copies the expansion and the period onto the clipboard and pastes it into place, effectively replacing the "ty." with "thank you.". It may sound complicated, but it's really not.

The product pages for each program tend to emphasize the use of abbreviations for larger snippets of repetitive text like form letters. My usage goal was a little different. I wanted to use very short abbreviations for very common, but sometimes also very short, words. According to teacher school, if you take the 100 most common words in the English language, you can read (or write) 50% of all elementary text. One of the popular lists of words by frequency is Fry's First 100, named for its creator, Edward Fry. I figured that would be a good starting place for my abbreviations. Of course that is where the trouble started.

The Fry 100 Word List

I began simply enough. I had a text file of Fry's List with one word per line. The programs all had options for importing text files, so I started typing abbreviations after each word, with a comma in between. If a word was only one letter (like "I") or not easily abbreviated (like "in"), I deleted it from the list. For very common and short words I used one-letter abbreviations ("t" for "the", "n" for "and", etc.)

Unbeknownst to me, there were several problems with this. First of all, the programs would accept tab-delimited but not comma-delimited text. I had to search and replace all my commas with tabs, but not too big of a deal. Next, however, I discovered that the order I had put the abbreviation and expanded text were reversed. I didn't want to retype all of that (though it probably would have been faster in the long run), so I found a simple Java program that read in a comma delimited file and wrote it out differently and modified it to fit my needs. Unfortunately, after all of this I still had a problem with the encoding of the text. The text expansion programs would not accept Unicode, so I had to resave the file.

After all this conversion I finally had my abbreviations loaded into TextExpander. The program installs itself as a System Preferences pane and has a nice interface with some advanced features. You can decide on a "snippet" by snippet basis whether to type the delimiter and how to treat upper case. I started using the program while doing emails and blogging. As I encountered a new word that I use a lot, I would add a snippet if there was not one already. It was gratifying to hear the little beeps as I typed, knowing that I was saving keystrokes each time the sound played.

But my troubles were not over. For some reason my one-letter abbreviations were not working. It turns out that TextExpander and Typinator set a minimum of two letters for an abbreviation. While TextExpander correctly highlighted my snippets in red if I accidently created duplicates, it did not flag the one-letter snippets. This limitation eliminated much of the benefit of text expansion as I was using it. Fortunately TypeIt4Me allows single letter abbreviations, but changing programs led to another problem.

I had used TextExpander for a while and added some 50 new expansions. Once again I had new abbreviations that I had to transfer into a program. TypeIt4Me's "Open File..." would allow me to choose the TextExpander file, but no new words would appear. I took a look at the two programs' abbreviation files, both plain text XML. Both are standard Apple plists, even using the same name for most attributes. However, TypeIt4Me capitalized the first letter of each, while TextExpander did not, and XML is case-sensitive. In this case close did not count.

In my stubborn refusal to do data entry when something is already in a computer, I ended up with another time consuming solution. I took the TextExpander XML file and used XSLT to parse out each abbreviation and expansion and write them to a tab-delimited text file for import into TypeIt4Me. I'll try to be an optimist and imagine that maybe somewhere all this foolishness of mine will be useful to someone else.

I have since gotten TypeIt4Me set up to my liking. I have a shortcut key to toggle it on and off, and another to add a new abbreviation. My abbreviation file has grown to over 200 items. I have also learned not to type too fast after a replacement is triggered, or sometimes I end up typing in the middle of the copy and paste.

TypeIt4Me has a nice feature where it tracks the number of expansions done and keystrokes saved. As you can see below, it will be a while before I make up the hours spent mucking around with these programs, but I did get to polish up my Java and XML knowledge and eventually solve my problems.
TypeIt4Me shows how many keystrokes have been saved.