iPhone Web Apps versus Native Apps

Elisabeth Ronson from O’Reilly just started a new webinar class today through creativetechs.com, called “Learn to Build iPhone Web Apps.

It’s not too late to sign up, it’s a 2 hour webinar every Tuesday at 11am PST. Viewing the webinar is free, and the course videos can be purchased at a nice price if you are enrolled now. Find more info here. The first class was today, but that was more an overview, so you could easily jump in on the next session.

One thing that Elisabeth touched on that I think needs more amplification is the question “When should I consider a Web App, and when must I build my App natively?” It turns out that for many types of informational apps, a Web App makes a whole lot of sense, and few people realize just how powerful the iPhone browser is.   So many people who want iPhone apps for their businesses or services could actually get by very nicely with a well-written Web App, it’s just that there isn’t much awareness of that option, and there aren’t a lot of designers who are savvy about Safari’s Webkit/HTML5 features.

You *can* build a web app that:

  • Has a tab bar interface to separate sections of the app.
  • Can play video.
  • Can use the accelerometer.
  • Can accept simple gestures, like a swipe.
  • Can animate UI display and interaction (acceleration, crossfades, etc.)

You *must* build a native app if your app:

  • Needs to be able to run standalone without a data connection.
  • Uses the iPhone camera for stills or video.
  • Is intended to be sold on the App Store, and/or has additional content you want to offer through the App Store.
  • Requires more sophisticated animation than WebKit provides, or uses OpenGL.
  • Has complex gesture interactions.

If your app can be done as a web app instead of a native app, you get some immediate benefits:

  • You don’t need an Apple developer’s account to develop your app.
  • You don’t have to go through the app store approval process to publish your app.
  • You don’t have to go through the app store approval process to update your app.
  • Apple is not going to stop offering your app.
  • You have a very wide range of CSS/HTML tools to choose from to do your development, and a large base of people who know CSS.
  • You can push changes to your content, pages, etc. in real time.
  • May also run on other WebKit mobile devices.  Note that Palm, Android, certain Nokia phones, and certain Blackberries all have Webkit browsers.

More on this subject as the class goes on.

Theming WordPress plug-in content

I have to say that I really like the delicious plugin (del.icio.us for WordPress, by Ricardo Gonzalez), but it didn’t quite look right in the Constructor theme that I am using. The heading didn’t match the rest of the theme headings, and there was text following the link names specifying when the link was posted, but it was indistinguishable, i.e. same style.

(Delicious.com, or del.icio.us,  is a social bookmark site, you can save bookmarks to the cloud and share them with your friends.  You tag the links, they’re searchable, your list of links is browsable, and the ability to access that cloud on your blog is a great little feature.)

Turns out when you look at the source code generated by the widget, it does have custom classes for these elements:

Delicious_title_link   -- the actual title used in the sidebar
Delicious-item    	--  the specific link list item
Delicious-link     -- the link itself
Delicious-timestamp  -- the time for the item (e.g. “36 mins ago”)

Fortunately, Constructor lets you add your own CSS rules to the theme in a separate CSS file that won’t be overwritten when you update the theme files. This is a great place for adding the rules you need.

So, I added the following to the css file, just to differentiate that time stamp with smaller italic text in a contrasting color, and to make the title link look like the other sidebar headings:

.delicious-timestamp {
font-size: smaller;
font-style: italic;
color: #2F608A
}

.delicious_title_link {
color: #2F608A;
}

Voila, now things match, and if I should build my own custom theme from scratch later, I can just lift these rules to accommodate that widget, or any other widgets with their own CSS classes.

Theming WordPress – work in progress

Still working on theming the site and installing the plug-ins I want.

I ended up selecting the theme Constructor for now, which looks relatively nice out of the box.  The theme supports several different layouts, and lets you customize a lot of things.

StockConstructorSkin StockConstructorSkin2

Here’s the same theme with a few minor adjustments, mostly different background images and font tweaks:

MyConstructorSkin1 MyConstructorSkin2

I’d spent a bunch of time scratching my head over how I might do something similar to the legos/crane motif. Finally, I found something I could isolate and put into the theme, and just went with a simple photocollage for the header file. I played with a few backgrounds, and decided to go with a bright, fairly neutral glass texture. With a couple hours of Photoshop, now the page looks more like my old one.

And, just for giggles, here’s what my test version of the site looks like with the default WordPress theme.  It’s quite boring, and requires you to shove everything off to the left side.

Boring. The only thing you can change visually is the color of that blue bar at top, you can't even just drop in your own header graphic.

Boring. The only thing you can change visually is the color of that blue bar at top, you can't even just drop in your own header graphic.

I will say that I am struggling a bit with the flow of the content inside these posts, things really fall apart if you have more than one small graphic, it seems. Perhaps I’m not doing this the easy way, I did see that wordpress has a built-in gallery function for putting a bunch of graphics in a post, but they didn’t look so good to me. Suppose my next step is to RTFM before I blame the theme or WordPress. I also think that my articles are already proving to be too long for the front page, I should use excerpts, but not sure if the theme supports that. At the very least, I may need to override some more things in the style sheet.