Category Archives: Business

Sometimes I think I work too hard.  Code all day, come home and code for a few more hours at night, and occasionally read a book about coding.  I do this because I really enjoy solving problems on a computer and creating new things.

However this sort of single minded pursuit can lead to burn-out.  A short vacation just isn’t enough to reset and relax.

With that in mind I started to read a few things and landed on this book by Matthew Crawford:

The book espouses the benefits of hands on manual labor as a way to feel good about what you can accomplish and get back to basics to do something good for yourself and your community.

It got me thinking about something I always wanted to learn how to do: weld.  Growing up I had access to a wide range of tools; everything from table saws to gold plating to soldering.  But welding equipment was something we never had, and none of my friends had access to.  So there was a certain mystery to it.

That mystery has stayed with me for 20 years and the thought of being able to weld my own fitness equipment, jungle gym or swing set or a custom built trailer has a certain appeal.  One that I’m finally going to satisfy by taking a welding course this fall.

I’m hoping that having a hands-on weekend project will provide a way to detach from the stress of work and create something fun.

2861575686_146752a32e_zOne of the best ways to improve your business is to manage the expectations your customers have with you.  This is easy to do.  You just tell your customers what you are going to do, and then follow through while communicating often about the progress to meeting those expectations.

The best way to develop and sustain these in a business is to create systems to ensure that all customers receive the same experience.  If you just wing it with every customer there will be times when you forget to follow up or fail to mention something important.  A system can be as simple as a calendar reminder to send an update email, or a template.  These systems reduce what would be decision making and turn it into something that can be outsourced, or done very quickly.

Once your system is in place you have the opportunity to iterate and improve it.  Can emails be automated?  Can you pre-empt objections? Are there opportunities to ask for feedback, provide more information, or request referrals?  With a good system you can track and monitor these messages to make sure customer communication is regular and up to a given standard.

With templates it becomes worthwhile to invest just a little bit of time to make the messaging visually appealing.  Providing reports as a PDF that include some personalization and graphics will make you stand out among competitors who are less organized.

Taking the time to to create a system for communicating and managing customer expectations is one of the lowest cost and highest reward things you can do for your business.  Emails and phone calls are cheap but can be used effectively to multiply your business.

Since Apple announced Swift was going open source and coming to Linux by the end of the year, my interest was peeked again to dive in and start learning it.

With Swift running on Linux servers the race is on to create a compelling web framework so that it will be possible to write iOS apps and server applications with the same language.  A modern type safe systems language that’s still fast and easy to write is pretty appealing.

Working through the Swift book and code examples, I’m finding it to be quite a nice language – especially with the new Swift 2.0 improvements.

Unlike other modern languages Swift still has some short comings:

  • lack of a first class package manager (like pip for python, go get for golang, gems for ruby etc)
  • a comprehensive standard library (Python and Go have tremendous built-ins)

Swift feels quite new and the team at Apple is still making breaking changes to the language syntax.  I’m hopeful that open sourcing the language and bringing it to Linux will open the door to allow other developers outside of Apple’s ecosystem to start learning it.

Play is one of the more undervalued activities we can undertake as an adult, yet it is one that differentiates many of the worlds top performers from the rest of us.  Playtime could be considered to be the pinnacle of Maslow’s hierarchy of needs.  When you are intrinsically motivated and enjoy what you’re doing  you might considering it playing.  It’s fun.

Play is an activitiy which can promote dramatic shifts in learning.  When you are exploring the boundaries of your understanding through play it becomes ok to try and fail, to do thing that might be crazy.  Stretching yourself often enough results in leaps in your skills.

With physical skills the benefits of play are particularly well appreciated.  We go to the playground and become ever more confident with our balance, strength and co-ordination.  These basics translate into other physical skills with bikes and skateboards, and those of us who continue to play like this through into adulthood can reach a professional level.

For mental skills the idea of play is a lot more varied.  It could include anything from board games, to trivia nights to personal challenges to building something or just thinking.

Over the last 227 days I have been committed to writing code every day. Sometimes this is a chore and other times it is one of the highlights of my day.  This daily goal of writing a little bit of code every days is my chance to play with software in a way that I don’t normally get to do with my job.  I have been writing python code for this and as a result of all this play my depth of knowledge has increased dramatically.  It’s code that I enjoy writing and as a result of that fun the positive emotions carry over to my work when I write code there.

Richard Feynman was one of the foremost physicists of the 20th century.  He never stopped enjoying himself or having fun with the work he did. In the book Surely You’re Joking Mr. Feynman it was quite apparent just how much benefit he got in work and in life from being playful and curious with everything and everyone he interacted with.

I don’t believe you can be a top performer in your field unless you can find the joy and the play in what you do. As adults we easily lose sight of this aspect of life.  Play is not only a chance to improve ourselves it is also part of the spice in our lives that can make it worth living at all.

The space to create new innovation is dearly missing from today’s work environments.  Creating a space to really encourage great leaps in innovation requires a few things:

  1. Space and time to think.
  2. Freedom to implement or test an idea quickly
  3. Collaboration to help get over hurdles

Recently I had the opportunity to work in a lab.  It was a bit of a mess – wires strewn everywhere, breadboards, toolboxes, soldering stations all around and within reach.  The mess actually encourages quick testing of crazy ideas. It creates an environment where there’s no limits and its easy to bend the rules to get something working.  If you want to drill a hole in your desk to attach something, go ahead. Run a wire into the next room – poke a hole in the wall.

This lab was in stark contrast to the IT management in which PCs were locked down. In the software world computers are our entire space in which to invent and create. Yet within the constraints of corporate IT the freedom to innovate can be severely restricted.  Without the ability to install software, tweak settings, plug in new devices our hands can be tied. Rather than call and IT admin to get a password to install something we avoid the confrontation and continue on with the status quo.

3507422366_c85fc9b9e2_zIn many ways the modern office is too restrictive to create truly game changing innovation.

I encourage everyone to strive to turn their office into a lab. Create a space where anything is possible!


The main lesson from a handful of recent books that I have read has been focus on fewer, more important things if you really want to make progress.  Less but better.  And that the best way to maintain the momentum on the projects you do want to take on is to make small steps and celebrate the progress, rather than reaching the end goal.

Studies have shown that the best way to create engagement in your work is to either experience achievement or recognition of achievement regularly.  This is something you have probably experienced personally.  The best projects are the ones that you can feel like you finished something at the end of every day.  Massive all or nothing projects that drag on each day where you work hard but it’s difficult to see the progress can wear you down very quickly.

With this in mind, it is important to structure your projects such that there are always pieces where people can feel personal accomplishment or otherwise provide some external recognition of something that cannot easily be sub-divided in to small tasks.

This works at various different scales too.  Entrepreneurs talk about Minimum Viable Products and “Done not perfect” to describe that initial ship-able product that can be celebrated as a turning point in the business.  At the day-to-day scale the accomplishments might be to implement a button on an app, or finalize financing terms for a business loan, or write a chapter for a book.  When you start off the day knowing the small task that provides a small step towards your end goal, then at the end of the day you can feel that sense of accomplishment when you complete it.

These small daily accomplishments are THE major factor in maintaining momentum.

Work each day without the sense of accomplishment is like crossing a bog – slow, tedious and dreadful.

With the sense of accomplishment it’s like driving a car on smooth paved roads – even if you take your foot off the gas you’ll keep going forward.

How do you make this concrete and apply it to YOUR goals?

There are two steps/skills required to control and build your momentum.

  1. Focus
  2. Planning

Focus is about very specifically knowing what your goal is and using that goal as part of all your decisions.  Develop your goal by taking time to really think about it, make it something measurable, attainable, and time boxed if possible: “lose 10 lbs by summer vacation”, “reach $1M in revenue this year”, “sign up 1000 new clients this month”.  With this goal in hand filter all decisions through it.  “Will X help me accomplish Y faster?” If the answer is No, then put it aside, decline the offer, and continue to use your time on things that will get you to your goal.

Planning is about taking the time to really think about how you can accomplish your goal.  Figure out how to divide a big goal into smaller daily or weekly goals – something that is actionable. $1M per year in revenue is more difficult to understand than a $4000 per day sales goal.  Then put systems in place to measure and accomplish those smaller goals. Up front planning is important but it is also critical to re-evaluate and adjust the systems as progress is made and you learn or experience roadblocks.

With a good plan and the ability to maintain focus on your goal you stand the best chance of having the daily accomplishments needed to create momentum.  Slowly but surely these accomplishments compound until massive progress is done, goals are met and success is had.

As the father of a 18 month old, it’s been fascinating to try and understand how her little mind works.  Currently she is getting quite good at classification: car, cheese, door, dog. Everything she sees is echoed back.

At this early stage in development it’s easy to see that what you say and do have immediate impacts with what she learns and how she behaves.

This doesn’t stop just because we get older and become adults.  Our minds are flexible and always changing – forming new memories, changing opinions, learning new things.  All these new growths in the mind are a result of the external and internal stimulus we give it.

It has been said that reading is the most effective form of mind control.  When you read, the words on the pages leave an impression. The concepts give your mind something to spin on until the books ideas merge with your own.

On the other hand. Feeding your mind with the wrong stuff can have unfortunate consequences. In an effort to teach Watson (IBMs Jeopardy winning AI) pop culture and slang, they fed it with the content from  Unfortunately it had the effect of turning Watson into a potty mouth.  With an AI they were able to simply undo that.  Human minds don’t have an undo function.

Do yourself a favour and be picky about the information and ideas that you feed your mind. Be mindful of the internal thought processes that develop your opinions. It will dramatically impact your future.

Sometimes you need to go back and look at the things you’ve done in the past to see if anything is due for an update or refresh.  Leaving old products to go stale is a sure way to let your customers know that you don’t care and don’t provide good customer service.

With that in mind we’re going back through our catalogue of products – stuff that we have spent thousands of hours developing – and seeing if we can apply what we know now to those products to breath new life into them.

Beyond the easy stuff like bug fixing, graphics tweaks and updating and modernizing the projects it’s a chance to apply entirely new concepts.

One that I’m particularly keen to experiment further with is Behavioural Dynamic Response.  The idea is to trigger context correct information to users to help push them through the key response indicators.  It may be a notification to get the user to finish the particular level they were on, or to come back to beat their friends score.  When you have sequences defined that you know you want your users to go through you can do whatever is within your power to get them to keep taking that next step.

Behavioural Dynamic Response is a super powerful technique that is not yet being widely used and shows a lot of potential for improving the user engagement with your products.

Even without the major overhaul and completely new features.  Just the occasional touchup to your products shows that they are still active and more worth checking out.

There are plenty of hurdles that you have to make in order to be successful.  Perhaps the most critical is taking something all the way to completion.  When you are not working with a team this is a deceptively difficult thing to do.

It takes determination, momentum and accountability to start a project and see it through to the end and beyond.  Many times you will hit on things that seem insurmountable or mind numbingly tedious.

When I launched the iPhone apps that I’ve worked on the struggles all add up. All the aspects to each project needs to be completed and to an acceptable standard.

  • Software development
  • Graphics
  • Sound FX and Music
  • business registration
  • iTunes accounts
  • bank accounts
  • certificates, signing, provisioning processes
  • marketing graphics, app descriptions
  • webpages, support forms
  • backend
  • testing and Quality Assurance
  • App Submission
  • ongoing marketing
  • iteration and improvements

If just one of these presents a hurdle you cannot overcome by either doing the work yourself or delegating to someone who can then your project is likely doomed to fail. Like the links in a chain only one link needs to break for the chain to fail.

That is why finishing is so hard.

Projects start with the best of intentions, fantastic ideas and a solid plan and can still be derailed by a hiccup.

The Agile approach of daily stand up meetings is supposed to prevent stoppages from lasting too long.  Eventually someone says: “I can’t continue until X is complete.” This is an indicator that someone in charge needs to take action quickly to keep the work progressing.

When you’re working on your own it becomes incredibly difficult to self diagnose these situations and push through.

That’s why I have tremendous respect for anyone who finishes a project on their own.

For those of us who can’t take the trip to Montreal this year for Pycon all the talks are on the Pycon 2015 youtube channel.

To become the best of the best you have to learn from the best and all the most active and knowledgeable Python developers are at Pycon giving amazing talks that will teach you something you didn’t know before.

This talk from David Beazley about concurrency and socket programming is quite informative. Watching him livecode the entire presentation is extremely impressive – it takes a tremendous amount of knowledge and experience to deliver a talk like this:

There are so many goodies in the youtube channel. I encourage every python programmer to watch and learn as much as they can.