A new adventure for me – IBM

After 7 very exciting years at RIM/BlackBerry, I’ve made the decision to move on to a new adventure. In just a few short weeks, I’ll be starting a new chapter in my professional career by joining the senior ranks of the Interactive Experiences team at IBM Canada.

This career change was a difficult decision for me and took careful consideration. I realize this news may come as a surprise to some, maybe not so much to others, but I invite you to celebrate this change with me regardless. Change is always good, and it was time for me.


To my former colleagues and peers, I am grateful to have had the once-in-a lifetime opportunity to be part of such a great team and I hope you understand my decision to move on. I will always think fondly and be proud of what we accomplished together: we built a vibrant developer ecosystem, fought battles side-by-side, traveled the world to win the hearts of developers, and repeatedly enabled success for others. Most importantly, we had a lot of fun. It has been an honor and I will miss you all. My experience as a leader on the BlackBerry Developer Relations team has truly been a career highlight. The best way I’ve been able to describe it to others is it has been exciting. The sheer volume of interesting challenges, career opportunities and industry activity has provided me with experience that few would see in over 20+ years of employment elsewhere. I’ve had the pleasure of meeting and working with so many wonderful people. You know who you are. Thank you for all the memories, but most importantly thank you for your time. I hope our paths will cross again. Who knows, maybe sooner than expected. Please stay in touch.

To my new team at IBM, I am thrilled to soon be joining you. I look forward to discovering how our mutual interests and skills will achieve BIG results. I really like IBM’s motto: “Think”. Intelligent, direct and simple, yet sophisticated. Let us think BIG together. At IBM I will be assuming an Architect role, leading efforts to provide mobile strategy and solutions of customer data and services. I am excited by the technical nature of this role. I am looking forward to building successful teams. But most of all, I am eager to discover those rare yet special projects that provide opportunities that change the world.


Needless to say, I’m excited for what comes next.

Tagged with: , , ,
Posted in Announcement

What is your most valuable resource?

I felt like writing a thought piece today.

Which is more valuable: money or time?

The two are very closely related to each other, but clearly not equal. Many people spend the majority of their lives focused on improving their financial situation (school, career advancement, financial intelligence, etc). However, as I’ve come to realize, very few spend any time on … time.  Would you rather have more or less money to do the things you love?  Easy – more. Would you rather have have more or less time to do then things you love?  Everyone should say ‘more’ but I don’t think many actively consider this. We’re all too often focused on the more money part and will give up extra time to meet those goals.

How often have you heard someone say “I just don’t have the time” or “I wish there were 25 hours in a day” or “I’m too busy”.  This cycle repeats and these people never seem to have enough time. Have you ever met a workaholic? This is someone who thinks that the solution to any problem is to just keep working until its finished.  That is not good. I’d argue it’s better to find an efficient way to find the same solution in less time (whether that way is innovation, fixing inefficiencies or seeking help).  If you can complete the same objective in 2 hours or 6 hours, the difference is simply waste.

So why does this happen?  Because people do not place enough value on their time. They value money because it’s easy to measure, and used to improve your lifestyle, but the value of the time it takes to do this is meaningless to them.

Do you have a budget?  I do. I keep track of how much money comes into my life, and how much money flows out. My income, expenses, savings, etc. It’s an important tool I use to manage my money so I always know how much I have and most importantly, how to plan for the future.  If I need to save for a big expense, I can forecast how long it will take me to save enough.

Do you have a time budget?  Hmmm …

Here’s my perspective: money is a variable resource. There is a ton of it out there and it’s yours for the taking.  Want more money? Examples: get a better job, work 2 jobs, build a business, invest more intelligently, etc.  However, time is a fixed resource. Every day you get only 24 hours of it.  That’s it and there is no way to get more. Want more time? Impossible.  Unlike money, you will always consume every second, every minute, every hour of the time that life gives you and you don’t have a choice.  Unlike money, you cannot save up time and use it later.

Budgeting your time is more than just scheduling your day, or placing reminders in a calendar. It is actively placing intrinsic value on the amount of time that goes by in your life.  Have you ever thought “that was a waste of time” or “I wish I had those 2 hours of my life back”. I think the most successful people are masters of managing their time effectively and make good decisions on how to use it.  In fact, many leverage the time of others to improve their own situation (e.g. business owners).

So …

What is your most valuable resource?

It’s time, so make the most of it.

Budgeting time like it’s a resource is certainly not my own unique discovery. Far from it. In fact, if you’re interested in reading some great books about this subject, see 168 hours by Laura Vanderkam and How to Live on Twenty-Four Hours a Day by Arnold Bennett.

Tagged with: , ,
Posted in Thought Piece

Be brave. Be strong.

Here is a message I recently posted on Facebook. I felt it was important to encourage my internal and external BlackBerry community to remain positive and brave during this period of uncertainty within the company:

Friends and family: You have likely already been hearing in the news that there is a lot happening at BlackBerry right now.

I know many of you have questions or concerns about things like the future of the company, the job stability of people you know or about stories you are seeing published in the news. I completely understand how natural it can be to feel worried, upset or the need to express anger about these things. Please do not let it.

There are a lot of good people at BlackBerry who are riding this roller coaster and may be under stress. But there are also many family, friends and community members who are also going through this with them and feeling the same way.

At this time, folks like myself, Rachel, my colleagues and everyone else need you to remain positive and be supportive. Questions like “do you still have a job?” are not helpful. But to those who ask: yes, I do.

The path forward is not 100% clear. This roller coaster ride is not over yet. But change will happen. New opportunities will present themselves for those that seek them out, and we will all get through this together.

Thank you in advance for your support. Please message me if you want to chat.

This message has generated a significant amount of support and encouraging feedback. Thank you for that. As a result, I felt it was important to share with others.

There is a lot to be proud of in terms of past accomplishments, and there is still a lot to look forward to in future achievements. Be brave and you will find success.

Tagged with: , ,
Posted in Message

Updating forked Github repos

Here is a helpful beginners tip about managing forked repos in Github.

When you fork a Github repo, it makes a copy of that code for you in a remote location. Often developers work by copying that remote copy to their local machines (called ‘cloning’), and then pushing new changes from their clone to their forked repo. When they are happy, they submit a pull request from their forked repo to the upstream repo and that is where their changes are merged in.

However, what happens when changes are made by other developers to that upstream repo? Your forked repo becomes out of date. If you were looking at a timeline, your copy would be set to to a point of time in the past.

Have you ever wondered how to update your forked repo with the latest changes from its upstream repo? Say you forked a repo and then it sat for 1 month without you making any changes to it. During that time, changes were made to the upstream repo. How do you bring them in sync? Here’s how I do it. The following are Git commands that can be called using Git Bash:

  1. Start by cloning your forked repo. You may have already done this after you forked the repo. If that is the case, you would have a folder on your machine named <repo name>. Using git bash, if you type “git remote –v” from within your repo, you will see a remote named ‘origin’ with a URL of your forked repo.git clone <url to forked repo>
  2. Next, move into the cloned repo.cd <repo name>
  3. Next, add a remote for the URL of the upstream copy of the repo. A remote is simply a bookmark to a URL. It’s useful so you don’t have to type out long URLs each time you want to engage a remote repo.git remote add upstream <url to upstream repo>
  4. Check to make sure that you have both remotes named ‘origin’ and ‘upstream’. Each should have a push and pull URL:git remote --v
  5. Next, pull the latest changes from the upstream remote into your cloned copy of the repo:git pull upstream master
  6. Finally, push those changes up into your forked copy. Remember: you cloned your forked repo. So the ‘origin’ remote is pointing to that repo. You may want to ask yourself “Don’t I need to add or commit these changes?” However the answer is “No”, because these are not *your* changes. They are simply going to be forwarded.git push origin

Hopefully this practice makes more sense now?

In summary, the upstream changes were pulled down into your cloned repo, and then pushed up to your forked repo to bring them in sync.

Tagged with: ,
Posted in Tutorial

npm and jslint

So I’ve been playing around more and more with node package module (npm) and had some findings to share with my fellow JavaScript developers. For those who haven’t used NPM before, it is a collection of packaged JavaScript modules that run as services through nodeJS. Think of them as applications, written entirely in JavaScript, that you can use to help with your own JavaScript development.

  1. It’s awesome.
  2. It’s elegant.
  3. It can make no sense whatsoever until you figure out certain principles.


nodeJS is a JavaScript run time that runs from a command prompt. Its not a browser, but the JavaScript engine of a browser. You can run statements, functions, blocks and even entire modules of JavaScript directly from the nodeJS command line.

Other developers have even published packages of JavaScript modules for others to use and npm is the mechanism of installing these modules to your local system. These modules can be used to assist with development, testing, compiling and even profiling of your Web application content.

Check out some of the modules that are available to use.

Getting to the point

There is an npm for jslint!

Linting is a very helpful way of validating JavaScript syntax for potential errors before the scripts are run in an actual browser or web app. jslint.com and jshint.com are popular browser-based ways of doing this. With each of these examples, you copy/paste and submit your JavaScript code into a web form and see a list of good/bad messages displayed as a result.

With NPM and nodeJS you can do this straight from the command line, and even include it as a step in a build script.

For example, say you have an external JavaScript file named scripts.js that is part of your web project. Here is how you setup jslint and use it to check a local JavaScript file.

  1. Install nodeJS
  2. Open a command prompt
  3. Type “npm install jslint -g”
  4. Type “jslint <path to your scripts.js file>”

The magic here is that when you type jslint … what is actually happening is the jslint module is started using nodeJS. It is then feeding your scripts.js file through that jslint package and producing the good/bad message results.

Cool huh? Let me know what you think.

Tagged with: , , ,
Posted in Tutorial

Let’s try that again

Ha! Its been over a year since my last post. New goal: post more than once per year. I appreciate everyone’s patience, eagerly waiting for my next correspondence. I’ve sent out many micro-updates from Twitter, but few from this channel. I’d like to change that, so cheers to a blog refresh.

Posted in General


… to my personal blog.  Thanks for your interest!

You’ve come to the right place if you are interested in discussing my various thoughts and questions about Web development, plus personal projects, achievements and public collaboration on topics that intrigue me.

This is my personal blog. For publicly available information about my endeavors with RIM  and BlackBerry App development, I recommend following @BlackBerryDev.



Posted in General