Friday, November 2, 2012

Books I've Read This Week

This weeks entry is a bit of an amuse-bouche as I needed to read something light between some of the weightier books I've got on the go.

Invincible Iron Man - Volume 2: World's Most Wanted - Book 1 by Matt Fraction was a bit of a mistake. I meant to get volume 1 of this run by Fraction but accidentally got volume 2 so there is no going back now! Even though I had not read the first volume which collects the first 7 issues of this comic series I was not lost upon starting to read this volume.

We pick up at a point where Iron Man/Tony Stark has been fired from his job of Director of S.H.E.I.L.D. Basically, the top cop in the world. Additionally, his multi-billion dollar company, Stark Industries, is failing and Tony has to go on the run to protect the secrets in his head from the worlds new top cop and former/current super villain Norman Osborn.

His audacious plan to protect his secrets includes erasing his memory. Dun-dun-dah!
Invincible Iron Man - Volume 3: World's Most Wanted - Book 2 by Matt Fraction picks up immediately where the last volume left off. There is a pretty interesting plot point that is continued on in this volume. As Tony continues to lose bits of his memory he has to move down the technology ladder to earlier Iron Man suits as he does not have the mental faculties to operate the more advanced armours anymore. Which is a real problem as the threats he face get exponentially more difficult to over come.

Anyway, at the end of this volume Tony is left at, arguably, the lowest point of his career. Volume 4 should be an interesting read to see how they put Tony Stark back together again.

Oh, and Salvador Larroca is the artist on both volumes. I think he is a great artist but I would be remiss if I didn't mention that some of the photo-realistic techniques he used in the book took me out of the story. It was a bit of an uncanny valley situation where the characters looked too real but not real enough. I really don't mind if my comic books look like comic books or even cartoony.

Wednesday, October 31, 2012

What's New in PhoneGap Android 2.2.0

Well we've tagged Apache Cordova 2.2.0 release candidate 2 which means that Cordova 2.2.0 will be out soon in source release form which will be followed quickly by the binary PhoneGap 2.2.0 release. Shaz wrote up a post on what's new in iOS so I was asked (shamed) to do this on for Android. So without further ado here's what you should expect on Android:

1. FileTransfer API changes

  • Added support for the onprogress event to get progress events for a FileTransfer operation
  • Added the abort function to cancel a FileTransfer operation

See the API doc.

2. Graduated the Globalization plugin to core

This plugin was previously in the phonegap-plugins repo (BB WebWorks 5, iOS, Android). The globalization object obtains information and performs operations specific to the user’s locale and timezone.

See the API doc.

3. Splashscreen API

The Splashscreen API is now formally documented for iOS and Android.

4. Android JavaScript to Java bridge improvements
  • The callback server is gone.
  • Uses events to specify when a result it ready.
  • Up to 25 times faster.
Read issue CB-638 for more information.

5. Partial support for video tag

We've been able to shim in support for the video tag. See my earlier blog post for more details.

6. Hardware acceleration is enabled by default

When you run bin/create to make a new PhoneGap Android project then android:hardwareAccelerated is set to true by default on the main activity.

See Android docs for an explanation of hardware acceleration.

7. useBrowserHistory now defaults to true

We've deprecated the current way that history is handled in Android apps in favour of the default way it is handled in the web view. To go back a page you should be using history.back(). Because of this change iframe's now work properly.

If you need to enable the old way to handle history you can set useBrowserHistory to false in config.xml.

8. Introduce CordovaPlugin class

CordovaPlugin will be replacing the Plugin class for extending PhoneGap functionality. It adds a new execute method public boolean execute(String action, String rawArgs, CallbackContext callbackContext) to enable developers passing large amounts of data to the native side provide their own JSON parser. It also cuts down on boiler-plate, makes multi-threading easier, and adds an application-wide thread-pool to CordovaInterface. Adds an onReset method that is called when top level navigation changes. This is where you should stop any long running processes like a file transfer that are no longer needed on the new page.

9. Various bug fixes
  • Back and Menu button events now fire if the cursor is inside a text view.
  • Fixed a path where the whitelist was not being checked in DroidGap.
  • FileTransfer.download now supports the trustAllHosts option to allow downloading from servers with self signed certificates.
  • Removed trailing space from contact.name.formatted.
  • Properly set contact's IM type.
  • navigator.language is now set properly when the language is switched in Android settings.

Saturday, October 27, 2012

Books I've Read This Week

Mobile First by Luke Wroblewski is a manifesto for properly designing web pages. With the advent of mobile devices we need to start thinking of smaller screens first and build our way up to larger screens. He makes a number of really good points as to why you should go mobile first and he backs it up with plenty of data. Although this isn't really a book about responsive design, for that you should check out Responsive Web Design by Ethan Marcotte for a great book on the topic. 
Disarming the Narcissist by Wendy T. Behary is exactly the type of book I needed to read. I firmly believe that the world, nay the cosmos revolves around me. You see, I am a narcissist. Now the question is does that level of self awareness make me more of an ass or less of an ass? Probably more.

So this book was very, very interesting to me. A number of things I read helped me understand better how people relate and react to my behaviour. I can honestly say the book was eye opening. I hope that I can put to use what I've learned in this book to better relate to my family and friends.

Also, if you've met me and come away with the impression that I'm a jerk. Sorry. I know ignorance is not a defence but I hope to leave you with a better impression on a second meeting.

Monday, October 22, 2012

Partial Support for the Video Tag in PhoneGap Android 2.2.0

Well if you've followed the saga of getting the video tag to work properly in the WebView on Android then you've read my post about why I created the VideoPlayer plugin and it's enhancement. Well in the upcoming PhoneGap 2.2.0 we will have better, but not perfect, support for the video tag thanks to work by Steren Giannini.

In Android 4.x you only need to set the hardwareAccelerated attribute to true in order to get true in-line video tag support on Android.

Unfortunately, in earlier versions of Android this doesn't fix the problem. So instead code has been added to the core of PhoneGap to detect the video tag and handle it better. Sadly, we are unable to play the video in-line but when a users taps on a video tag a full screen video player will be launched. In order to get back to the main app the user need only hit the back button to return to main app screen.

There are a few caveats though. The video tag will only support a single source so it will need to look something like this:
<video poster="http://path.to.my/poster.png" controls>
<source src="http://path.to.my/video.mp4">
</source> />
</video>
Additionally the source url can refer to a video on the internet using the http:// protocol or a local file using the file:// protocol. At this time videos in the assets directory are not support so something like file:///android_asset/www/video.mp4 will not work.

So again, it's not perfect but it is better than nothing. If you are getting tripped up with one of the caveats I described above the VideoPlayer plugin still works.

Friday, October 19, 2012

Books I've Read This Week

Amped by Daniel H. Wilson is an interesting novel and the second one I've read from Mr. Wilson. In a near future America, we see a growing amount of discontent between the pure humans and amplified humans or amps. In Wilson's world technology has progressed to such a degree that people are grafted with computers that solve common medical problems like bad eyesight or epileptic seizures. A political party emerges to basically discriminate against the Amped humans. There certainly is a parallel between what is going on in the novel and the discrimination against South African runner Oscar Pistorius.

The novel is full of very interesting ideas and I recommend it as a good thought provoking read.
Tapworthy: Designing Great iPhone Apps by Josh Clark may be focused on developing iPhone applications but there is a lot of great cross over advice for mobile developers. It really helps developers understand the design of good touch interfaces, how to give your app a personality, common touch gestures and the importance of a good icon.

Thursday, October 18, 2012

Ottawa-Carleton Wildlife Centre Video

My amazing wife, Kate, has put together a three minute video highlighting the Ottawa-Carleton Wildlife Centre where she's worked for the past 15 years. The OCWC is giving thanks to the Community Foundation of Ottawa on their 25 years of service in the community. Give the video a watch if for no other reason than to see pictures of cute baby animals and if you can hit the like button on YouTube it would be greatly appreciated.

Tuesday, October 16, 2012

Presenting PhoneGap at Ottawa Web Design, UX Design and Web Development

So if you are one of the few people in Ottawa who haven't heard me do my presentation on PhoneGap I will be doing it one more time this year at the Ottawa Web Design, UX Design and Web Development meetup on November 7th. The meeting will be held at The Code Factory which is at 246 Queen St. Ottawa, ON. Maybe I'll see you there.