Showing posts with label geek. Show all posts
Showing posts with label geek. Show all posts

Tuesday, February 25, 2014

Introducing Comic Cover Muzei

If you own an Android phone you should know about the wonderful new live wallpaper app, Muzei coded by Roman Nurik. I was hooked on it from day one. You see Muzei automatically downloads and sets a new wallpaper image for you every day. By default the app will download art curated by Roman's fiancée. The first image it showed was van Gogh "The Starry Night" which is one of my favourite paintings and I'm getting a chance to see it at MOMA this summer but I digress.

After I downloaded the app I was reminded of a blog post by my buddy Raymond Camden. In the post on the Marvel Comic's API, Ray shows how to query the Marvel database and display covers. So I decided to combine chocolate and peanut butter into one awesome combination.

The Muzei app provides a way to write an extension to provide a new data source. So what I've done is to create an extension that randomly picks a Marvel Comic book cover and sets it as your wallpaper. It's called Comic Cover Muzei.


Select the data source


Set your options


Enjoy your art

Right now you can set an option to only download the images over wifi if you are worried about bandwidth usage and you can set the refresh interval from 3 to 24 hours. I've got plans to add more options to allow you to pick the character or series to pull the images from. 

Also, right now the app only uses Marvel Comic covers but I'd love to add other companies like DC, Image, etc.



Wednesday, April 3, 2013

My Home Screen

Kind of a departure from my regular posts but here is what my is currently on the home screen of my Nexus 4. Look it over and share with me what apps must be on your home screen.

Twitter - pretty obvious what this is used for. Today, hockey trade updates. Great new holo themed update released.

CIBC - my bank

theScore - out of all the mobile apps for quickly checking hockey scores (anyone see a pattern?) this one is my favourite. Apps like TSN and NHL GameCenter take too much time to load.

Untappd - one of my favourite apps built on top of the PhoneGap framework. It is a social beer check in app. Great to see what your friends are drinking and helps find new beers.

Gmail - All. The. Emails.

feedly - with the upcoming demise of Google Reader I've completely switched over to feedly for my RSS reading. It's a great app that syncs with Google Reader and has a great UI experience.

Google+ - I'm not completely sold on this app yet. I know Google wants it to be a Twitter/Facebook killer but until more of my friends start using it and the network effect takes over it won't be used as much as they'd hope.

Pocket Casts - after trying out a bunch of different podcast listening apps I've settled on Pocket Casts. It has a great UI and most importantly has variable rate playback which is a must for me. If I can't listen to podcasts at 2.0x speed I go crazy listening to the um's and ah's.

IMDB - I don't even think I can watch TV or Movies without this app. I'm constantly using it to look up what other shows/movies that actor was in.

TWN - The Weather Network, pretty useful app but it may be supplanted by the weather card in Google Now.

Starbucks - I'm a coffee addict. I use the Starbucks app to pay for my coffee fix whenever I can. Plus, it's one less card I have to carry around in my Costanza sized wallet.

OPL - Ottawa Public Library, I'm an avid reader who is constantly churning through books. Luckily Ottawa has a great public library system that feeds my addiction. Again, one less card is needed in my wallet.

Google Folder - this is my shortcut to all the other Google apps I use frequently but not enough to make the home screen like Play Music, YouTube, Calendar and People.

Instagram - currently testing out this photo service to see if it is a suitable replacement for the stock camera.

Instapaper - absolutely fantastic app for saving articles and reading them later, even when you are off line.

Play Store - with the new phone I find myself constantly installing new apps so the store has made it's way to the home screen.

So that's it. What are some of your favourite apps that I'm missing?

Tuesday, October 11, 2011

Ottawa Android PhoneGap Droidhack

On Saturday the Ottawa Android group was having our latest Droidhack. This months Droidhack was sponsored by the fine folks at Nitobi who may be better know to you as the guys who started the PhoneGap project. They sent out some nice swag in the form of shirts and stickers that were well received by the group. Since this was a themed event on PhoneGap Android Plugins I did a quick presentation to get everyone up to speed and then we got to hacking.

Most of the day I spent helping others setup their environments and getting them going with their first PhoneGap application. I was able to provide some helpful hints to Chris Saunders who works for Shopify and put together an Android Shopify plugin. I was able to spend sometime on working on my DropBox plugin for Android. So far I can login and logout of DropBox but there is still a bunch of stuff to do that I hope to get to in the next few weeks.

All in all it was a pretty good day of hacking and I think a bunch of people learned some new ways to think and got exposed to PhoneGap. Also, huge shout out to Macadamian for providing us with the office space, wifi and food for this event. I know that I and the other Ottawa Android organizers really appreciate it.

Monday, September 26, 2011

Upcoming PhoneGap Speaking Engagements

Just some updates on some places I'm going to be this year talking about PhoneGap:
If you are going to be at any of these conferences and would like to talk more about PhoneGap in depth just let me know and we'll arrange sometime to chat.

Tuesday, September 13, 2011

Droidhack with Imerj's Smartpad

On Saturday September 10th we had our latest Ottawa Android Droidhack event with participation from Imerj. They had a number of their new Smartpad devices on hand for everyone to play with and they were providing folks with their SDK.

The Imerj Smartpad is a dual screen Android device not unlike the Kyocera Echo but unlike the Echo the Smartpad does not have a flimsy hinge. The Smartpad opens like a book and doesn't require any flipping, pushing or clicking.

Although the Smartpad does not run stock Android and you will need to get the SDK from Imerj in order to take advantage of the dual screen phone. In the time I had to play with the phone I was able to get a PhoneGap application running on the device without any changes to the application or PhoneGap code.

The next Droidhack will be held on October 8th and the focus of the day will be creating PhoneGap-Android plugins. So if you've ever wanted to learn more about PhoneGap and you'll be in the Ottawa area you should stop on by.

Friday, September 9, 2011

PhoneGap Android ChildBrowser Revamp

Recently I've been spending quite a bit of time revamping the Android ChildBrowser so that it is more in line with the ChildBrowser available for iOS. The big problem was that on Android we started a new Intent to view the web page and there was no way to communicate back to the original application. This new approach uses a dialog with an embedded web view to show the new web page but don't worry you can still use the old way if you really want.

Installation of the new plugin is much the same as it was previously.

1. To install the plugin, move www/childbrowser.js to your project's www folder and include a reference to it in your html file after phonegap.{ver}.js.

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>

<script type="text/javascript" charset="utf-8" src="childbrowser.js"></script>

2. Copy the image files folder www/childbrowser to your project'w www folder. Note you need the entire folder not just the images. Feel free to provide your own images, these are only some default place holders we are providing.

3. Create a directory within your project called "src/com/phonegap/plugins/childBrowser" and copy "src/com/phonegap/plugins/childBrowser/ChildBrowser.java" into it.

4. Add the following activity to your AndroidManifest.xml file. It should be added inside the <application> tag.

<activity android:name="com.phonegap.DroidGap" android:label="@string/app_name">
<intent-filter>
</intent-filter>
</activity>

5. In your res/xml/plugins.xml file add the following line:

<plugin name="ChildBrowser" value="com.phonegap.plugins.childBrowser.ChildBrowser"/>

Once installed properly, you should be able to browse external sites. I've provided the full listing of my test html at the end of this post but for now here's a screen shot of what the app would look like:


As you can see there are three buttons. The first "Show Page" is going to give you a dialog that looks like this:


This is accomplished by calling the following JavaScript:
window.plugins.childBrowser.showWebPage(
            "http://www.phonegap.com", {
            showLocationBar: true
        });
The second button "Show Page No Toolbar" once pressed gives you a dialog that looks like this:


Which is accomplished by calling the following JavaScript:
window.plugins.childBrowser.showWebPage(
            "http://www.phonegap.com", {
            showLocationBar: false
        });
As you can see the only difference between it and the first example is that the showLocationBar parameter has been set to false. Currently this is the only optional parameter we support right now but more can be added easily if required.

Finally if you push the last button "Old ChildBrowser" you would have a new Intent being launched to handle the page view:


Now the syntax for getting the old ChildBrowser behaviour has changed a bit. It is now:
window.plugins.childBrowser.openExternal("http://www.phonegap.com");
Now this is all well and good but how does it help us communicate between the application and the child browser. To do this we provide a couple of event handler on the ChildBrowser for onClose and onLocationChanged. You provide your own functions which are called when the ChildBrowser gets a close event or a locationChanged event. For instance:
function showPage(locbar) {
    window.plugins.childBrowser.onLocationChange = locationChanged;
    window.plugins.childBrowser.onClose = closed;
    window.plugins.childBrowser.showWebPage(
        "http://www.phonegap.com", {
        showLocationBar: locbar
    });
}

function locationChanged(newurl) {
    console.log("The JS got this url = " + newurl);
}
    
function closed() {
    console.log("The JS got a close event");
}
Well I hope people find the changes useful. It should make doing oauth a lot easier. No, I don't have an example for that yet.

Thursday, September 8, 2011

There Goes a Day!

In my continuing saga to use Android only for a month straight I decided to upgrade my Samsung Galaxy S from Android 2.1 to 2.3 as the update is now available. As I mentioned in my last post Samsung Kies, the software used to upgrade your firmware, is not supported on my Mac. The solution of course was to dust off my old T61p ThinkPad and load up the Kies software on it.

At least that was fairly straight forward although nothing after that was. I plugged in my phone after installing Kies and the software could not determine my phones current firmware level. After a reboot of my phone and PC it finally identified I was running Android 2.1.

Going to the update firmware section Kies informed me I would upgrade in two steps, 2.1 -> 2.2 and 2.2 -> 2.3. Fair enough, I thought. So everything was going along swimmingly until a dialog box popped up telling me the upgrade failed and I should unplug my phone reboot and try again. Everything in my nature told me this was the wrong thing to do but I went along with it any way.

Big mistake, my phone was now bricked. I was treated with this image on my phone:


Reading up on this I was able to find out the magic three key combination of volume down, home and power that would put the phone back in download mode. Even after that no amount of prompting would get the phone to reconnect with Kies.

ARG!!!

I don't know why I bothered to try and do it the "right way". Instead I ended up following this instructions which actually worked! Basically it uses Odin to flash the firmware on my phone. After a few minutes of flashing by Odin, and a factory reset, my phone was back to working properly. Because I did a factory reset I needed to re-install all my apps but who cares the phone works again.

My first impression of Android 2.3.3 is that it fixes the issue with the GPS on my phone. I can actually get a location now!

Tuesday, September 6, 2011

Android Has a Month to Woo Me

Well my 3 year contract with Rogers came due on September 4th. I decided to have them park my number for a month while I put my iPhone away and decided to use my Android phone full time. Basically, Android has a month to woo me before I make a decision to get a fancy new Android phone or an iPhone 5.

Right now I'm using a Samsung Galaxy S running Android 2.1 and I totally threw it into the deep end right off the bat. My first day using the phone full time was on our trip from Sydney, NS back home to Ottawa, ON. The phone got used a lot to play games and look up info while we were waiting in lines and flying in planes. Sadly, on the drive home from the airport to the house the phone ran out of battery. This is a strike against the phone as this level of usage doesn't typically drain my iPhone battery down to zero.

Day two was a much more reasonable day of kicking around Ottawa but still by the end of the day the phone battery was drained. A few of my most frequently used applications on the iPhone are Twitter and Foursquare. On my Android phone Twitter crashes frequently so I switched to TweetDeck and Foursquare can never get a GPS location. So far things are not going as smoothly as I'd have like.

I'll continue to use the Android phone and see what I can do to improve it's performance and battery life. First up I'll see if I can get it upgraded to 2.3 but the Samsung software for this does not run on my Mac.

Tuesday, August 9, 2011

Brew Strong K-Cup Coffee

Thanks to Lifehacker for linking to this post on the Instructables that shows how to brew better, stronger (sadly not harder or faster*) coffee. By combining a My K-Cup with any used K-Cup you can increase the amount of pressure used when brewing your coffee for better flavour extraction from your ground coffee. I think this is an excellent trick to add to your home brewing arsenal.

* If you prefer the Kanye West version here it is.

Saturday, July 30, 2011

Upgrading your PhoneGap Android Application to 1.0.0

With the release of PhoneGap 1.0.0 some folks may run into some problems upgrading their existing applications to the latest version.  If you are not using "droidgap create" to generate a brand new Eclipse project using PhoneGap 1.0.0 here are a few things you should be aware of:
  1. Obviously you'll need to modify the script tag that references phonegap-{ver}.js to be phonegap-1.0.0.js.
  2. Secondly you'll need to remove the current phonegap-{ver}.jar from the build path and add phonegap-1.0.0.jar to the build path. 
  3. If you run your app and it gets the Force Close dialog then you probably didn't copy plugins.xml into the res/xml directory in your application. If the xml directory doesn't exist create it!
  4. If you are unable to open a second html page in your app then you're missing the following tag which should be placed in the application tag of your apps AndroidManifest.xml:

    <activity android:name="com.phonegap.DroidGap" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden">
    <intent-filter>
    </intent-filter>
    </activity>

    Please note after you add this activity you should have two activities under your applications tag. The above activity should not replace the one currently in your application tag.
  5. If you see and error about PluginManager.addService() not existing then you are using old style plugins. Go into the Plugins .js file and comment out of straight up delete the PluginManager.addService() line from the PhoneGap.addContructor() method.  Then you should add a plugin tag to the plugins tag in your plugins.xml.

    For instance if you are using the TTS plugin you'd add:

    <plugin name="TTS" value="com.phonegap.plugins.speech.TTS"/>
This may not be an exhaustive list of issues you may run into on an upgrade but it is all I can think of right now.  If you find something else comment on this post and I'll update it.

Monday, July 11, 2011

Sandman Commission by Jay Odjick

So this arrived in the mail today:


and you'll have to trust me when I say that it looks even better in person. The sketch was done by local Ottawa artist Jay Odjick. I met Jay at one of the presentations at this years Ottawa Writers Festival when we both showed up to see JM DeMatteis and Mike Carey.

Jay is a talented artist who will be releasing his own original graphic novel in a few weeks called Kagagi: The Raven. You can check out this eight page preview on line. If you decide this is something you'd be interested in take the order code, STK436038, to any comic shop and they will be able to get it for you.

Friday, May 27, 2011

Five Things I Learned This Week

  1. Pepsi Throwback tastes awesome but it screws up my sleep schedule. I guess I'm not used to ingesting 28 grams of sugar in one clip. It's only got 5 ingredients people!
  2. This bit of code can scans your string for url's and wraps them with clickable anchor tags.
  3. Jim Butcher's Dresden Files > Simon R Green's Nightside series.
  4. It is cheaper to fly to Portland, Oregon than it is to fly to Vancouver, BC from Ottawa. I mean, really REALLY!  It's the same damn country.
  5. I've been called up to the big leagues and wil be blogging at the main PhoneGap Blog starting next week.

Wednesday, May 4, 2011

Overriding the Back Button in PhoneGap Android

Frequently PhoneGap applications consist of multiple screens represented by divs. Since Android users are conditioned to push the back button to return to the previous screen this causes some confusion as the default behaviour is to close the app. Luckily PhoneGap provides developers a way to over ride the default back button behaviour so they may provide their own back behaviour.

In release 0.9.4 the developer would have to wait for the deviceready event and call:

navigator.device.overrideBackButton();
document.addEventListener("backKeyDown", backPressed, false);

In order to setup and event handler for the back key and:

navigator.device.resetBackButton();

to revert to the default behaviour.

As of PhoneGap 0.9.5 we've made overriding the back button behaviour easier. You still have to wait for the deviceready event but the calls have been simplified to:

document.addEventListener("backbutton", onBackKey, false);

to register your event handler for the back key and:

document.removeEventListener("backbutton", onBackKey, false);

to revert to the default Android back button behaviour.

The following listing shows a full, yet contrived, example:

Thursday, September 9, 2010

Before you Upgrade to iTunes 10

I thought I was getting ahead of the game by upgrading to iTunes 10 in advance of the release of iOS 4.1. I was awaiting the new iOS version in order to fix some slow down issues on my older iPhone 3G.  This morning I decided it was time for the big upgrade and well it could've gone smoother.

After my phone was flattened with the new OS it refused to connect to iTunes.  The reason for this was quite simple, the iPodService.exe would not start on my Windows XP SP3 computer.  I did a quick search on the web and I discovered I was not the only person with this problem.

Luckily a fix was suggested.  The process is as follows:

1. Uninstall iTunes 10
2. Install iTunes 9.2.1
3. After the install, copy the "C:\Program Files\iPod" folder to an alternate location.
4. Uninstall iTunes 9.2.1
5. Install iTunes 10
6. When the error pops up during installation, overwrite C:\Program Files\iPod with the previously copied folder.
7. The install will complete successfully and iTunes 10 will run normally.

Basically, the older version of iPodService.exe does not have the same bug as the one in iTunes 10.  By using this procedure I was able to complete the upgrade of my phone to iOS 4.1 and get it out of the bricked state it was in.  No word yet on when Apple will be providing a fix but they are looking into it.

Note: Friends of mine who sync their iPhone to a Mac do not have this problem with iTunes 10.

Monday, August 9, 2010

The Most Awesome Thing Ever! Part 3

Well everyone knows that Sharpie pens are amazing.  I keep one in near constant reach of myself at all times.  Now the Sharpie company has gone one better by introducing the Liquid Pencil!  It is a stylus that writes like a pen but the ink is actually a made of graphite so you can erase it.  Then after three days of drying in the air the ink becomes permanent. Bravo Sharpie, Bravo.  (via Boing Boing).

Monday, June 14, 2010

Music Monday: Adam War Rock

Adam War Rock is a professional geek emcee. He's done some great songs of them my favourite has to be the Scott Pilgrim recap song called I Gotta Believe! Adam War Rock, aka Eugene Ahn, is currently hard at work on his first studio album. Last week he release the first song off the album, Starving Artist, for digital download.

Now you can download it for free but it is also setup so that you can pay Euge for his hard work. Stop by and purchase the song for $1. You won't be disappointed. Plus you'll be helping out a talented artist who is just on his way to super stardom. In 5 years when he's entering the Betty Ford Clinic for substance abuse you'll be able to say I knew him when and I enabled his rock star lifestyle just a little bit.

Euge is also the co-host and producer of the War Rocket Ajax podcast with Chris Sims of Comics Alliance and the Invincible Super Blog. This nominally about comics podcast is always a great listen so you should check that out when you have time too.

Monday, September 7, 2009

Temperature Regulating Coffee Mug

Thanks to Paul for this article on a temperature regulating coffee mug. It is a pretty interesting engineering feat that stores the heat the coffee is radiating then puts it back into the liquid as it cools down.

Monday, June 22, 2009

Auto Login your iPhone to Starbucks Wireless



No word on whether we'll get a similar deal here in Canada. The crux of the matter is Rogers sells the iPhone but Bell does the wifi for Starbucks.