Some survey once showed that the dumbest question known to mankind is “Are you sleeping?” I don’t get it. That seems like a perfectly valid question. If you get no answer it means “yes” and if you get any answer at all it means “no”. Couldn’t be simpler.
No the dumbest question ever must surely be this one:
It is also probably the one question computer users are asked most often. I feel this most pointless of all questions can only be properly answered like this (click to enlarge):
I recently started using Scrivener, and it is intelligent enough to just assume that you want to keep your changes when you close a document; it automatically saves while you’re working on it. It also assumes that you are intelligent enough to use the “undo” command if you have made changes you don’t want to keep. I wish more applications would have this kind of confidence in its users.
I have been a bit harsh on MacSpeech in the past, but since then they have been bought by Nuance (makers of the excellent Dragon NaturallySpeaking dictation software for Windows). If there is anyone who can finally release a decent dictation application for the Mac, it’s them. And recently they released the rebranded Dragon Dictate 2.0. Looking forward to finally not having to launch Windows in Parallels Desktop every time I want to dictate something, this of course filled me with much joy and hope. But judging by MacSpeech’s own forums this version has caused a lot of problems for many people, first and foremost because of a bug which crashes the application when you launch it! After making absolutely sure that I can indeed get my money back within the first 30 days if the application is not working properly and am therefore in no way running the risk of giving even more money to MacSpeech for a faulty product, I bought and installed it. The aforementioned bug was easily avoided by leaving the start-up mode to “Idle – Microphone off”.
Here are the results of the first test:
She sells seashells by the seashore.
Impressive. How about this one:
How much would be debuted chuck chuck if a woodchuck could chuck wood
How much would with a booby-trapped truck if it would chop the truck would
How much would really would truck truck even good truck woodchuck would
The first one was pretty close, the rest not so much, but in all fairness it’s a very tough phrase. And all in all the accuracy is outstanding. Even better than Dragon NaturallySpeaking 10, which is only natural considering it is using the same underlying engine as Dragon NaturallySpeaking 11. The editing commands are at first confusing for someone who is used to Dragon NaturallySpeaking (when I started this post I was actually planning on doing a fair bit of complaining about them), but by now I’m pretty happy about them. There are occasional crashes and bugs, like sometimes leaving out the last character when dictating single words or punctuation (which, in the latter case, leads to a whole lot of nothing). But when Nuance fixes those I think we finally, at long last, have a good dictation solution for the Mac.
As I have mentioned before I’m not a big fan of MacSpeech Dictate. So I use Dragon NaturallySpeaking in Windows XP running under Parallels Desktop 4 when I need to dictate something. It’s working very well, but it is of course very tedious to have to copy and paste everything I dictate from Windows back into my Mac applications. Luckily Tim Harper has made tightvnc-dns, a Windows application that reroutes the generated keystrokes from Dragon NaturallySpeaking back to the Mac side. You can’t use Dragon to edit the text you dictate this way, but for shorter pieces of text it is very practical.
bjango.com has an interesting article about how and why many developers are moving their settings into the app itself. They even have some icons you can use, both for the tab bar and the toolbar.
I finally released my first iPhone app, Repetitions, today. It’s going to be very interesting to see how it does. After reading about how other apps have done I’m not very optimistic, especially since the release date of my app was set to 25 August (when it was accepted by Apple) instead of today when it was actually released. Which of course means my app now appears on page 6 of the “Health and Fitness” category in the AppStore. Where no one will find it. But I will be releasing an update soon anyway, which should put it on the first page at least for a couple of days.
I have finally updated my main website. I wanted to make it as simple and clean as possible, just like the app itself. It seems most websites try to cram as much text and images as possible onto the pages, making them a chore to read. I’m hoping to avoid that, while still providing enough information. So if anyone notices anything important that is missing, please let me know. Except for a support page, I will add that when I get back from vacation.
I finally added mySettings to GitHub, using the marvel that is hg-git. It allows me to continue using mercurial, and to push and pull from git repositories. The project on GitHub can be found here. The main place for mySettings will still be on BitBucket, I’m just uploading the code to GitHub to see if it will attract more users and contributors.
The tale of a software with potential, near-monopoly status and a lot of upset users.
MacSpeech Dictate is the only usable dictation software for the Mac. I’ve been using it since the beginning of January, and the speech recognition is pretty good most of the time. Especially considering I’m not a native speaker and have a tendency to slur. But the software has its problems. There’s a very limited set of text editing commands, and the only ones I can get to work on a regular basis are the ones for selecting words and replacing/deleting them, and moving the insertion point (but only between words). The built-in notepad is the fastest place to dictate into, but sometimes it types the words backwards, or inserts the same text repeatedly in the wrong place. And if you use it long enough it will eventually crash, leaving your carefully dictated text in binary afterlife. Dictating into Firefox leads to sudden and unexpected line breaks and spaces, same thing with Xcode, Pages from iWork is better but the only applications completely free of such frustrating appearance of unwanted whitespace are Mail and TextEdit. In TextEdit, however, moving around and selecting text is excruciatingly slow. You end up spending almost as much time waiting as dictating. Occasionally, Dictate will select all or parts of the text and remove it. The only way to teach the software new words is to write them into a text file, save it, and then open it with the Vocabulary Training command. And then hope that this time, it will work. My first user profile stopped working after two months so I had to create a new one and start from scratch. Sometimes Dictate just stops responding or starts misinterpreting everything I say, which a restart may or may not fix. It will only on rare occasions recognize the word “cell”, and never recognizes “app”. Which is inconvenient for someone who only writes about iPhone programming. And it never learns from its mistakes. There’s more, but I think I’ve made my point.
So with me and many other users experiencing serious problems with version 1.3 of a software we had paid $200 for, what do you think MacSpeech did? I will get to that, but first let me speculate about why they did it.
I’ve been working on my iPhone app lately (for performing physical exercises like the ones you get from a physiotherapist, but more about that later) so I haven’t written anything for a long time. I thought I’d rectify that by showing how to create highly customised UIs with fairly little coding. I recently added support for delegates to mySettings and that opened up a lot of possibilities, even with only one method in the delegate (for now).
As an example, here’s the configuration screen for my app:
Craig Hockenberry has also created an API for Settings views. But unlike mySettings his API creates the views from code instead of plists. Like this:
NSMutableArray *cells = [NSMutableArray array];
IFTextCellController *textCell = [[[IFTextCellController alloc] initWithLabel:@"Text" andPlaceholder:@"Placeholder" atKey:@"sampleText" inModel:model] autorelease];
IFSwitchCellController *switchCell = [[[IFSwitchCellController alloc] initWithLabel:@"Switch" atKey:@”sampleSwitch” inModel:model] autorelease];
tableGroups = [[NSArray arrayWithObject:cells] retain];
Check it out at http://furbo.org/2009/04/30/matt-gallagher-deserves-a-medal/ .