Tuesday, January 24, 2012

Apple: This Hard to Find Evidence Suggests You Should Release iBooks for Mac OS X

Top Free in the Mac App Store
Look at the image on the left of the Top Free apps in the Mac App Store. Notice anything?

Number 1 with a bullet is iBooks Author. Look further down. Number 5 is Kindle. That's like oil and water. You know what would be nice to have as Number 1 or Number 2. iBooks! iBooks Author and iBooks are two tastes that taste great together.

I can think of reasons why Apple might not release iBooks for Mac OS X, but none of them make much sense to me. If Apple wants to take on Amazon and Kindle for eBook supremacy, they have to broaden the reading platform off of just iOS.

I would have bet real money that iBooks for at least Mac OS X was going to be released at the Education event. Clearly I would have lost big.

I'd like to be able to read iBooks on Mac OS X, even if it's just for the occasional reference. Clearly the Mac App Store proves Kindle book readers aren't just reading on their Kindles.

This is What's Wrong with Hollywood: Where are the biggest box office movies (not) streaming?

Take a look at this compilation of the Top 100 movies of 2011 and where they are available (or not) to legally stream from online. This isn't even a complete list as the studios still frequently will only put the standard definition version of a movie up on iTunes when of course an HD copy is available. Also, support for iTunes Extras is nonexistent or weak.

This is why Hollywood is losing money to piracy. There will always be people that just don't want to pay for content, but the big attraction of piracy to honest people is that it feels like everything is available. It's a better service. Seems very analogous to Napster before Apple convinced the music labels to license a very high percentage of their catalogs at reasonable prices for download. Then you have the studios trying to launch their own streaming service, while continuing to cripple the established services out there.

Hollywood has crippled the legal download sites with this quagmire of availability, SD vs. HD, and little to no price break over buying a manufactured physical disc. Clearly the studios are trying to preserve buying physical discs or make at the least make it more enticing than downloading, but it's just not going to happen anymore. The tide has turned. Add to that the complicated "windowing" that studios try to enforce on home viewing rights, and a lot of consumers just check out.

This should be obvious, but don't the studios get that most people can't and won't keep track of the studios windowing schedule? Once you market a movie, if people want to watch that movie and they can't get it legally and at a fair price, at some point they are probably going to investigate pirating because it bypasses all the studio bullshit.

I'm not supporting pirating, but it's not hard to understand the appeal beyond just not paying for stuff.

I tried to watch Game of Thrones and this is what happened cartoon from The Oatmeal perfectly captures the problem.

Update x2
Andy Ihnatko perfectly captures what I generally try to practice regarding the byzantine content access rules, find something else to do!

Friday, January 13, 2012

Thoughts on 44 days of uptime in Mac OS X 10.7 Lion

Decided going into the Martin Luther King, Jr. Day weekend I would actually shutdown day job MacBook Pro instead of sleeping it like I had every other day for who knows how long. I only thought of doing this to save a battery charge & discharge cycle.

I wondered: "How long have I been running this instance of OS X 10.7 Lion?"

44 days was the answer Terminal command uptime gave. The MacBook Pro hadn't booted since November 30, 2011, a whole other year ago! Probably the last time I had powered it off because of Thanksgiving break.

I was kind of shocked for two reasons. I'm usually doing every 2 week beta OS updates or standard updates that require reboots. I skipped the current round because I really wanted to run stable after the OS X 10.7 Lion, Xcode 4.x, iOS 5 beta trifecta over the summer & fall. More surprising though, rebooting OS X has been completely deprecated in my mind as a useful activity unless forced to. To be fair of course, I've quit cycled a few heavy use apps (here's looking at you Xcode) over this stretch. But the system has remained perfectly usable and stable. If not for the holiday, I would have just slept the Mac like I had done before.

What a contrast to the issue I have with Windows 7 on my iMac that would have necessitated some task killing after a few hours if I was really using the OS day to day.

What I'm really curios about is iOS device uptime. I don't ever turn off or reboot my iPhone or iPad except to install a software update.

I marvel at the software engineering!

Wednesday, January 11, 2012

iOS 5 Dev Warning: UITableView's Multiple Select During Editing Doesn't Work with Swipe to Delete

I attended Session 125 - UITableView Changes, Tips, Tricks at WWDC 2011. I also downloaded the video & slides of that session from the WWDC 2011 Session Videos site  (Apple developer account required) .

You can here it in the video, and being in the room, one of the, if not the, favorite moment for developers at the talk was when multiple select during editing was announced. The announcement starts at 16:51 in the talk video.

Jason Beaver immediately shows Apple's Mail application in edit mode. Why? Because that's what every developer and user that has spent any time in Mail want in their apps when editing lists of user content. 

You would expect, given the heavy references to the Mail app and how it works that what regular developers would now have in UITableView is exactly the functionality Mail supports.

But You Would Be Wrong Because Swipe to Delete is Disabled!
If you do this in your code:

self.tableView.allowsMultipleSelectionDuringEditing = YES;
or change the UITableView property in the XIB for Editing to use Multiple Selection During Editing you don't get swipe to delete.

I have no idea if that functionality was planned at WWDC and got dropped during development. The only hint you get swipe to delete won't work in the iOS 5 release documentation is the following on the allowsMultipleSelectionDuringEditing property (emphasis mine):
The default value of this property is NO. If you it to YES, check marks appear next to selected rows in editing mode. In addition, UITableView does not query for editing styles when it goes into editing mode. If you call indexPathsForSelectedRows, you can get the index paths that identify the selected rows.
So if you don't see the docs, or it just doesn't click on first read that this means no swipe to delete, you might do a whole bunch of work for no reason because you need both multiple select during edit and swipe to delete, just...like...Mail.app. I'm only saying this for a friend, of course.

Skeptical? I was too, went through all 7 stages of grief before conclusively proving it. I kept thinking: How could Apple play Lucy with the multiple select football to my Charlie Brown?

Prove it to yourself. Go download Apple's TableMultiSelect sample (Apple developer account required). Open MyTableViewController.m and paste the following three lines in (I pasted after the tableView:cellForRowAtIndexPath: method just to be tidy):

// Override to support conditional editing of the table view.

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
    return YES;

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
    return UITableViewCellEditingStyleDelete;

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
    NSLog(@"Commit Editing Style");

Run your app in the simulator and true to swipe to delete. It won't work.

Now go to line 74 and comment self.tableView.allowsMultipleSelectionDuringEditing = YES; 

BOOM, you got swipe to delete!

Next Steps
I know, file a radar or GTFO and I will, eventually. I say this not to deride Apple. UITableView is a great piece of UI programming. Whenever designing something of my own, I always ask:
What Would UITableView Do?
I wrote this to warn developers using UITableView's multiple selection functionality at the time of this writing (Xcode 4.2.1 & iOS 5.0.1) is an either or choice with swipe to delete that user's are most likely not going to be happy with. Better to stick with custom implementations unless/until Apple changes the functionality.

An workaround has been found. Default your tableView to not allow multiple select during editing so you get swipe to delete. Then in your viewController's setEditing: method, enable multiple select on your tableView. When editing is done, set your tableView back to not allow multiple select during editing.

Seems like a hack, but I've had a bunch of people tell me it works!

Monday, January 09, 2012

Integrating SharePoint with Twitter on a Corporate Intranet

Thankfully I don't have to know how to integrate SharePoint with anything right now, but if I did, I'd know who to turn to for insight.


John DeGiglio is one of the smartest people I know, and one of the most relentless developers I've ever seen. If you give him a problem, he will solve it. John and I used to write .Net apps together, and he specialized in  SharePoint. He's become an expert over the last 5 or so years.

John's recently published his first public blog articles and CodePlex projects on integrating Twitter with SharePoint.  

Twitter Displays Tweets WebPart

How this WebPart came together is documented in two blog posts hosted by Synergy Online:

Displaying Tweets on your Corparate Intranet - Part 1
Displaying Tweets on your Corparate Intranet - Part 2

John's also restarted his blog Backhand Volley at DeGiglio.biz. Unfortunately some good content was lost when Microsoft shutdown MSN/Windows Live Spaces. He didn't get the notification from MS to download his content before it was deleted.

John's also on Twitter @jdegiglio and his Tweets just went public! I expect more SharePoint or tennis focused tweets, John's a huge tennis fan.