Mobile Development is like Console Development

April 9th, 2010

It's interesting to compare the PC market with the current mobile market in terms of the technical limitations of the platforms, and how developers work within those limitations.

Back in the day, a developer could release an application that was just adequate on today's hardware, knowing that before long, the hardware would catch up. And users became used to the idea of buying software that was slow, and upgrading their hardware to run it better.

Today, it's not uncommon for the release of a new PC game to send tens of thousands of PC users out to buy more RAM, faster processors or faster video cards. Or all of the above. Sure, the game would run on their old hardware, but it wouldn't run very well. New software meant it was upgrade time.

Sometimes the software was slow because of real limitations in the current systems - the software really was pushing the technical envelope - and sometimes it was just laziness or a lack of focus on performance. In the end, the result for the user is basically the same: The software's performance was fixed and it was up to the user to make the hardware match it.

Mobile, however, is another story, and is actually a lot more like console development. An Xbox 360 or a PS3 or a Wii is your target system, and if you don't run well on the current hardware, you're dead in the market. The hardware's performance is fixed, and it's up to the developer to make the software run well on it.

I like that Apple has fairly static targets, with predictable upgrade cycles. It goes a long way towards making a stable platform. If I'm planning to write an iPad app today, there's one hardware target. It's got a certain amount of RAM, a certain CPU, a certain video chipset, and that's it. If my software runs well on that hardware, then the users are happy. If it doesn't, then users won't buy my software.

Apple's restriction of cross-compilation and code-generation for iPhone applications seems to be targeted at performance. That's the only way it makes technical sense to me anyway. It should be the developers goal to write software that runs well on the target hardware. If a particular toolkit doesn't make that possible then developers aren't going to adopt it. But if it does, and makes it easier for a developer to write software (easier than 20+ year old languages), then doesn't everyone win?

iPad

April 8th, 2010

I've been playing with the iPad for a couple of days now, and wanted to write up some first impressions.

I'm in Canada, so I couldn't just pick one up at the local Apple store (not that I have a local Apple store in Brantford - the closest is Toronto). I drive to the Apple store at the Walden Galleria in New York, about 1.5 hours from here, where they still have them in stock. The guy at the border checkpoint was as surprised as I was that they were still available, and the customs agent assessing my taxes on import (which was just the PST and GST - 13%) said "We've seen a lot of those this week". Apple must have anticipated the border-crossers and given the stores within driving range of major Canadian cities with some extra stock.

I brought it home on Tuesday and set it up, downloaded some of the apps that are available, and then kind of said "hmm, now what".

I have a laptop, and there isn't really anything that the iPad does better than my laptop.

If I'm sitting on the couch reading email or surfing the web, the laptop has this built-in stand which also serves as a keyboard. I have to hold the iPad, which makes it a bit more awkward. This could be solved with a case for the iPad - I don't have one yet - so maybe this isn't going to be a problem.

The onscreen keyboard is usable but not enjoyable to use. I'm not going to be typing out anything more than a sentence or two on it.

Browsing the web is okay, but without Flash it feels like something's missing - I always know that the next link I click on might lead to something I can't use - and I miss the easy tabbed browsing, middle-clicking on an interesting link to queue up loading it while I continue reading the article I'm reading.

But there is one thing that the iPad has that my laptop doesn't - a touchscreen. And that's the thing that makes all the difference.

There are some great games available. Plants vs Zombies, Harbor Master and The Creeps are all available from the Canadian app store in iPad optimized versions, and they look great. And interacting with these games using the touchscreen is so much nicer than using the mouse. Playing solitaire on a touchscreen is somehow more relaxing than doing it with the mouse. The iPad is an awesome casual game machine.

It's also a great kid machine - my son has been playing PvZ on the PC but the touchscreen takes a lot of the mouse dexterity problem out of the picture. He loves it.

Browsing my photo library on the iPad is a lot of fun. Apple tweaked the pinch-to-zoom gesture so it zooms much more quickly and the result is that instead of two or three gestures to zoom in on something you can usually do it in one.

I think my wife has a much different view of the iPad than I do. She finds the laptop gets too hot and is uncomfortable to use on the couch, and likes the fact that the iPad is silent and never gets hot. And technically it's her iPad, so I'm glad that she likes it.

So what's the verdict? It's a great toy, but it's not going to replace a computer for most of the things I do on a computer. On the other hand, I think Apple has created a great mainstream-friendly touch-based user interface and that's going to go a long way.

Twitter Weekly Updates for 2010-04-04

April 4th, 2010

Twitter Weekly Updates for 2010-03-28

March 28th, 2010
  • Now that Flex 4 is out: Here's a good overview of the new Spark component architecture. http://tinyurl.com/5c8ezp #
  • I like that instead of a container defining layout (like VBox, HBox) you assign a layout object to any container. #flex4 #
  • Why is the Mac so much slower browsing SMB shares than Windows? It's just a protocol... #
  • Wow - the new Photoshop content-aware fill tool is magic. http://www.facebook.com/video/video.php?v=372971674670&ref=mf #
  • It's frustrating when "Downloading Update" comes between me and what I'm trying to accomplish. #
  • The Stratford Festival website has a list of prefixes for your name that includes "Estate of". Nice to see they're not excluding the dead. #
  • Sears Canada prices are almost double Sears US prices on some items I'm looking at. Sheesh. #
  • Flex 4 collapsing panel demo done as a Spark skin. http://www.iwobanas.com/2009/09/creating-collapsible-panel-in-flex-4/ Nicely done. #
  • Learn this one ancient trick, discovered by a mom, to increase code coverage metrics in just 15 minutes a week! #

Flash Builder Keyboard Shortcuts

March 22nd, 2010

Very cool news this morning for Flex developers - Flash Builder 4 was released last night. You can get it now.

I'm a long time Visual Studio user, and I knew every keyboard shortcut I needed to know to spend my days developing software without touching the mouse. For some reason with all the time I spent developing Java and ActionScript code recently, I still hadn't figured out the essential keyboard shortcuts so I spent a few minutes with it. And for your benefit, here's what I found.

A couple of the shortcuts fall back to using Ctrl-3 (or Cmd-3 on the Mac). This opens a great Eclipse dialog that lets you type in the name of any Eclipse command, in the menus or elsewhere, and execute it. You can also abbreviate based on the capital letters in the command - so, for example, to get to the Variables view you can hit Cmd-3-vv-Enter.

There are things like Ctrl-Alt-Q-D to get to the Declarations view, but I find it easier to remember to hit Ctrl-3-DEC. Plus the Ctrl-3 window remembers previous choices so eventually if you use this view a lot it will be Ctrl-3-DE or Ctrl-3-D.

Developing

Shortcut Description
Ctrl-Space Auto-completion
Ctrl-1 Offers a menu of items that are relevant to the current cursor location. This can
include quick fixes for errors, and refactoring options. (This is more of a Java shortcut).
Ctrl-O Opens a picker for functions in the current file
Ctrl-/ Comment out (or un-comment out) the selection
Ctrl-Shift-L List ALL current keyboard shortcuts for the current context
Ctrl-. Auto-completion
Ctrl-Space Pops up a list of symbols relevant in the current context
Ctrl-Alt-Q Switch views - Pops up a list of views
Ctrl-E Opens a menu of all currently-open files for quick switching
Ctrl-Shift-R Open Resource - open any file in the workspace by typing its name
Ctrl-Shift-T Open Type - open the source for any class typing its name
Ctrl-L Go to line
F3 Go to the declaration of the current symbol
Ctrl-Q Go to last edit location

Debugging

Shortcut Description
Ctrl-Shift-B Toggle breakpoint
F11 start debugging the project whose file you're currently editing
F5 Step Into
F6 Step Over
F8 Continue Execution
Ctrl-3 Terminate Terminate execution

I'm not saying these are all the useful shortcuts - scroll through the Ctrl-Shift-L list sometime for lots more - but these are the ones I find myself using frequently.

If you are willing to touch the mouse sometime, here's a great navigation tip: Hold down Ctrl or Cmd when hovering over any symbol and it turns into a hyperlink. Click on it, and it takes you to the definition.

BTW I saw something interesting on the weekend - the Electronic Arts Download Manager, which they use for electronic software distribution on Mac and PC - uses AIR for it's GUI front end. Nice way to cut down on cross-platform development cost.

Twitter Weekly Updates for 2010-03-21

March 21st, 2010
  • WHS recovery is done. In the end I lost a 1tb hard drive without losing any data. WHS's folder duplication saved the day. #
  • Lawn tractor or garden tractor? Decisions decisions. #
  • Matthew perked up at Jon Stewart's tirade from last night when he got to the picture of Bert. #

Piñatas Today

March 21st, 2010

Matthew's 4th birthday party was yesterday, and I think his party went great.

We started a little tradition of using a piñata as part of the festivities a couple of years ago, and discovered that the piñatas they sell at party stores aren't designed to bust open when you're hitting them with a stick. They look like this:

201003210834
See the strings at the bottom? Here's how it's supposed to go: You let the kids hit the indestructible piñata with a stick a few times (or "hit mickey in the face" as Matthew liked to say), and then you let them take turns pulling the string until one of them picks the string that opens the little candy door and all the candy falls out.

Well, that's lame.

So, the first time we did this with Cookie Monster a few years ago, I pre-weakened the piñata by perforating it with a knife, so that it was easier to break open. We did this again this year and it worked great! Here's what busting open a piñata is supposed to look like:

WordPress Pain

March 15th, 2010

Exhibit A:

Akismet has protected your site from 737,580 spam comments already, and there are 2,932 comments in your spam queue right now.

Exhibit B:
201003152153-1

It's just no fun hosting my own WordPress blog these days.

Twitter Weekly Updates for 2010-03-14

March 14th, 2010
  • Jobs says no tethering an iPad to an iPhone? That's a BS move. I'm already paying for wireless data. They expect me to pay twice? #
  • Is Google Reader acting up for anyone else? When reading "All Items" it's including lots of old, already-read items. I keep seeing dupes. #
  • I bought the Mac Heist bundle. 7 Top apps worth $260+ for just $20 and got 3 cool bonus apps free! http://bit.ly/heist-it #
  • $290/hr? I shoulda been a lawyer. #
  • Looks like my Windows Home Server is dying. "An unexpected error has occurred in the Windows Home Server Storage Manager". Over and over. #
  • It takes a long time to copy 1tb of video. #
  • RBC raising credit card interest rate from 19.5% to 19.99%. Phew, 20% would have been too much. #
  • My son was playing with my iPhone. Cute. My son got my security code wrong 3x and my iPhone wiped itself. Not cute. #
  • People worried about smart meters invading their privacy? I wonder if those people live in the dark so nobody will know what room they're in #
  • "The driver has detected that device \Device\Harddisk1\DR1 has predicted that it will fail." #
  • I only need this drive to last another few hours while I get the data off... crossing fingers... #
  • Hmm, this fan seems overpriced. http://tinyurl.com/yls77c7 Is it really that good? #
  • @travelmop She's right, you know. Two isn't nearly enough. in reply to travelmop #
  • Top Gear is awesome. #
  • Google Reader is Broken: I’m not sure if there’s some functionality change that I missed or if it really is broken... http://bit.ly/aZ0oXO #
  • Saw what looked like a fireball in the trees near Sobeys in Brantford and now power is out. I guess for a while. #

Google Reader is Broken

March 13th, 2010

I'm not sure if there's some functionality change that I missed or if it really is broken, but something is really wrong with Google Reader. And it's been broken for weeks.

Here's the problem: I go to Reader, and click on All Items. It tells me there are 95 items. I scroll through them, or click "n" to move to the next item for each item, and while I am seeing some unread items, I'm also seeing a lot of items I have previously read.

To read all my 95 read items, I have to look at maybe 300-400 items.

If this problem was affecting a lot of people I'd expect to see a big thread on the Something is Broken help forum, but there's nothing there.

Is anyone else seeing this behaviour? It's making me consider looking for another way to read newsfeeds.