RE: Climate jihadists want Canada to be embarrassed, but for what?

Dear Gary Lamphier,

A nerve is always struck when I read articles such as your “Climate jihadists want Canada to be embarrassed, but for what?” article appearing in the Edmonton Journal December 12th, 2009.
My annoyance isn’t related to my agreement or disagreement with some of your points; which as best as I can tell are:
a) the Mayor of Toronto should be more embarrassed about other issues,
b) that Canadians shouldn’t be embarrassed  about our environmental issues, and
c) that environmental summits are nothing but glorified holidays paid for by taxpayers.

My issue is with your strategy for making these points.

One wrong is not made right because you have a bigger wrong.  Similarly one wrong is not made right because someone else has a bigger wrong.  These arguments stopped making sense around the age of 8 for me.  So you pointing out that Toronto endured a garbage strike, and that China’s carbon emissions negate any progress we’ll make is irrelevant.  That is of course if I’m correct that you’re suggesting we shouldn’t be so embarrassed about our environmental leadership.

I’m also annoyed with your use of buzz words to invoke emotions to your readers.  Jihadist?  Do you know what this word means?  I suspect you do; actually I’m positive you do.  But I’m also positive that you know full well what your readers emotional response to a word that’s become so loaded will be.  I’ll mention that from my memory of Religious studies 100, “Jihadist” is a term used to describe a Muslim who favors or supports the jihad.  Jihad is an Islamic term, to represent a religious duty of Muslims.  But for most of us westerners, “Jihadist” = crazy fenatic who fly plains into buildings.  I imagine you’ll succeed in engaging readers with your use of this, but I fail to see the logic in comparing David Miller to a jihadist.  Maybe this Climate jihadist is a common term that I’m just unfamiliar with.  Are you simply saying that his duty is to advance environmental issues?

As an aside,  a personal pet peeve is the use of parenthesis to convey sarcasm.  So perhaps you’re use of this strategy got me off on the wrong foot.

I guess you’re asking why David Miller is embarrassed.  I can’t speak for him or any fellow Canadian, but I can tell you what I’m embarrassed about.

And I’m also a little embarrassed to say that I’m from a city where articles like yours make it to press.

Sincerely,

David Quail

“Burn fat not gas” launched

“Burn Fat not Gas” just came alive tonight at www.fatnotgas.com.Fat not gas logo

Right now, the web site is incredibly simple – It’ll determine the environmental, economic, and health savings you’d benefit from by biking to work rather than driving based on averages.

The site is really a product of a) me wanting to try my hand at a simple Ruby on Rails project, b) my increasing inner rage towards the Alberta Oil sands after more studies and c) having a few free evenings.

Given all the time in the world, I’d love to support a community of passionate cyclists with forums, merchandise, commuting maps, challenges and other features.

In the mean time I’d love to hear what you think.

Keep cycling …

Popular iPhone apps deliver value in 10s or less

I recently made an observation when taking inventory of the iPhone apps I have installed.

I noted that any app I use with any regularity will provide me with value in 10 seconds or less.  If it takes longer, I’d just as soon crack open the laptop and use the web/desktop version … or be distracted by some other app on my iPhone.  While there’s plenty of apps installed (at least 4 pages full), the only ones I use are Shazam, Mail, Contacts, Google Maps, Tweetie, Facebook, Weather, Showtimes …. all apps that I can get data from within 10 seconds.

It seems that the iPhone has tapped into our North American attention deficit selves.  I find myself busting out my iPhone any time I’m without stimulation … even when waiting for the traffic light to turn green.  The iPhone and it’s apps owe a lot of their success to an ability to fill the gaps in our day to day lives – it’s candy to the attention deficit.  And to me, there’s nothing better than an app that can entertain me in as little as 10 seconds.

Effects of alternative energy souces

I just finished reading Clean tech revolution.  Good book, excites me to think of technology advancing green initiatives and the role that a technologist can play.

When thinking about tapping into renewable energy sources – solar, geothermal, wind, tidal, etc. – I can’t help but wonder what the effects on nature will be when harvesting these natural sources.  I’m clearly a novice when it comes to geo-physics but you’d have to think these energy sources have huge roles in heating the earth, conducting air and ocean current, controlling weather, etc.  Would we be using so little of this energy that it doesn’t make a difference?  I’d love to read more research on this.

To me, it’s still pretty simple.  Humans demand WAY too much energy from the earth.  Whether you’re taking energy locked away in fossil fuels, or from wind blowing by your house to power an automobile … it’s going to have an effect on our ecosystem.  Ultimately, the only real clean watt is the Negawatt … the watt you don’t use.

oAuth authorization callback on the iPhone with WebView

There was a bit of chatter a while back about handling oAuth on the iPhone; in particular security balances sending a user to the website using Safari vs an embedded WebView.  Mike’s blog post discusses this so I won’t repeat, other than to say that I think either solution (webView or Safari) is open for spoofing.  An app developer could spoof an auth and grab creds in either case pretty easily … so I’ve chosen to optimize for user experience by implemented an oAuth webView for our app.

Here’s some of the relevant code for launching to an authorize website and handling the response.

* Our app uses oAuthConsumer library

* Our implimentation was against linkedin oauth which meant that I needed to pass the oauth_callback in our request token request by setting the oauth_callback parameter there rather than the authorize URL

In other words, our requestToken method looks something like the following:


OAMutableURLRequest                *request = [[[OAMutableURLRequest alloc] initWithURL: self.requestTokenURL consumer: self.consumer token:nil realm:nil signatureProvider: nil] autorelease];
 if (!request) return;
 [request setHTTPMethod: @"POST"];
 [request setParameters: [NSArray arrayWithObject: [[[OARequestParameter alloc] initWithName: @"oauth_callback" value: kLinkedInCallbackUrl] autorelease]]];
 OADataFetcher                *fetcher = [[[OADataFetcher alloc] init] autorelease];
 [fetcher fetchDataWithRequest: request delegate: self didFinishSelector: @selector(setRequestToken:withData:) didFailSelector: @selector(outhTicketFailed:data:)];

With the request token set, we’re able to pass this to the authorize url and it will return to our custom url

/*Create the request object for the linkedin URL*/


if (!_requestToken.key && _requestToken.secret) return nil;    // we need a valid request token to generate the URL

 OAMutableURLRequest            *request = [[[OAMutableURLRequest alloc] initWithURL: self.authorizeURL consumer: nil token: _requestToken realm: nil signatureProvider: nil] autorelease];

 [request setParameters: [NSArray arrayWithObject: [[[OARequestParameter alloc] initWithName: @"oauth_token" value: _requestToken.key] autorelease]]];

/*Load the webview with this request*/


[_webView loadRequest: request];

/*Check the response for a custom uri and redirect if it's set*/
- (BOOL) webView: (UIWebView *) webView shouldStartLoadWithRequest: (NSURLRequest *) request navigationType: (UIWebViewNavigationType) navigationType {
 NSData                *data = [request HTTPBody];
 char                *raw = data ? (char *) [data bytes] : "";
 NSURL* url = request.URL;

 if ([url.scheme isEqualToString:@"liconnect"]) {
 [_spinner stopAnimating];
 if ([url.resourceSpecifier isEqualToString:@"cancel"]) {
 if ([_delegate respondsToSelector:@selector(OAuthLinkedInAuthorizeViewFailed:)]) {
 [_delegate OAuthLinkedInAuthorizeViewFailed:self];
 }
 }
 else {
 [self dialogDidSucceed:url];
 }

 return NO;
 }

 if (raw && strstr(raw, "cancel=Deny")) {
 [self denied];
 return NO;
 }
 if (navigationType != UIWebViewNavigationTypeOther) _webView.alpha = 0.1;
 return YES;
}

/*Strip out the token and auth_verifier from the url*/


- (void)dialogDidSucceed:(NSURL*)url {
 NSString* q = url.query;
 NSLog(q);
 NSRange verifier_start = [q rangeOfString:@"oauth_verifier="];

 NSRange start = [q rangeOfString:@"auth_token="];
 if (start.location != NSNotFound) {
 NSRange end = [q rangeOfString:@"&"];
 NSUInteger offset = start.location+start.length;
 NSString* token = end.location == NSNotFound
 ? [q substringFromIndex:offset]
 : [q substringWithRange:NSMakeRange(offset, end.location-offset)];

 NSString* verifier = [q substringFromIndex:verifier_start.location+verifier_start.length];
 if (token&&verifier) {
 if ([_delegate respondsToSelector:@selector(requestTokenReceived:withVerifier:)]){
 [_delegate requestTokenReceived:token withVerifier:verifier];
 }
 }
 else
 {
 if ([_delegate respondsToSelector:@selector(OAuthLinkedInAuthorizeViewFailed:)]){
 [_delegate OAuthLinkedInAuthorizeViewFailed:self];
 }        }
 [self removeFromSuperview];
 }
}

You’re done.  You’ve now got your oauth_verifier and your access token all lined up to store away or make immediate calls to the api.

5 things I learned at Startup weekend Redmond

After running with our small startup Attassa for the last 3 years, going to events like Startup weekend is always a bit enlightening and refreshing.

I found this event particuarlily reaffirming to some beliefs I’ve had about startups.

Top 5 things I learned or had re-affirmed at Startup weekend in Seattle.

  1. The power of numbers: For me, working with other people is absolutely essential to productivity, getting things done, and feeling good about what I’m doing. Having someone to celebrate successes both big (winning the popular vote at the climax of the event) and small (getting pictures to download into your WebOS application) is invaluable and rewarding. It’s pretty simple, the more people you’re working with, the more successes you share, and the more people you have to celebrate with.
  2. The power of working together face to face in the same room: For somer reason, I feel more accountable when you work together in the same room. Maybe it’s just harder to let someone down when you have to look them in they eye, but when you work in such tight quarters I feel much more compelled to impress people and NOT let them down. It goes without saying that communications is much easier in these conditions as well. Impromptu product discussions were held quickly and efficiently in person instead of scheduling awkward skype sessions or long email threads.
  3. The power of competition: I’m incredibly motivated by competition. Competing against other teams seems like the obvious outlet for this, but given that our team was more than 3 people, I actually was able to have somewhat of a healthy competition amongst other team members.
  4. The power of a simple value proposition: Our value proposition was simple. “Help you remember the names of people you bump into at events” and our elevator pitch didn’t require an 80 story high rise to give. Having a clear compelling value proposition really dictates the technology and that’s the way it should be. It’s easy as a technologist to lead with the technology and allow everything to flow from that.
  5. I really suck at public speaking: Seriously … I’m terrible. I’ve always known that I have a Charlie Brown like mumbley voice, but watching the video of our demo is painful. I seriously need some lessons on presenting.

Our iPhone and Pre app wins top prize at Microsoft sponsored Event.

After a 54 hour coding marathon fueled mainly by pizza, caffeine, new friendships, and the enthusiasm of starting something new, our app Learn that Name won the top prize for the best app at Microsoft sponsored Startup Weekend in Redmond.

Of the many great memories from the event, the clear cut winner for me was the conclusion of the event – the presentation of the top prize. To the best of my memory the presentation went something along the lines of the following.

  • Clint Nelson (Organizer of startup weekend) – “Thanks to everyone … etc. etc.”
  • Clint -“14 of 15 teams used the Microsoft technology stack”
  • Clint –“Thanks to Microsoft, organizers, etc etc. ….”
  • General vibe in the room: YAY Microsoft!! yee of startup enablers! You rule!!!
  • Clint – “The winner of the Bizspark award given to the team winning most votes for best startup, and the one that used Microsoft platforms is …”
  • Clint – “Search Kick”
  • General vibe in room: YAY Search Kick!!! YAY Microsoft!!!!
  • Abhisheck Chitlangia (Learn that name team member) – “Wait a minute … But which team got most votes for best app?”
  • Clint – “ummm … Learn that name”
  • Me (giddy already about the impending irony) – “And which team was the one that DIDN’T use Microsoft?”
  • General feeling in room – “Huh? The team that won most votes didn’t get the award and the $5000?”
  • Clint (in a slight wisper) – “umm … Learn that name … awkward”
  • General feeling in room – Irony is setting in … the ONLY team that didn’t use the Microsoft platform was the one that won the best application … but they were essentially disqualified.
  • General feeling in room – More irony, etc etc, Learn that name team members now high fiving.

Priceless!

While the $5,000 of bizspark sponsorship would have been nice (if we’d used Microsoft technologies), the value in buzz generated from the irony as seen on techflash has already surpassed any $5,000 monetary value.

As a major footnote –
Microsoft, Bizspark, Clint, and all of the other organizers did an absolutely stellar job hosting the event. Huge props to them!! It was an amazing effort to aid the ENTIRE startup community not just those that used MS technology stack or not.
The $5000 was just the cherry on top of the overall support for startups that Microsoft provided. The award understandably could only be given to the team that used the Microsoft platform. Very smart way to drum up some interest especially in their new Azure platform.

Winners quit all the time

One of the most stupid words of wisdom that we so often try to rally behind is “winners never quit.” The fact of the matter is that winners quit all of the time … they just quit early and before they’ve wasted a bunch of time and energy down a dead end.

Now I’m all for rallying behind a cry for persistence. I learned very early in life and in my career that “when the going gets tough, the tough get going.” In any sort of athletic training I’ve done, it’s often the case that you’re only getting fitter and stronger when you push yourself when you don’t think you’ve got anything left to give. The first 8 leg squat repetitions don’t do that much for you, but the final 2 … when it really hurts and you want to quit … is where you make all your athletic gains. This is also the case in mental exercise. Plugging away isn’t making you any smarter, but pushing through a tough problem gives you the experience and mental gain. Seth Godin talks about this as pushing through “the dip.”

But there comes a time when pushing through this dip is useless. There’s nothing on the other side of the dip that you are trying to gain. You may as well have quit before you even entered the dip.

It seems counter intuitive, but it’s often TOUGH to quit. You often hear that quitting is easy. I think a lot of the time, it’s exactly opposite. Some of the toughest decisions I’ve made is to quit! Why is that? I think it’s a combination of 3 things:
– There’s always uncertainty. Maybe you shouldn’t be quitting. Maybe the other side of the dip is fruitful.
– I really don’t want to be known as a quitter.
– Quitting usually hurts someone else … and NOBODY likes to hurt anyone.

Winners are able to recognize these three things and quit before they start, or shortly after. It’s risky, it may hurt someone, and people may see you as a quitter … but you’ll have a lot more time and energy to spend on something actually worth while.

Add Hoc deployment closes immediatly after app launch

I managed to successfully build and install an add hoc app onto my iPhone. However, as soon as I launch the app on the device, I see the splash screen for a second, then the app closes.

It was my assumption that since the splash screen was displayed that my app code was being run. However, after reading about application bootstrapping on the iPhone, it looks like the iPhone OS first displays Default.png before even running your main function. This made me realise that my application code probably wasn’t even being run at all.

To further my bewilderment, installing via iTunes on a PC worked just fine while installing on a Mac using iTunes wasn’t working.

Inspecting the .app folder showed me that CodeResources file was a file instead of a Symbolic link. Bewildered why that might be, I tracked the problem down to our build system. Our build system uses Ant to zip the .app folder up and send over email. Turns out that the ant zip task resolves symbolic links before adding the link to the archive. Hence the corrupted .app file.

Oddly enough, the iTunes version for windows is smart enough to parse this (probably because symbolic links don’t exist on the PC), where as iTunes on mac doesnt.

Bizare …..

Baseball drama vs hockey action

Not too long ago I finished reading “Blink” by Malcom Gladwell Among the many things which stood out for me was the split second decisions required in sport. Because baseball allows for more analysis as the play goes on I believe it makes for a more mentally involved spectator experience than an action packed even such as hockey. At least using the “it’s a thinking game” argument helps me justify why I enjoy watching baseball so much.

When I was younger I played a lot of competitive hockey with some amount of success. I often remember sitting on the bench after scoring a goal, actually not able to remember the details of how the goal was scored, or the mental steps I took in positioning myself to score the goal. When I was playing my best, I felt like I was on auto pilot, simply relying on pure intuition. On the other hand, when in scoring slumps, I remember thinking long and hard about what to do on the ice. “Should I cross over and fill the left lane?” “Should I attack the net?” “Should I position myself behind the net?” It seemed as though the more I thought about what I should do, the worse I would play. Most sports are like this.

Baseball on the other allows more emphasis on analysis and positioning. Baseball allows for this since there’s more downtime between action where one can have more time to assess the situation. “The batter pulled the ball last time, so I’ll shade him into the hole,” “the count is 1-2 so I’m expecting a low ball so I’ll expect a ground ball”, “they’re down by 2 runs in the last inning so there’s no way they’ll steal second.” The list goes on and on.

I think that’s why baseball makes for a greater spectator sport. From the audience I can continuously run these scenarios. Time between each pitch I can guess what pitch is coming next, second guess the positioning of the second baseman. Hockey, for all it’s marvels, doesn’t allow me as much of an opportunity to question the positioning of the players.

Go Blue Jays …