Friday, November 5, 2010

From the Crazy Idea Lab


Over the last couple of days, an idea has begun to bubble up from the bottom recesses of my brain. Preparing and putting on my presentation just reminded me how much I enjoy teaching. As a result, I'm seriously considering putting together a few tech training courses. I think I'd like to start by focusing on "Intro to iOS Programming" classes, then possibly branch out into other topic areas (Ruby on Rails comes to mind).

If anyone would be interested, please drop me a line. Also, let me know what sort of topics you would be interested in covering, as well as preferences for class length, etc.



MacTech Conference

I'm sitting in the great hall on the last day of the MacTech conference. It's been a great 3 days. I've learned a lot, and had a chance to talk to so many interesting people. My presentation went over well (though, being between sandwiched between two of the best sessions all conference, I am afraid it may have been somewhat overshadowed). It was just about the right length. I'm starting to feel presentation fatigue just as things are wrapping up.

I hope they will do this again next year.


Friday, October 22, 2010

Could Apple's App Store Lead to a More Open App Ecosystem?

The upcoming App store for Mac seems to have the internet in a mini-uproar. There seems to be a general fear that this is the narrow point of the wedge. That Apple's long term plan is to lock-down the Mac, the same way they have locked down the iPhone and iPad. And yes, that could be their end goal, but I can't help but wonder if maybe a desktop app store couldn't lead to more-open app stores across the board.

Limiting the app ecosystem makes sense for a phone. By it's very nature, its a limited device. It's OK if it can't do everything--as long as it lets me accomplish useful tasks while I'm on the run. On the other hand, users expect to get more work done on their iPads. Not surprisingly, the iOS SDK loosened up considerably with the iPad's release. Before, each application was kept entirely in its own sandbox. Now we can move files from one app to the next. It may not be complete access to the file system, but it has vastly improved the iPad's usefulness.

Soon we will have a full-blown desktop app store. Most of the excused given for limiting apps simply don't apply. We're no longer dealing with devices that have severely limited resources. We no longer need to worry about upsetting AT&T. Users don't need to jail break their computers to load applications from outside the app store. Most importantly, users will have even higher expectations on what applications can and should be able to do. This will create a considerable amount of pressure on Apple to open up the process, and despite what many people think, Apple is not immune to pressure.

In many ways, Apple is already on a slow path towards loosening restrictions on the iOS app store. They've lifted the ban on third-party languages. They've published a more specific list of their requirements. They continually add new features to the SDK that allow access to previously restricted features on iOS devices. I fully expect this trend will continue as Apple feels their way through what is obviously a tricky and difficult issue. I also expect this trend will accelerate once we have a desktop App store. It won't happen overnight, and it won't be perfect. But, I have a feeling that the Mac App Store will be a good thing for the larger App ecosystem.

Wednesday, October 13, 2010

Changing the transition animation for an UINavigationController

I love the UINavigationController class for iOS. It's a great framework for managing a wide range of view-swapping applications, and we get the transition between views for free.

But, what if we want to use a different type of transition animation? UINavigationController only has one option--the new view slides in from the right while the old view slides off the left. There's no direct mechanism, but it turns out that it's not too hard to manage, at least for a select set of transitions.

First, lets look at the UIView methods. The navigation controller has its own view, which will contain the subviews we wish to manage. in iOS 4.0 and later, we can use that view's block-based animation.


Note: when we actually call pushViewController: we are setting the animated value to NO. This disables the Navigation Controller's default animation. Instead, the block of code uses the defined transition (in this case UIViewAnimationOptionTransitionCurlDown).

The same thing can be done using iOS 2.0 or later (although, you cannot submit anything older than 2.0 at this time).

[UIView beginAnimations:@"transition" context:nil];
[UIView setAnimationDuration:1.0];


pushViewController:self.alternateView animated:NO];

[UIView commitAnimations];

Also notice, the two methods use two slightly different constants to define the view type. However, they both support the same four options: curl up, curl down, flip left and flip right.

We can get a different set of transitions by setting a transition animation for the Navigation Controller's view's Core Animation Layer.

CATransition* transition = [CATransition animation];
transition.duration = 1.0;
transition.type = kCATransitionFade;
transition.subtype = kCATransitionFromTop;

addAnimation:transition forKey:kCATransition];

pushViewController:self.alternateView animated:NO];

There's one big difference here. The other animations were local. They only affected the code within the block (or between the beginAnimations and commitAnimations calls). This is a global change, and will continue to affect the Navigation Controller's behavior until it is changed again (or cleared by setting the animation to nil).

This also has four options: fade in, move in, push or reveal. For all but the fade, you can also set the direction of motion (from the top, bottom, left or right--though the iPhone seems to reverse the top and bottom options). We've already seen the push animation--the default behavior is a push from the right. Move in simply slides the new view over the existing one. Reveal pulls the old view away, revealing the existing one. While fade simply cross-fades from one view to the next.

I really wish there was an easy way to do other animated transitions (for example, having a view appear to grow from the center of the screen, or shrink into the center of the screen). But, I suspect those would take a lot of work at the CALayer level. I made a few attempts using regular animation blocks and altering the size of the incoming view. I could get the size to animate, but the old view simply vanished, leaving my new view to appear over a white background. Not what I wanted at all.

Still, there's a lot of cool effects you could produce with just these options. Happy hacking!


Wednesday, September 29, 2010

Testing out Scrivner

So, I finally broke down and started testing out Scrivner. For those who don't know, it's basically a word processor specifically designed for writers. It allows you to organize and work on large writing projects, and it has been highly recommended by just about everyone.

So far I like it. With one exception.

Let me take a quick step back here, and say that I've listened to a lot of people talk about how the iPad is a great media consumption device, but that it sucks for media creation. I disagree. I use my iPad all the time. However, I use it differently than my desktop.

For example, brainstorming. I love MindNotes. It's the first computerized mind-mapping software that I felt was realistically useable. In fact, I now prefer it to paper. It's almost as easy to use, and I can so easily move things around, or export the results to use in other programs. In fact, my only complaint is that I cannot connect items into loops. I'd really like to be able to draw additional connections between existing nodes.

I am also a big fan of Pages on the iPhone. Don't get me wrong, I would never sit down and write anything of significant length. However, for editing documents, it is absolutely brilliant. Again, I probably prefer editing on my iPad to editing on my computer. In the old days (back when dinosaurs walked the earth--you know, the 90's), I would typically print out hard copies when editing, mark them up, then go back to the keyboard to make the changes. I find that editing on the iPad gives me almost all the advantages I found in working on hardcopies (very portable, a uni-tasking environment, easy to mark up with notes and comments), with the added bonus of removing the tedious final step. I can make the changes directly on the iPad, and just export them back.

In fact, I wish someone would develop a word processor on the iPad that really focused on making it a good editing tool. I'm not entirely sure what that would entail, but I can feel the general shape of it.

Enter Scrivner.

Scrivener, in many ways, has the ability to become an excellent editing platform. I love the way I work with scene-sized blocks of text. And it feels like there should be some sort of synergy between the outlining in Scrivner and the outlining I already perform in MindNotes. Mostly, it just feels like there should be some way of getting the peanut butter of Scrivener into the chocolate that is editing on the iPad.

But there isn't. And it doesn't sound like the folks at Scrivner have any interest in making one. And that's a sad, sad thing.

Sure, I could export the Scrivner document as a word doc, then import it into Pages on my iPad. But, I cannot round trip the document back into Scrivner (or at least, I don't know how to). And that may turn out to be a deal-breaker for Scrivner.


Tuesday, September 28, 2010

"Developers prefer Android" is Bogus

Ok, I know I'm a huge iOS fanboy, and given the amount of time and energy I've invested in learning the platform, I have a vested interest in its success. But, I'd hope that I'd be a bit miffed at these headlines, even if the situation where reversed.

Today CNet posted the following article Survey: Developers favor Android over Apple long-term.

OK, first off, let's be accurate here. There is a 59% to 35% split in the surveyed population that says Android has the best long-term outlook. Which is very different from developer's preferring Android. I prefer Lisp to Java, but its pretty obvious that Java has had the better long-term outlook.

But what really upsets me is the science behind the survey. This was a survey of 2,363 Appcelerator Titanium developers. For those of you who don't know (and I didn't until I looked into it) Appcelerator Titanium lets you write cross-platform iOS/Android applications using HTML, JavaScript and CSS. In other words, these aren't your typical iOS developers, and will be heavily biased towards people who are interested in making cross-platformed apps.

It is not surprising, given the selection bias, that Android polled favorably. Also, overall iOS didn't do too badly. You might even say it kicked ass. Here's the iOS vs. Android rundown from the poll.


Friday, September 24, 2010

MacTech Conference

If you liked my articles, come see my presentation at

Or, more importantly, come see the the presenters. It looks like it will be quite a gathering.


Throwing off the shackles of a reliable paycheck

So, the move is mostly behind us. I've traded the nice beaches of Hawaii for Houston. Somehow that feels like a step down. The beach is farther away, and the hurricanes are worse.

Still, I'm now freelancing full time. I'm trying to focus on iPad/iPhone work and tech writing, but I'm willing to stray for interesting technologies (Ruby, Smalltalk, Objective-C) or for applied AI.

So, if you know anyone who needs an iOS gunslinger for hire, let them know that I'm available.



Location:W Holcombe Blvd,Houston,United States

Friday, May 14, 2010

Has Google Wave gone the way of cold fusion?

So, I realized this morning that I hadn't logged into Google Wave since February. I was never a big wave user, even at the best of times. However, I noticed that all the waves I had been following appear to be long dead.

I don't hear much about it in the tech news lately either.

On the other hand, a quick search of with:public shows a lot of activity, so maybe it's just me. I like the idea of Wave, but seem to have trouble fitting it into my digital lifestyle.

Is it just me? Is anyone out there actually using Wave? And, if so, what do you use it for?


Thursday, May 13, 2010

Why does Apple hate MobileMe?

Ok, so I've got this new iPad. While I truely love it, there is one slight problem. Syncing documents back and forth is just a little too complicated for my tastes. But, that's OK. I mean, Apple has this other, cool technology called MobileMe. It's specifically designed to help us keep all our computers in sync. It even has an app in the app store. So, I can use MobileMe to shuffle files onto my iPad...except, the MobileMe app is still iPhone only. Oh, you can run it on the iPad, but it does not support opening files using other applications, which makes it pretty much useless.

No worries. The iPad has a full web browser. MobileMe has a full-feature web interface. I can just open up and download my files from there...except, only gives me access to an iPad specific version of the web page. Sure, it has instructions for setting up email and contact syncing, and for installing the various (iPhone only) apps. That's nice I guess. Oh, and I can even access "Find My iPhone," but I cannot access iDisk directly. Yes, that's right. I can find my iPad from my iPad, but I cannot download a PDF file and open it in GoodReader.

So, the bottom line is, there comes a time in every man's life when you just stop beating your head against the wall and start using DropBox. Just sayin'.


PS: To all the web developers whose pages redirect my iPad to a stupid mobile version. Stop! It! Now! I swear to all the TCP/IP gods, if you keep this up I will hunt you down and punch you in the throat.

Location:Spencer St,Honolulu,United States

Thursday, May 6, 2010

What would you like to see?

I'm about to start working on another set of iPhone/iPad articles. Are there any topics you'd like to see covered? Leave a note in the comments, and I'll see what I can do.


Location:Waialae Ave,Honolulu,United States

Sunday, May 2, 2010

iPad as ebook reader

When it comes to just reading text, I much prefer my Kindle. I know a lot of people say they don't notice any eye strain when reading from the iPad, but boy I sure do. Especially if I'm already tired. Now, admittedly, I will gladly spend several hours reading a good novel at one sitting, so I might not be a representative sample.

But, here's where things get interesting. I tend to read four things: novels, computer books research papers, and pen and paper RPGs. Of these, only the novel plays nice with the Kindle. The Mobi ebook format just doesn't handle the formatted text well. Yes, several computer book publishers have worked very hard to make Kindle compatible versions of their books, but the end result always feels a lot clunkier than either their epub or PDF equivalents. And many books (not to mention all research papers and RPGs) are only available in PDF. The less said about the Kindle's PDF support, the better.

With the help of some third party apps, the iPad can easily handle all three common ebook formats. It may not be the best ebook reader, but it is the one reader to rule them all. So, while I may prefer to read on my Kindle, I think I may find myself spending more and more time reading on the iPad.


Saturday, May 1, 2010

The age of the iPad

Ah, yes. I finally got my hands on an iPad. Yes, I know I'm a month late, coming to the party, but. I really wanted to wait for the 3G iPad. There's been a lot of chatter about which device users should choose. I suspect it depends on how you look at things. If the iPad is primarily a couch computer for media consumption, then WiFi is for you. If it's primarily a mobile device, then you'll want 3G. Personally, I prefer to work outside the house/office as much as possible. So, I'm mobile all the way.

I've only spent a few hours with the device so far, so it's too early to give anything but very superficial initial reactions.

In general, I love the richer UI. There are so many more possibilities than on the iPhone. But, of course, with great power comes great responsibility. Some iPad apps actually feel a lot less useful than their iPhone equivalents I'm looking at you, Mail. Admittedly, I'm trying to use Mail to manage four different email accounts. But, bopping between accounts never bothered me on the iPhone. On the iPad, however, it feels a lot clunkier.

Similarly, I love having official support for transferring documents to and from the iPad. I don't even mind having to physically plug the iPad into my computer (though Mobile Me based document syncing would totally rock...just sayin'). But, why oh why has apple forced us into a process that must be 100% manual! Ok, fine. Funnel everything through iTunes. I'm OK with that too. But please, let the app drop boxes appear as folders or drives in the finder. Or, at the very least, give us Automator or AppleScript support for slurping these files around.

Most surprisingly, I find the onscreen keyboard much more useful than I would had expected. With the help of the autocorrection, I can type at almost full speed. I mean, I've written this entire post on my iPad. I'd never have managed anything this length using the iPhone keyboard. And I'll probably get faster as I use it more. While a Bluetooth keyboard would br nice, I think I'll favor mobility over raw typing speed, and just go commando.

Well, that's it for now. I'm going to give myself a couple days to just explore the device as a user, before I really start looking at it as a developer.


Friday, February 5, 2010

iPhone Uproar Revisited

Just wanted to add a quick note.

In my last post, I poo-pooed those moaning and crying about the lack of multitasking. And, in general, I think my criticism is valid. Most people want multitasking just to say they have multitasking, not because it will actually improve or affect the experience of using the device at all.

However, there is one edge case that is rather important to some people. You cannot listen to Pandora (or similar services) and use other apps at the same time.

For me, it's not a big deal. I like Pandora, and I find this occasionally irritating. But, I have a rather large library on iTunes (the "My Favorites" playlist has nearly 24 hours of music in it alone), and I've invested a lot of time organizing playlists for different moods. And Apple's built in iPod app multitasks just fine.

But, if you're a big Pandora user, this could be a deal killer.


Friday, January 29, 2010

iPad Uproar!

Wow. Apple seems to have kicked over the beehive this time. Everyone's talking about the iPad, and I thought I would add my small voice to the roar.

My impression, it's a slick device that will be a lot of fun to use for media consumption and light content generation. I don't expect it to replace my laptop. I don't think it will change the world, but I do have an iPad-size hole in my life. Once I can get my hands on one, it will definitely be put to good use.

Interestingly, a lot of the day-after press that I have seen has been very negative. This isn't that surprising. The iPad, like the iPhone before it, is a very closed environment, and that doesn't sit well with some people. Still, some of the reaction seems to be a bit knee-jerk. And I wanted to address some of that criticism here.

It's not really mobile

OK, I'm not sure what people are complaining about. Yes, you can't fit it into your jeans pocket. Big deal. If that's what you want, buy an iPod Touch.

See, I remember the early days of mobile computing. Where you had a 25 lb. box, the keyboard clamped onto the front, and you had to heft it using a luggage-style handle bolted to the top. So maybe I have a different understanding of the word "mobile" than most folks.

Here's the thing. The iPad is smaller than my laptop. The iPad is smaller than a stack of text book. In many cases, I will be able to use it instead, greatly reducing the amount of gear that I need to lug around. To me, that's mobile.

It's just a big iPhone

Well, size has a quantity all its own. The additional screen real estate will allow developers to build applications that just wouldn't work on the iPhone.

But, even if it is just a big iPhone, so what. My iPhone has already replaced a lot of the work I used to do on my laptop. My biggest complaint, the screen is too small. Give me a bigger screen. Make it a little easier to browse the web and do email, and I'll be ecstatic. For me, one of the biggest features will be the ability to read full-page PDFs without having to squint at microscopic type. I print out a lot of research papers because I don't yet have a good alternative. If it's a two-column document I can stick it on my iPhone and zoom in on a single column at a time. That works OK. A bigger iPhone would let me comfortably read even the single-column articles.

And don't even get me started about the gaming opportunities.

So yes, a bigger iPhone would be nice.

A netbook can do everything the iPad does, and do it cheaper

This ignores the whole touch interface, the accelerometers, GPS and a host of other features. I think the touch interface is going to be a big winner here, once people actually get their hands on the device. It's a much more natural way to interact with software than the traditional mouse/keyboard combination, at least judging by the number of fingerprints I keep finding on my laptop's screen.

Being able to reposition the screen between landscape and portrait mode is also very nice. Even nicer, applications can detect this change and respond in interesting, useful ways.

It doesn't support a mouse?

You can buy the keyboard dock or link the iPad with any bluetooth keyboard (which makes Apple's tiny bluetooth keyboard suddenly very attractive). But you cannot link with a bluetooth mouse. This fact has made some peoples head explode.

Here's the thing. The iPhone OS doesn't have a mouse pointer. How would you even use a mouse. And why would you want to, when you can just tap the object directly.

A multi-touch interface allows a considerably wider range of interaction than most mice. Yes, long term mouse users may find the mouse more accurate--but, if you've ever watched a newbie use a mouse, you know that accuracy is a learned skill, not an inherent feature of the interface.

It doesn't support multi-tasking

Why is multitasking such a big deal? To me, multitasking is mostly needed when two or more applications are running on the same screen. The iPad is specifically designed to have each application take up the entire screen. And I think that's the right decision for devices like this.

So, as long as an application saves it state as you use it, restarts wherever you left off, and opens and closes quickly, moving between applications isn't a problem, even without multitasking.

Already, on the iPhone I can be writing an email, close the email-app to look up a word using a dictionary app. Copy the correct spelling, and reopen and paste the word. It's really quite seamless. I've seen bigger delays when switching tasks on multi-tasking machines. And there are definite technical advantages to only doing one thing at a time.

There is, however, one place where multitasking would be useful. Every once in a while, I find myself waiting for an application to download a big file. I would like to switch to a different app until the download was finished. It's not a big deal, but some sort of limited multitasking would be nice.

It doesn't support Flash

OK, this is the one complaint that I agree with. Mind you, I don't like Flash. I think HTML 5.0 is a much more compelling and robust technology. But, I also think it's ridiculous to expect everyone else to rewrite their web pages just because I have a new gadget.

The iPad is supposed to be a premium web-browsing tool. So, its annoying that it cannot be used to access broad swaths of the web.