Life is a Mystery

23 August 2010 . Comment

Textbooks come to life

It looks like another step toward e-textbooks is under way. An app called Inkling just became available that does a great job of translating this genre to the iPad. Inkling does two things wonderfully right: (1) it cuts the spine off the textbook, freeing it from the tyranny of pages even while allowing page number references, and (2) it makes the textbook social, allowing you to not only take notes, but share those notes with friends and colleagues and let them respond.

The books Inkling presents are beautiful, if their sample of Strunk & White is any guide. If anything, they may be a bit too beautiful, since some of the functionality is so “well designed” it virtually disappears, becoming a bit hard to find. Illustrations can be very lively, multimedia can be incorporated, and by sharing notes the marginalia of these books can be shared among a whole study group.

The app is free and a lot of fun to explore, I highly recommend it. I’m not sure what the business model for book content is, or how footnotes would be handled. It would be smart if the format used were open and shared so that open source textbooks and meeting proceedings could supplement the very sparse initial catalog.

12 July 2010 . Comment

Kids code too

Google seems to understand the future. I’m afraid Apple may be missing the boat.

Many months back, soon after first starting to use the iPad, Alex and I wrote a simple little program for the pad that got rejected Apple’s App Store. After some back and forth with the App Store I wrote a note to Steve Jobs because I wanted to go on record about the danger of Apple’s tight fisted approach to development and plead for a more open approach. I was particularly worried about the impact on kids.

I am worried that we are making it impossible for kids
to fall in love with the creative side of computing. I believe that computers are instruments, like a cello or a pen, they are tools with which we create, not just consume. I have tried to raise my kids to look beyond the surface of these wonderful devices, to reach in and learn to create with them. My eldest son has come through Lego, to AppleScript, to Cocoa. My younger son has learned to experiment with Scratch. Both love their Macs, iPods, and have had a blast with the iPad.

I lamented the banning of Scratch from the App Store, and the expense kids faced if they wanted to write iOS apps. I never did get a response, but I’ve reproduced the letter itself below the fold in case you are interested.

Meanwhile, last week I started using an Google’s Nexus One phone and started paying attention to Android development options. Low and behold, today I read about Google’s App Inventor for Android project. App Inventor is a visual programming environment to allow kids to write Android apps.

I think Google understands something Apple has forgotten. It is vital that we nurture our kids’ curiosity about the devices they use. The best way to do that is to let them have some agency, to give them tools to create with those devices. Even Nathaniel, the non-coder in our family, has told me he wants to write games for his iPhone. Maybe I’ll have to get him an Android device some day if Apple does not come to its senses.

My full letter to Steve is below the fold, if you care to read it.
Read the rest of this entry »

9 July 2010 . Comment

A day with Android

Those who know me know that I am a real Apple fan, and not the sort who discovered Apple with the iPod or iPhone. I discovered Apple with the Apple ][nex, fell in love with the Macintosh, followed Steve to NeXT where I learned Unix and NExTSTEP, and was blown away when these worlds merged into the renewed Apple and Cocoa/xCode. I am an Apple fan, and a real fan of the discipline and taste Steve Jobs brings to the company.

So it is odd that at this point I am the only person in my little family without an iPhone. Mary bought an iPhone two years ago, and has loved it. This summer she upgraded to the iPhone 4, gave her old 3G to Nathaniel, and Alex bought another iPhone 4 for college. Me? I’ve got a Motorola F3, practically no phone at all! I’ve resisted the iPhone for a lot of reasons, mostly to do with monthly costs that just don’t feel justifiable to me when I spend most of my days at home basking in the glow of WiFi. My reasons also include a deep discomfort of the way Apple is running the app store, even though I love the iPhone SDK and development environment.

This year my brother got a free Nexus One at the TED conference. Although I put in my plug for it the very day he got it, I only finally got it in the mail. It seems his daughter wanted to give it a go, and brothers just can’t compete with daughters, which is as it should be! Now I have an Android phone, I slipped my SIM out of the Motorola and have been using it for a day.

The Nexus One is a beautiful machine. Not quite as beautiful as any iteration of the iPhone, but very very close. It feels good in the hand, it has a wonderful screen (until you compare it to the Retina Display of the latest iPhone), and with the Android 2.2 operating system that came out just this week, it is as peppy and responsive as any device I’ve used. Google has done a wonderful job polishing the device and the OS to work really well together. If the iPhone didn’t exist, this phone would be outstanding!

There are a number of things Android does better than the iOS operating system in the iPhone. Multitasking is much more full-fledged than even in the new iOS4, enabling all kinds of nifty features. Widgets were a revelation to me, allowing me to place essentially larger versions of app icons on my phone desktop which contain live-updating information like the next calendar entry, current weather, latest headline, or most recent tweet. This makes the Android phone useful at a glance, where the iPhone is only useful after a tap on some app or other. Android also handles notifications much more gracefully than iOS. The status bar at the top of an Android device is a live notification zone that flashes brief messages and can be pulled down like a windowshade to reveal details about past notices. I can’t tell you how often I wished that the status bar on my iPad or Mary’s iPhone was “alive” to reveal more information, the Android windowshade is brilliant.

Android’s deeper implementation of multitasking also provides the user with a very different navigation model than the iPhone.

Most iPhone apps allow you to, essentially, move back and forth through a tree of information, like a hierarchical menu structure. As you leave one app and launch another, you enter a new tree. Depending on the app, when you return it may put you back on the same branch of the tree, or it may just plop you down on the trunk again. Multitasking on iOS allows you to decide when you want to jump from one tree to another more spontaneously, and makes it easier for the developer to make sure you land on the same branch when you return, but the trees still feel very independent of one another.

It took me some getting used to, but Android is a whole different beast. In Android, the apps are not really trees, they interact, intermingle, and the navigation moves seamlessly from one app to the next. I think this is why Android has a dedicated “back” button, so you can always go back to the last thing you were looking at. If an Android app brings up a web page, a simple click on that back button returns you to the original app and the very view you were looking at. You can, in fact, retrace all your steps right back to the home page this way. The experience is much more fluid than in iOS. I find myself forgetting the boundaries between apps altogether, the device become one whole organism more than the collection of apps I feel on the iPad or iPhone.

I am surprised to find that I am a big fan of Android! But it has some equally deep flaws. Flaws that may be showstoppers for me, and certainly may cause problems for real world users.

The Nexus One was commissioned by Google and built by HTC. These are two companies that know Android inside out and have a lot of experience building what David Pogue likes to refer to as “app phones.” And yet the N1 has wretched battery life. Left fully charged on my night table it was at 36% charge the next morning. An iPhone on the neighboring night stand still showed 100% charge in the morning. I have not been able to get through a whole day of normal use (for me anyway) without running down the battery. I’ve had it for a little less than two days and have already had to charge it three times. And it charges very slowly (at least with the USB cable). This poor battery life is probably closely related to the fabulous multitasking I so enjoyed. That takes power. Apple has constrained iOS in ways that feel draconian to developers and dysfunctional to some users, but these measures are aimed at conserving energy. And it works. Apple also makes much more radical hardware decisions, such as using a non-standard battery that virtually oozes into all the free space of the iPhone to give it as much power storage capacity as possible. Some reviewers count this as a negative, but I see the resulting longevity of the device as a big positive for real world users. The battery life itself almost makes the Nexus One a loser (and you will find many Android phones suffer from the same problem, read the reviews before you buy!).

While I love the freedom and fluidity of the Android OS, I am also a longtime avid computer user with a high tolerance for complexity. I like all the options I have in Android. I can follow the subtle flow from one app domain to the next, I notice the relationships between the widgets and the apps. But I imagine to many real world users this stuff will feel like magic. Some good, some quite dark. What app do you blame when something goes wrong? Why is the phone suddenly so slow? Why does the phone ring, but the screen present no way to answer the call? Where is that setting I was looking for? Android feels like it is aimed at a tech-savvy user, much like Linux. Most of the people I know will feel much more masterful using an iOS device. And being the master of your technology is an important factor in being comfortable with it.

Finally, I hate to say it, but the Android “Market” is no “App Store.” I thought the App Store had poor navigation and search until I met Market. It is not horrible, it does the trick, but it brings no joy to the experience of finding an app. And many key apps (Skype anyone?) are missing altogether. The technology press seems to believe that this will change, that many developers are going to jump on the Android bandwagon. I’m not so sure. For one thing, they are underestimating the seductive power of xCode, Cocoa, and the iOS framework. These are all tools that are over 15 years old! They started at NeXT and have been polished to a stunning glow at Apple. Developers who now experience the Apple way are, I believe, going to find it very hard to pull away. And porting to Android is no trivial feat. It is a whole different and less forgiving development toolkit (Eclipse), with a tougher programming language (Java), and much younger toolkit (GWT). The differences in the underlying navigation paradigms I discuss above also mean that many apps have to rethink at least a few basic assumptions before they are reborn. This is not super difficult, but it is also not trivial. I think it will take a few years for Android to attract these developers, and a few years more in Apple’s hands is a pretty big iOS advantage.

That said, this is also where Apple is by far the most vulnerable. As seductive as coding for iOS can be, the endpoint is only one place: the App Store. In my view Apple has been very abusive of its oversight of the App Store. Developers are starting to get very upset and quite verbal about their displeasure. If Apple does not significantly alter its ways in the next year or two, all bets are off. They could very well lose to Android as it improves and developers are pushed out by Apple itself.

I’ll be giving Android development a whirl. I have a trivial app of my own that Apple rejected. I’ll see what it takes to make it an Android app, maybe I’ll find the tools much more of a pleasure than I imagine.

Meanwhile, my bottom line is that I really like the Nexus One and Android 2.2. It is a wonderful device. I just wish it could keep its eyes open for at least a whole day at a time!

nexusone.jpg

5 April 2010 . Comment

Post book

A few weeks ago I figured out the iPad, suggesting that, over time, books would become apps. One question I had was whether publishers would figure this out. It looks like Penguin/DK are paying attention and ready to go, based on this video I found in Nick Carr’s “The post-book book” post on his blog.

3 April 2010 . Comment

iPad: a very first impression

Our iPad arrived this morning (thank happy UPS driver) and Nathaniel had it unboxed in no time. But then he had to wait for me to get home, and this exposes the most serious downside of the iPad. It cannot be a standalone device. The first thing it asks to do, out of the box, is “sync” to a computer. In fact, that is the only thing it can do out of the box.

I’d love to say that the iPad is the computer for my mom. That it is the real computer “for the rest of us.” But that cannot be said, because to own an iPad requires also owning a full blown computer.

This model made sense for the original iPod, and even for the iPhone. But I think it is a serious shortcoming of a device as powerful as the iPad. This is a machine that should work out of the box, that should be able to be setup without a sync to another computer. I think that for the iPad to really take off, Apple will have to learn to make it a more capable standalone machine.

The ultimate insult I discovered setting up my iPad? Not even iBooks is installed! Helpfully, the iPad warned me of this when I first launched the App Store on the device, then helped me automatically download iBooks. Unfortunately, though, this download was cancelled by a request to read and “agree” to a 58 page iTunes license. Yeah, I read every word of that one (not). After that, iBooks was still not installed, so I had to go find it and install it myself.

Apple, this is not how my mom’s computer should work!

ipadsync.jpg

26 February 2010 . Comment

Code4Lib 2010

I just spent a wonderful week in Asheville, NC, attending Code4Lib 2010. Code4Lib is an energetic community of library hackers who communicate all year round via IRC, email, and other media, but like to also meet annually to grab some face time with each other and share a bit of play in the process. What struck me most about the meeting was how well Code4Lib lives up to its ethos of “no spectators.” It was a meeting that demanded real participation, not simple proximity. I wrote a report about this first look at Code4Lib, take a look if you want to know more.

code4lib.png

21 February 2010 . Comment

Wherein I figure out the iPad

I have not been alone in musing about the iPad for the past few weeks. Just what is it? What will it do? Why would I want one? What is it for? Today I stumbled upon an answer. The iPad is not a device to read electronic books, the iPad will help us invent electronic books. More “below the fold”…

ipad.png
Read the rest of this entry »

10 February 2010 . Comment

Google wants to bring fiber to your doorstep

Google today announced its Fiber for Communities initiative. They want to bring 1 gigabit per second connections (20 to 100 times faster than what most of us have access to) to 50,000 to 500,000 homes. Google figures it can (1) do something cool, (2) learn how to run a network, and (3) demonstrate the benefits of the kind of open network it advocates by putting some money where its mouth has been. This looks like a really great opportunity, now the challenge is to get our community to make a concerted response by the March 26th deadline!

8 February 2010 . Comment

Customizing the Ruby on Rails scaffold

I’m trying to learn Ruby on Rails this week. I found a wonderful book called Learning Rails that takes a non-evangelical tone, works from the ground up, and seems to match my style pretty well (also, I love the errata). But I quickly ran into an issue not covered in the book, how do I customize the Ruby on Rails scaffold?

I wanted to customize the scaffold so that I could replace the space indents with tabs (I know, silly me) and add JSON support to the scaffold. I found a post about how to accomplish this in Rails 3, but my Mac and the book both talk Rails 2. So I dug in a little bit. Here’s what I came up with for doing this in Rails 2.2.2 on a Mac.

Copy the original Ruby scaffold folder to a new folder somewhere reasonable with the name “my_scaffold”. (For the rest of these instructions you can replace “my” with anything reasonable.)

% cp -R /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails_generator/generators/components/scaffold /Users/myhome/Ruby/my_scaffold

Use a symbolic link to hook your new folder back to Ruby.

% ln -s /Users/myhome/Ruby/my_scaffold /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/rails_generator/generators/components/.

Change the name of the generator script to reflect your folder name.

% mv /Users/myhome/Ruby/my_scaffold/scaffold_generator.rb /Users/myhome/Ruby/my_scaffold/my_scaffold_generator.rb

Edit the generator script to modify the name of the object it creates. Change “ScaffoldGenerator” in the first line to “MyScaffoldGenerator” (adjust that name as necessary).

Now you have your own scaffold. You can edit any of the templates in /Users/myhome/Ruby/my_scaffold/templates and use the command “ruby script/generate my_scaffold MyObject my_field:string” to get rolling.

Note, the stylesheet.css name still conflicts with the same file in the original scaffold. If you want to resolve that conflict you can edit another line in the generator script. The line “m.template(‘style.css’, ‘public/stylesheets/scaffold.css’)” would be made to refer to your new stylesheet name and the layout template should be changed accordingly. Notice that you don’t have to change the name of the actual “style.css” file.

Fair warning, I am on day two of Ruby and Rails. I know almost nothing, so use the above hint with care. Feel free to comment if you know more and want to offer a better suggestion!

ruby.jpg

27 January 2010 . Comment

SubCalc at the App Store

As folks who read this blog know, I have been pretty hard on Apple about their overzealous policing of the iPhone App Store. Today I have a very personal reason to acknowledge a job well done. Apple took only three days to review the app Alex and I submitted on 1/25. Today SubCalc became a free app on the App Store.

SubCalc is an app to help convenors of precinct caucuses and conventions in Minnesota. The Minnesota Democratic Farmer Labor (DFL) party uses a wonderful, but bit arcane, “walking subcaucus” process that is simple enough to do, but rather difficult to tabulate.

This app calculates the number of delegates each subcaucus gets when you enter the total number of delegates your precinct or convention is allowed and how many people are in each subcaucus. The rules it follows appeared on page 4 of the DFL 2010-2011 Official Call, including the proper treatment of remainders. It makes the math involved in a walking subcaucus disappear.

The app could be used to facilitate a “walking subcaucus” or “proportional representation” system for any group.

If you don’t have an iPhone, try the “web app” version of this subcaucus calculator for at http://www.sd64dfl.org/sub/. But if you do have an iPhone or iPod Touch (or iPad!) please give SubCalc a spin!

subcalc.png

Eric Celeste / Saint Paul, Minnesota / 651.323.2009 / efc@clst.org