Monday, December 31, 2012

Resolution Wrap Up

So back in January I made a bunch of resolutions. Since we are getting close to the end of 2012 I thought I'd take a look back and see how I did on them.

Read Less 

Back in 2011 I read 218 books and in 2012 I read 137 books so I succeeded in reading less but how did I do on quality.

Well I almost completely cut away my Manga reading with only one Manga book making my list in 2012. Not that I don't like Manga I just overdosed on a lot of quality series last year. My percentage of technical and non-fiction books went up but I still want to do better. What I need to do is stop putting a priority on the fiction and comics I get from the library and delve into the back log of books I already have purchased.

Verdict: Tie

Exterminate, Exterminate, Exterminate

Well I did a really good job on this one. I cut down on a number of inputs that were not providing me good information. If you need help with that I recommend reading The Information Diet by Clay Johnson. I recently subscribed to a bunch more podcasts but that was for me to find some new ones and trim out some of the older podcasts I'm no longer enjoying. I slashed away at who I was following on twitter and slowly added more people over time who are in the mobile development arena. Now my twitter feed contains much more relevant information than it did last year.

Also, TV was slashed away. My PVR actually died so I no longer felt the urge to catch up on the shows that were accumulating on the PVR. Instead I only watched some truly great shows like Homeland, Luther, Game of Thrones and couldn't be bothered to keep track of what is popular now.

Verdict: Win

The Obligatory "Get in Shape" Goal

This was a pretty easy goal for me to meet. They opened up a small gym on the first floor of my office building which makes it much easier for me to get in my weekly workouts. As well I really tried to watch what I was eating. Seriously, stick with food and not food like substances and you should be good folks. As a result I'm down about 10 lbs and in better shape than I was last year.

Verdict: Win

Publish or Perish

Okay, so I ended up publishing my first app to the Android marketplace. It wasn't the app I originally intended. That app was rendered obsolete by an update to the Android OS which included the functionality in the base OS.

I did not publish my first book. I am in the process of writing it and it will be a goal for me in 2013.

Verdict: Tie

So all in all I think I did pretty good in my keeping my resolutions for 2012. A bunch of wins and ties. Here's looking forward to a better 2013!

Friday, December 28, 2012

Books I've Read in My Life

Recently Locus released the results of their all century polls for the 20th and 21st centuries. It is an excellent list of books and I'm going to reproduce it here with the books I've read from the list bolded. Out of the 140 books I've read 116 of them. Lemme know which ones I've missed and should circle back towards.


20th Century Sci-Fi Novel (41 of 50)
1 Herbert, Frank : Dune (1965)
2 Card, Orson Scott : Ender's Game (1985)
3 Asimov, Isaac : The Foundation Trilogy (1953)
4 Simmons, Dan : Hyperion (1989)
5 Le Guin, Ursula K. : The Left Hand of Darkness (1969)
6 Adams, Douglas : The Hitchhiker's Guide to the Galaxy (1979)
7 Orwell, George : Nineteen Eighty-Four (1949)
8 Gibson, William : Neuromancer (1984)
9 Bester, Alfred : The Stars My Destination (1957)
10 Bradbury, Ray : Fahrenheit 451 (1953)
11 Heinlein, Robert A. : Stranger in a Strange Land (1961)
12 Heinlein, Robert A. : The Moon Is a Harsh Mistress (1966)
13 Haldeman, Joe : The Forever War (1974)
14 Clarke, Arthur C. : Childhood's End (1953)
15 Niven, Larry : Ringworld (1970)
16 Le Guin, Ursula K. : The Dispossessed (1974)
17 Bradbury, Ray : The Martian Chronicles (1950)
18 Stephenson, Neal : Snow Crash (1992)
19 Miller, Walter M. , Jr. : A Canticle for Leibowitz (1959)
20 Pohl, Frederik : Gateway (1977)
21 Heinlein, Robert A. : Starship Troopers (1959)
22 Dick, Philip K. : The Man in the High Castle (1962)
23 Zelazny, Roger : Lord of Light (1967)
24 Wolfe, Gene : The Book of the New Sun (1983)
25 Lem, Stanislaw : Solaris (1970)
26 Dick, Philip K. : Do Androids Dream of Electric Sheep? (1968)
27 Vinge, Vernor : A Fire Upon The Deep (1992)
28 Clarke, Arthur C. : Rendezvous with Rama (1973)
29 Huxley, Aldous : Brave New World (1932)
30 Clarke, Arthur C. : 2001: A Space Odyssey (1968)
31 Vonnegut, Kurt : Slaughterhouse-Five (1969)
32 Strugatsky, Arkady & Boris : Roadside Picnic (1972)
33 Card, Orson Scott : Speaker for the Dead (1986)
34 Brunner, John : Stand on Zanzibar (1968)
35 Robinson, Kim Stanley : Red Mars (1992)
36 Niven, Larry (& Pournelle, Jerry) : The Mote in God's Eye (1974)
37 Willis, Connie : Doomsday Book (1992)
38 Atwood, Margaret : The Handmaid's Tale (1985)
39 Sturgeon, Theodore : More Than Human (1953)
40 Simak, Clifford D. : City (1952)
41 Brin, David : Startide Rising (1983)
42 Asimov, Isaac : Foundation (1950)
43 Farmer, Philip Jose : To Your Scattered Bodies Go (1971)
44 Dick, Philip K. : Ubik (1969)
45 Vonnegut, Kurt : Cat's Cradle (1963)
46 Vinge, Vernor : A Deepness in the Sky (1999)
47 Simak, Clifford D. : Way Station (1963)
48 Wyndham, John : The Day of the Triffids (1951)
49* Keyes, Daniel : Flowers for Algernon (1966)
49* Delany, Samuel R. : Dhalgren (1975)

20th Century Fantasy Novel (35 of 50)

1 Tolkien, J. R. R. : The Lord of the Rings (1955)
2 Martin, George R. R. : A Game of Thrones (1996)
3 Tolkien, J. R. R. : The Hobbit (1937)
4 Le Guin, Ursula K. : A Wizard of Earthsea (1968)
5 Zelazny, Roger : Nine Princes in Amber (1970)
6 Lewis, C. S. : The Lion, the Witch and the Wardrobe (1950)
7 Mieville, China : Perdido Street Station (2000)
8 Gaiman/Pratchett : Good Omens (1990)
9 Rowling, J. K. : Harry Potter and the Philosopher's Stone (1997)
10 Crowley, John : Little, Big (1981)
11 Adams, Richard : Watership Down (1972)
12 Goldman, William : The Princess Bride (1973)
13 Martin, George R. R. : A Storm of Swords (2000)
14 Beagle, Peter S. : The Last Unicorn (1968)
15 White, T. H. : The Once and Future King (1958)
16 Kay, Guy Gavriel : Tigana (1990)
17 Gaiman, Neil : Neverwhere (1996)
18 Wolfe, Gene : The Book of the New Sun (1983)
19 Vance, Jack : The Dying Earth (1950)
20 Bulgakov, Mikhail : The Master and Margarita (1967)
21 Rowling, J. K. : Harry Potter and the Goblet of Fire (2000)
22 Tolkien, J. R. R. : The Silmarillion (1977)
23 Leiber, Fritz : The Swords of Lankhmar (1968)
24 Jordan, Robert : The Eye of the World (1990)
25 Donaldson, Stephen R. : Lord Foul's Bane (1977)
26 Bradbury, Ray : Something Wicked This Way Comes (1962)
27 Peake, Mervyn : Gormenghast (1950)
28 Rowling, J. K. : Harry Potter and the Prisoner of Azkaban (1999)
29 Powers, Tim : The Anubis Gates (1983)
30 Martin, George R. R. : A Clash of Kings (1998)
31 Bradley, Marion Zimmer : The Mists of Avalon (1983)
32 Hobb, Robin : Assassin's Apprentice (1995)
33 Pratchett, Terry : The Colour of Magic (1983)
34 Holdstock, Robert : Mythago Wood (1984)
35 King, Stephen : The Stand (1978)
36* L'Engle, Madeleine : A Wrinkle in Time (1962)
36* Pratchett, Terry : Small Gods (1992)
38 Howard, Robert E. : Conan the Barbarian (1950)
39 Ende, Michael : The Neverending Story (1983)
40 Peake, Mervyn : Titus Groan (1946)
41 McCaffrey, Anne : Dragonflight (1968)
42 Orwell : George : Animal Farm (1945)
43 Feist, Raymond E. : Magician (1982)
44 Silverberg, Robert : Lord Valentine's Castle (1980)
45 Lovecraft, H. P. : At the Mountains of Madness (1936)
46 Swanwick, Michael : The Iron Dragon's Daughter (1993)
47 King, Stephen : The Shining (1977)
48 Garcia Marquez, Gabriel : One Hundred Years of Solitude (1970)
49 Saint-Exupery, Antoine de : The Little Prince (1943)
50 Hughart, Barry : Bridge of Birds (1984)

21st Century Sci-Fi Novel (14 of 20)

1 Scalzi, John : Old Man's War (2005)
2 Stephenson, Neal : Anathem (2008)
3 Bacigalupi, Paolo : The Windup Girl (2009)
4 Wilson, Robert Charles : Spin (2005)
5 Watts, Peter : Blindsight (2006)
6 Morgan, Richard : Altered Carbon (2002)
7 Collins, Suzanne : The Hunger Games (2008)
8 Gibson, William : Pattern Recognition (2003)
9 Mieville, China : The City & the City (2009)
10 Stross, Charles : Accelerando (2005)
11 Mitchell, David : Cloud Atlas (2004)
12 McDonald, Ian : River of Gods (2004)
13 McCarthy, Cormac The Road (2006)
14 Harrison, M. John : Light (2002)
15* Willis, Connie : Black Out/All Clear (2010)
15* Chabon, Michael : The Yiddish Policemen's Union (2007)
17* Simmons, Dan : Ilium (2003)
17* Niffenegger, Audrey : The Time Traveler's Wife (2003)
19* Doctorow, Cory : Little Brother (2008
19* Ishiguro, Kazuo : Never Let Me Go (2005)


21st Century Fantasy Novel (16 of 20)
1 Gaiman, Neil : American Gods (2001)
2 Clarke, Susanna : Jonathan Strange & Mr Norrell (2004)
3 Rothfuss, Patrick : The Name of the Wind (2007)
4 Mieville, China : The Scar (2002)
5 Martin, George R. R. : A Feast for Crows (2005)
6 Rowling, J. K. : Harry Potter and the Deathly Hallows (2007)
7 Bujold, Lois McMaster : The Curse of Chalion (2001)
8 Mieville, China : The City & the City (2009)
9 Fforde, Jasper : The Eyre Affair (2001)
10* Bujold, Lois McMaster : Paladin of Souls (2003)
10* Pratchett, Terry : Night Watch (2002)
12 Gaiman, Neil : Coraline (2002)
13* Wolfe, Gene : The Wizard Knight (2004)
13* Abercrombie, Joe : The Blade Itself (2006)
15 Pratchett, Terry : Going Postal (2004)
16* Gaiman, Neil : The Graveyard Book (2008)
16* Lynch, Scott : The Lies of Locke Lamora (2006)
18 Jemisin, N. K. : The Hundred Thousand Kingdoms (2010)
19 Le Guin, Ursula K. : Lavinia (2008)
20 Sanderson, Brandon : Mistborn (2006)




Tuesday, December 18, 2012

What's New in PhoneGap Android 2.3.0

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

1. InAppBrowser – includes events

More details here. In a nutshell, this has the same functionality as the ChildBrowser, and has events support as well. It supports this simplified spec. Also, the InAppBrowser does not use the app whitelist. Example usage:
2. Device API changes

Minor changes as specified here. For Android, device.name is now deprecated for all platforms. For all platforms, there is a new property called device.model which returns what device.name used to return.

3. Various Bug Fixes
  • Searching for emails in Contacts throws an exception always errors out
  • Create script improvement: Display usage and exit when no arguments given
  • Fixed adding a Photo from a HTTPS address to Contact
  • Fixed NPE in onReceivedError with non local errorUrl
  • Camera.getPicture gives error when get a picture from photo library with spaces in its name on Android is now fixed
  • Online/Offline events now fire on subsequent pages of an app
  • fixing cordova commands for paths with spaces in them
  • FileEntry.moveTo across file systems incorrectly calls the success callback

Friday, December 14, 2012

Things I've Listened to This Week

I thought I would change it up a bit this week and delve into some of the new podcasts I tried out this week. At work I listen to podcasts almost exclusively as I need something to drown out the white noise that they play in our building. Apparently, it is a good thing but it actually drives me nuts. Since I've already got my two front teeth all I want for Christmas is a pair of noise cancelling headphones.

After you look at these mini-reviews lemme know what other podcasts you think I'd enjoy or which ones you really like.


Freakonomics Radio I loved the books so I figured I'd try out the podcast. I'm not 100% sure on this one though.

Verdict
: Going to listen to a few more episodes before deciding.
Girl on Guy well I love the TV show Archer and I've heard an interview with Aisha Tyler on The Nerdist and thought she was great. Then I listened to her talk with nerd godess Felicia Day and was blow away. Then in the second episode she talked to Seth Green. This is a fantastic podcast go listen.

Verdict: Keeping it on the playlist.
Good Job, Brain! A trivia podcast! Sold! I've listened to two episodes so far and I really loved it. I'm a trivia buff and I've probably got more useless knowledge than any two people you know put together.

Verdict: Keeping it on the playlist.
NPR Fresh Air is an interview podcast with folks from popular culture. The first episode I listened to had guest Judd Apatow which was enough to get me hooked.

Verdict: Going to listen to a few more episodes before deciding.
NPR How to do Everything is an odd little podcast which is funny while at the same time informs you.

Verdict: Going to listen to a few more episodes before deciding.
Stuff You Should Know I've tried to like this podcast before and even after a second go around I think I'm going to pass on this one again. You would think that a podcast about obscure stuff would be right up my alley. Sadly I think the issue is that I don't identify with the hosts.

Verdict: Deleted.
WNYC RadioLab a mismatch of stories. Not sure what to think about it yet.

Verdict: Going to listen to a few more episodes before deciding.
WTF with Marc Maron well I really love the Nerdist podcast so I thought I'd give another of the top rated comedy podcasts a try and I wasn't disappointed. Maron does a great job interviewing his comedian friends and the show is downright hilarious.

Verdict: Keeping it on the playlist.

Friday, December 7, 2012

Books I've Read This Week

Double Cross: The True Story of the D-Day Spies by Ben MacIntyre is a bit of a companion piece to Operation Mincemeat which is another book by spies in WWII that I highly recommend. In Double Cross we learn all about the spies that England was running during WWII including the ones that Germany thought they were running but were actually English spies or completely fabricated by the English. It is a great book that tries to make sense of the twisting lives of spies, double and triple agents.
Two Generals by Scott Chantler is a fascinating look at the life and memories of Law Chantler, the authors grand father, during his time in WWII. It's beautifully drawn and follows Law as his regiment takes part in D-Day. It's stories like this that make me very proud of Canada's accomplishments during WWII.

Thursday, December 6, 2012

How to Get the Device's Phone Number Using PhoneGap Android

I was a bit surprised when three people asked me how to do this in one day. I figured if there was enough interest in it then maybe it deserved a post of it's own. Basically you want to know the primary phone number of the device your app is running on. In order to do that in PhoneGap you will need to write a plugin to access the TelephonyManager service on Android.

As always the code for this plugin is is GitHub at my TelephoneNumberPlugin repo. If you'd rather have a more detailed walk through please read on.
First up let's code our JavaScript interface which we will use to get the telephone number. We'll setup a new interface at "cordova/plugin/telephonenumber" to avoid name collisions. Then the rest is fairly boiler plate code where we declare and error object that we won't even use and finally provide a get method. When you call the get method you should provide a success callback. The success callback will be invoked with a string that will contain the devices phone number. If something goes wrong the failure callback will be invoked.

I've extracted the execute method from TelephoneNumber.java which extends from the new CordovaPlugin interface. The method is fairly self explanatory. If the device has a phone number it will be returned. If not the error call back is invoked with the NO_TELEPHONE_NUMBER error code. If you try to call anything other than "get" on this class you'll get a INVALID_ACTION error.

In order to use this plugin you'll need to include the telephonenumber.js in your HTML as a script tag:

and add a line to res/xml/config.xml to tell the JavaScript side where to find your Java class:

and if you don't already have READ_PHONE_STATE as a permission in your AndroidManifest.xml you will need to add it as well.

Now you should be able to get your devices phone number. Here is some sample code that writes the phone number out to the console:

Wednesday, December 5, 2012

Speaking at Decembers OttawaJS

Hey, if you are in Ottawa I'll be speaking at the next OttawaJS meeting. The meeting will be held on Wednesday December 12th at 6:30pm at the gorgeous Shopify offices. My talk is all about developing speech recognition web apps which of course is me pulling the guts of my Android app, Anna, and making it work in the browser.

It should be a good time so if you can make it out it'd be great to talk with you.