Archive | life RSS feed for this section

Allergies, and why Kimpton Hotels Rock

14 Nov

Allergies, and why Kimpton Hotels Rock

As some of you may be aware, I have enough allergies to various common foods to have earned the name “bubble-boy” from my friends. In fact, my wife’s friends used to semi-joke about me while we were first engaged that she should take a good life-insurance policy out on my, “just i n case”. She used to laugh at that, until she had to race me to the hospital a couple times, or stay up all night to make sure I didn’t stop breathing. Now it’s not a laughing matter. Now she’s paranoid for me wherever I go, always carries a spare epipen with her, and arranges our travel schedules around flights and hotels that can accommodate allergies. (more…)

Even geeks forget their passwords

13 Nov

Passwords are definitely fickle beasts.  I’m used to juggling a multitude of different semi-incomprehensible passwords containing a mixture of numbers, symbols, upper and lower-case letters, and in some cases unicode characters (letters such as ü, • and §). And for some mysterious reason I’m able to remember these gibberish-filled passwords with ease. But despite all this, when asked to input a 4-digit passcode into my iPhone to be able to lock my phone (a requirement for hooking it up to my company Exchange server), I couldn’t keep that simple password in my head for longer than 8 minutes.

Can you believe that? Numeric passwords are perhaps the easiest passwords to crack. There isn’t enough variance in the values each character can hold to guarantee uniqueness or complexity to be considered secure, yet for some reason bank ATMs and cellphones use them with impunity. Perhaps my problem is I’m so used to being security-minded, that something as simple as 1234 didn’t occur to me.

So now I’m waiting for my iPhone to restore so I can recover my device (luckily I’d backed up just prior to adding my Exchange email account).  But once I finish with this, I’ll have to do the same thing for my iPad with its 12 gigs of WWDC videos; I’m not looking forward to that.

Update: After wiping and restoring my phone from backups I was able to get at the phone without a lock code. Success! Once I checked my Exchange email again, it required me to specify a new pin code. I made sure to type something in that was really easy to remember. Something with a couple 1′s and a 5 or something. I’m not quite sure because after going upstairs for dinner, I came back downstairs and discovered I could no longer remember my new password. I’m restoring from backups yet again, and hopefully this time I can come up with a password I can remember longer than a goldfish can remember a password.

This is not the toast you are looking for…

6 Nov

Last night while watching TV I had a conversation with my wife Deanna that made me realize that she is, as far as I’m concerned, a Jedi Knight.

I never really have that much of an appetite, and it’s not uncommon for me to skip meals altogether.  Since yesterday we had a late lunch, I ended up skipping dinner.  Normally it wouldn’t be a big deal, except that I thought I’d forage for a little snack in the evening.  After a cursory scan through the kitchen I didn’t find anything that sat comfortably below my laziness threshold, so I decided to forego eating anything at all.

What followed was a conversation that goes something like this:

Deanna: “Make yourself some food.”
Me: “No, I’m not hungry.”
Deanna: “Make some toast.”
Me: “No, I’m not hungry.”
Deanna: “Make some toast with almond butter.”
Me: “No, almond butter’s too much work…I’ll just have some toast.”

It was perhaps a full 30 seconds before I realized “Wait…what just happened?!”

I’m now a Canadian Citizen

4 Nov

Today, I’m proud to announce that I’m officially a Canadian Citizen!  I’ve lived in Canada for 7 years now and almost all of my family lives here, but since I was born in California, I’ve technically been an American for all that time…until today.

No longer will I have to sheepishly explain myself when US teams play against the Canucks.  No longer will I have to carry a stupid Permanent Resident card with me when flying home to Canada.  And probably most importantly, I no longer will I have to worry about losing my immigrant status if I need to stay out of the country for more than 6 months in a year.

There is one interesting drawback to all of this: I neglected to realize that once I became a citizen, I’d lose my Permanent Resident card, required for a landed immigrant to return to Canada when travelling abroad.  Normally this wouldn’t be too big of an issue, but I have to fly to San Francisco in a week for business with Salesforce.com.  ACK!

I’m doing the mad-dash rush to apply for my Canadian passport, booking my flight, getting passport photos taken, and all the other machinations needed to get from here to there without being detained by airport security.  This is the only black mark on an otherwise awesome occasion.

Go Canada!

New job, and new career path

28 Oct

Some of you who follow me on Twitter may have noticed recently that I’ve been talking about working for a new company.  This week is my first week working for Salesforce.com.  I’m really excited about the move for a number of reasons, some of which I’ll go into here.

As of this past Monday, I’m now a full-time iOS developer, instead of being limited to evenings and weekends.  I’m a new addition to an amazing team of developers at Salesforce.com developing apps to be released to the App Store, utilizing their amazing cloud-computing infrastructure.  From a technology standpoint this is right up my alley, and the company seems to have a great commitment to quality, agility and a good work environment.

This is a big change for me not only because it’s a new company, but because it’s an entirely different identity.  I’ve always referred to myself as a “Web Developer” when asked by friends, family, etc.  For 15 years I’ve worked in the web space, developing server- and client-side applications using Perl, JavaScript, and any number of other technologies in between.  But now when people ask, that answer no longer fits.  So starting this week, I have a new identity in my career.

I’ve always preferred to be on the leading edge of whatever technology it is I’m working in.  When I started, I wasn’t content simply building static sites; I pushed myself toward dynamically-generated sites.  When that became the norm, I instead focused on multi-lingual and multi-view sites.  That later turned into rich client-side applications, which later became known as “Ajax” webapps.  In recent years this too has become a bit passé.  This is what drew me to mobile development in the first place.

While I’ve been developing mobile apps for the past 2 years, I now can officially refer to myself as a professional iOS developer.  It feels good.

P.S.: I’m still continuing my work on my own personal iOS app business Decaf Ninja Software.  I’m continuing to maintain my existing apps, as well as develop new and interesting apps.  I learned to develop mobile apps through my side business, which is what launched this new career direction.  It only makes sense to continue that practice to improve my skills in areas such as Core Audio, OpenGL-ES and other more meaty areas that my work at Salesforce.com may not include.

Filtering great ideas to fit my available time (and budget)

19 Oct

I’m an avid “Idea Man”.  I love coming up with new ideas; for iPhone apps, for web apps, and even for real-world inventions.  Most of my ideas only sound great in my head, but when I open my mouth the idea seems to turn sour.  A smaller number of ideas manage to survive the thought-to-word boundary.  An even smaller minority of those ideas manage to make it down onto my “Idea Book” that I use to keep track of all the potential projects I’m going to work on.  Admittedly it’s not so much a single “book” as a collection of binders, scraps of paper, and in some cases 3×5 index cards.

Suffice to say amongst all those ideas, some gems manage to stand out above the rest.  A few I’ve actually finished, such as Boomle and myDrumPad.  The end product is seldom what I’d planned when I came up with the idea, but either due to time constraints, or the project evolving during the course of its development, things change.  Mostly I’m pleased with the end result, but there are some things I wish I had time for.  For instance, I’d like to re-implement Boomle using Cocos2D to make the animations smoother, and maybe add some extras such as obstacles, more challenging levels and Game Center integration.

Unfortunately, while I absolutely love myDrumPad, my original plans for it involved the creation of loops and patterns within the app.  Once I built it and started playing with it in real-time, as opposed to my ideas jotted down on paper, I discovered that the interface — while easy to use for quickly tapping out beats — doesn’t lend itself easily to creating loops.  I could create loops, sure, but my goal was to create an app that could be used in live performances, and sadly the interface just doesn’t lend itself to real-time editing of loops.  That’s not to say that I’m unhappy with myDrumPad.  Sales are going fairly well, and I have a few more updates planned.  I’m still adding additional languages to it using ICanLocalize.com (currently it has native support for English, Korean and French, and Japanese and German are following soon).

One of my constant loves for as long as I have been programming has been music and sound production.  And since I’m a rather unconventional thinker, I’d like to try my hand at an unconventional music interface.  I like the idea that someone without any knowledge of music notation or performance can learn to use my apps to produce the music they hear in their head, and to express themselves in ways they wouldn’t otherwise be able to.

I’m still formulating an idea in my head, but the loop and patterns features I was planning for myDrumPad are going to be built into a new application instead, with a completely different interface.  Like myDrumPad, it will be an experiment to see if producing music in this new UI metaphor will be successful.  It’s hard to explain, so I’m going to wait until I have a more accurate prototype to show.

But this app idea doesn’t exist in isolation.  In my little book of ideas I have several on-the-go prototypes just itching to get started, but since I still maintain a day job (and will for the foreseeable future) my time is limited to a few hours per day, and weekends.  My web-based space game, my photo sharing web application, my sonar-based iPhone utility app…all these ideas are stuck in my head as fantastic ideas I’d love to pursue, if only I had the time.

I’m sure it will be an interesting adventure to see which idea wins out in the end.  Do I build a web-based MMOG space game set in an infinitely-scalable universe?  Or do I build a Core Audio-based iPhone utility?  How do I determine which project has the highest likelihood of succeeding, or at least have the greatest likelihood of being finished in a reasonable time-frame by a single developer?

In an ideal world I’d build all of them.  Unfortunately, as an idea man, I think of ideas of varying awesomeness faster than I can build them.  As long as I require sleep, I suppose I’ll be stuck in this situation.

Silent no more…

3 May

Wow the past few months have been quite a wild ride, and a ton of things have happened!  So much has gone on and I’ve been writing so much software that I haven’t had the time to blog about it.  In the time I’m not writing software, I’d rather spend it with my wife than spend it writing about the software I’d written.

Over the past few months, while the PhoneGap team started a major refactor of their codebase, I spent some time learning more about Objective-C and UIKit, and discovered that writing native software on the iPhone is a heck of a lot easier than I’d previously expected. It shouldn’t have surprised me, because I’ve heard rave reviews from developers I have a great deal of respect for, and it also shouldn’t come as a great shock that Apple treats their developer SDKs with the same degree of polish and attention-to-detail that they do to their hardware. So while I was working with PhoneGap I’d contributed a number of plugins exposing the iPhone’s native UI elements to JavaScript-based apps, I’ll no longer be updating or adding any new plugins.

While my blog was collecting dust, I also finished a PhoneGap-based app, Parking Mobility, and while it was nice to start the project in familiar languages like HTML and JavaScript, a ton of time ended up getting eaten up chasing random bugs, memory leaks, and strange UI behaviours that required odd work-arounds to eliminate.  In the end I discovered I’d spent more time getting the application to market than if I had built it in native code.  Starting this past weekend I’ve begun doing just that, writing the application in UIKit and Objective-C in order to get more performance and a better user-experience out of the app than we have currently.

One of the other big reasons why I haven’t been as chatty on my site as usual is, of course, the launch of the iPad and the iPhone 3.2 SDK.  I decided to hit the ground running with this platform, and used this new SDK as my playground for learning more native development skills.  I developed two applications for the initial launch of the iPad, Boomle and myDrum Pad.

Boomle is an easy-to-play game featuring peaceful sounds, low-touch interaction, and an addictive gameplay.  It was a lot of fun to build, and got me started working with OpenAL, manually drawing displays, and dealing with real-time games.

myDrum Pad in contrast is an interactive drum pad that aims to allow people to tap beats out with a variety of sound packs along to music, or create their own riffs.  It’s still in active development, but this has been a blast.  I’m developing it with CoreData, OpenAL sound playback, multi-touch displays, In-App purchase and asynchronous downloads from Amazon S3.  It’s a highly dynamic UI with a smooth user experience.  It’s also the first iPhone project that I’m directly involving a graphic designer with the whole process, and once we get a beta ready, I’m sure you’ll like the screenshots and demo images we’ll be putting up.

Last, and certainly not least, I’ve changed roles in my day job at Sophos, and am working once again in the Email Security team developing our Email Security Appliance.  I get to play with all sorts of complex problems, web-based administration interfaces, and pretty much every technology under the sun.

Now that these projects have all stabilized, I’ll hopefully be blogging more about Objective-C, Javascript web applications, and technology in general. Plus Summer’s quickly approaching, so hopefully I’ll have some pictures of my motorcycle and any trips my wife and I take this summer up here soon.

I’m in Movember this November

4 Nov

Just like most of the men at my office, I’m participating in Movember this year, largely due to the razzing I got last year when I didn’t participate. Yes, I’ve succumbed to peer pressure…what would my mom say? At least it’s for a good cause. Of course, the first question I asked is “What’s Movember?” It’s a fundraising event for prostate cancer where men grow mustaches during the month of November.

While I can grow a mustache fairly well, I really don’t look good with one. So hopefully I won’t have too many pictures taken of me this month. And if you want me to feel better about it all so I don’t feel like it was a total waste, please head on over to my Movember profile page and donate a few bucks, or more.

As you can see, it’s a few days and it’s at a respectable and not-yet-annoying length. If you contribute, you get a vote on what style my mustache should be. I figure of I’m going to have nasty facial hair, I might as well go for it wholeheartedly. So donate to a good cause, frustrate my wife, and get a few good laughs in.

I really need to broaden my music horizons

10 Jun

AFI - Decemberunderground

You know that feeling when you listen to a song that you love so much, you re-play it 3 times in a row? You also know that feeling when people tell you “ZOMG you’ve gotta listen to, you’ll love it” and you say “yeah yeah, sure, sometime…” and you never bother ’till “sometime” eventually comes along, and you think “Why the hell didn’t I listen to this earlier?!” Well, I’m doing that right now with “Miss Murder” by AFI. I’m on my 3rd play through in a row, and I’m seriously considering starting it over…

And yes, the song just ended…and I just hit the “Skip Back” button on my iPhone. It’s playing once more. Yes, it is ridiculous. Yes, I know this song will be stuck in my head for the next week. But at this moment, I don’t particularly care.

One of my friends, Chris Prather, who’s been telling me for ages to listen to this album just called me a “newcomer”. Guilty as charged.

So if anyone has any “ZOMG You’ve gotta listen to this!” music recommendations, leave me a comment. I’ll make sure to listen to them sooner this time around.

Why, oh why did I ever leave California?

19 Dec

I love living in Canada, and I especially like living in Vancouver. I wouldn’t trade it for anything. I have a lovely wife, a great job, a wonderful city…what more could I ask for? Oh right, that’s it…warm weather! I’m not meant for frozen water falling from the sky, or bundling up into so many layers that I feel like an onion (or a parfait).

I don’t like the cold. I especially don’t like it when my office building thinks it’s still June. I felt warmer waiting in the snow for my bus this morning than I do right now at my desk.

When I was a kid I remember a few years we went down to the beach on Christmas Day. We didn’t go into the water, of course, but we were wearing shorts and t-shirts. BBQ, drinks, and party games on the sand. If I were to do that here, I’d freeze my nuts off.

Though it does look beautiful when seen through a window. My wife uses the cold weather as an excuse to go shopping and buy warm, and cute, clothes. Maybe I should do the same and should just stop complaining.