Just Say No to the Costanza Wallet!

I’ve been using Apple Wallet for about 5 years now and as an early adopter of the Watch, I’m really invested in trying to avoid carrying a physical wallet around with me if at all possible. The convenience of paying with your watch is great, especially in the summer when you aren’t wearing a coat and may not want to be saddled down with a wallet.

ApplePay and the prevalence of tap in Canada makes this a near reality on the payments front. There are times though when I need to carry around a slimmed down wallet for transactions that exceed $100 or for government issued identification etc. That’s virtually unavoidable.

The Costanza Wallet

What is avoidable is carrying around a bunch of other cards that you don’t want or need to be saddled with. Those of us old enough to remember Seinfeld are well aware of the Costanza wallet, George’s perpetually exploding vault of receipts, cards and photos.


Photos are easily handled by your phone. In fact, so are paper receipts; a quick snap and you’ve archived that receipt for future use.

But what about the bevy of loyalty cards and other tickets? Are you using the Apple Wallet to it’s fullest capacity? I’ll address some gripes about the current state of the union and what could be better.


So in my estimation, airlines are probably the best at this to-date. All the major airlines support both adding a their Miles program cards to the Wallet. As well, everybody (that I use anyways: Air Canada, American, Delta, United, Porter, WestJet) supports the dynamic ticketing for boarding passes that update with gate changes, note TSA-pre indications and indicate all other boarding details like the class of entry onto the flight. It would be nice however if they would support scanning the Apple Watch versions of the Pass as handing a $1000 phone back and forth with a gate agent is not my idea of safe handling, especially when the device acts as TFA (two-factor authentication) device.

Event Tickets

It’s nice too when Ticketmaster and EventBrite support distribution of event tickets to the Wallet. It’s one less thing to lose in your wallet. Combine that with the ability to share and transfer passes to other people and you can avoid having to meet in person before events to dole out the ducats.

Alternate Payment / Loyalty

The hybrid payment method/loyalty point trackers such as a Starbucks card are sheer genius. They provide the ability to ensure you collect points with the transaction, are automatically presented as an option when you are in proximity of a favourite location and make for a convenient choice for the lazy. Layer on top of that the extended app that allows ordering in advance and auto-card reload and you have probably the premiere implementation that ensures repeat business.


Our company recently switched benefits providers from Sun Life to Manulife. I heard the odd complaint or two about the mobile application for Manulife. Having installed it and seeing that they implemented the Benefits card as a wallet integration was enough innovation for me in being freed from carrying one more occasional use card.

Loyalty Programs

The first question when being asked to sign up for a loyalty program is as to whether I need to carry a physical card. If so, I’m out. Offering an electronic version of the card is a much better alternative. A scan of my current Wallet reveals Indigo, Canadian Tire and PC Optimum.

I am going to pick on the last a little entry a little bit. While I had no issue merging my PC Plus and Shoppers Optimum program accounts, I found that the resulting Wallet card had a huge oversight. Under the previous programs, both cards had a scannable Apple Watch version of the card. Now the combined entity doesn’t have this. It’s a pain to have to remember to bring the phone as well.

Unsupported Cards

Do you have other cards for say gym memberships that require a scan entry? It’s asking a lot of smaller entities to provide Wallet support. There are however good apps like Pass2U that address this. The app allows you to scan the bar code, style it and even add a logo. Once you’ve designed the card to can place it directly in Wallet. I’ve tried this with a few and it’s a nice integration.

Hall of Shame

No post would be complete without the opportunity to highlight some pretty noticeable absences. The biggest offender in my books is Costco. They have a pretty lame app to begin with that doesn’t really tie back to your membership. Digging around looking for a card when entering a store is a pain at the best of times. Their use case screams for a card that automatically pops up when arrive at their location. I’ve actually read some blog posts where people defend the existing photo ID card and somehow ascribe special status. When you couple this with their antiquated POS systems that don’t support tap AND their long-standing feud with Visa in Canada, I can’t help but think they don’t put customers first in reducing friction in the experience.

Apple Pay Cash

Not yet released in Canada but hopefully coming soon is Wallet support for Apple Pay Cash. Imagine being able to pay IOUs and receive money from friends right away instead of using Interac Money Transfers or hearing “I’ll get you some cash next week”? I imagine that amounts will be severely restricted for obvious reasons, but that could prove to be a pretty useful addition to the Wallet.

What’s next?

Ideally in the future, government agencies will support digital identification and render many of the other documents we carry physically a thing of the past. Driver’s licences, passports, health cards… the list of possibilities goes on. Repeat viewings of George Costanza’s wallet will seem quaint and dated by future generations.


5 Things About the Apple Watch After Wearing it Three Weeks

Having pre-ordered the Apple Watch but not expecting it to arrive until mid-June, I was pleasantly surprised to see it drop on my doorstep the day after launch. It’d be pretty irresponsible to write a review of the device after only a few hours or even days, so I sat on my thoughts and decided to see what my long-term experience has been.

Here’s what I’ve figured out after about three weeks of wearing it.

You Need the Tutorials

Being pretty technically literate, I dove in the first couple of minutes after opening it only to find I was a little lost with navigating the device. There are a great number of new gestures and controls in operating the crown and Force Touch. Do yourself a favour and watch a few tutorials to get the gist of the new gestures and where things are on the phone. You’ll save some hassle and frustrations.

Notifications are Great (Once You Corral Them)

I really like the way that I can drop my phone somewhere at home or the office and roam freely. Most notifications that your iPhone would receive are mirrored on the phone. This frees you up at to glance at the watch on an incoming notification to see if it’s important enough to warrant greater attention or not. The downside to this is that you may have a ton of notifications early on when you factor in Mail, Messages, Calendar and 3rd Party apps like Slack, Trello, Twitter, Facebook etc.

You’ll end up wanting to restrict those that come through to the watch to a manageable lot.

Heads-up Navigation

My favourite feature discovery was entirely accidental. I mapped out directions on my iiPhone  to a friend’s house and tossed it on the  seat. As I was driving with my arm perched on the window, I was receiving haptic notifications and a display of the heads up directions on the watch. I never asked it to do this, but it was a welcome integration. I found it be far safer than attempting to glance at a phone or GPS.

Activity Tracking

I’ve been wearing the watch for all waking hours including playing sports (ball hockey, squash etc). The activity tracker does a pretty nice job of identifying time spent standing, in motion and involved in strenuous activity. I like the reminders through the day about reaching goals or changing up your pattern if you’ve been sitting for a while. I found the positive feedback loop is almost addictive as you are encouraged to reach your daily and weekly goals.

If It Takes More Than 10 Seconds You’ll Want Your Phone

If you are expecting to do a lot with apps on the watch, you are likely to be disappointed. They are generally slow to launch, incredibly limited and more cumbersome to use than your iPhone. That said, I do like the Siri integration and the ability to text back to someone directly from the watch. As a rule, I’ve found that if something is going to take more than a few seconds, it’s worth simply pulling out the phone. The two are meant to work in tandem and the watch is not intended to replace the iphone. Don’t frustrate yourself by trying to do too much.

Over the course of the next few weeks once developers have had a chance to actually try their software out on real hardware, I’m sure we’ll see many innovations and improvements in the experience. That said, by framing my expectation for the use of the device as a supplement to my phone, I’ve been pleasantly surprised with how much I rely on it now.

3 Annoying Things About Ford Sync

I’ve had a Ford Escape for about 4 years now and one of the things I really love about it is the integration of the Microsoft Sync system with Bluetooth devices. From both a safety and convenience standpoint, it’s fantastic being able to use the phone handsfree and to stream Bluetooth audio to the stereo with a minimum of effort.

That said, there are a few really major annoyances that are easily correctable but have yet to be addressed in any firmware updates.

  1. When you get into the car and maybe settle in listening to a news story or catching some scores, there is nothing more annoying than the “911 Assist Disabled” message that appears and interrupts anything playing on the radio for about 10 seconds. The 911 Assist feature will automatically call 911 if you are involved in a collission. Besides being a feature that I am not interested in having happen automatically, but the constant reminder that I don’t want the feature turned on is very frustrating. I don’t know how many times this has happened to me, but it always seems to be at the most inopportune time and I’ll miss something that I wanted to hear on the radio. They added a firmware update a few years ago to at least suppress the spoken message telling you that you had disabled the feature. That was a major improvement. But the 10 seconds of silence while the display tells you that it has been disabled is incredibly annoying. Yes, I disabled the feature. Please stop reminding me of my choice.
  2. The Bluetooth audio streaming feature is fantastic. It’s nice not to have to plug in USB but instead to control and operate my iPhone to play podcasts and music over the stereo via Bluetooth. The playback is flawless and pretty seamless. The annoyance is that if you are not streaming Bluetooth, but instead are listening to the radio, the Sync system will still kick in and start Bluetooth playback on your iPhone. What this means is that every time you get into your car, your iPhone will silently be playing back and streaming audio to Sync even though you aren’t listening to that input. The result is an incredible drain on your iPhone battery. It’s incredibly annoying to constantly check your phone only to find that it is silently playing and sucking the life out of your charge. The only workaround is to Pause Bluetooth streaming while listening to it before switching to another media source. Even this technique seems to work less than half the time. To my way of thinking, this is a major gaffe that probably affects a lot of people.
  3. This is a minor quibble, but knowing the nature of Bluetooth playback, it would be nice if the song tile and artist would show on the display. It seems like an oversight in the design that would make the experience a lot better.

Again, I love the integration between Bluetooth devices and Sync for the most part. It makes for a much better driving experience and is certainly much better than the days of plugging in AUX inputs and fiddling with tapes and CDs. But a few minor improvements in the technology could go a very long way in helping make it a better all around product.

5 Things About Bell Fibe TV That Are Great/Suck

I recently switched from Bell TV (Satellite) to Bell Fibe TV in the hopes of reducing my bill and still retaining the programming that I’d like. I decided to write this post tonight because that decision has inadvertently caused me to miss watching the Senators game (but more on that later).

Bell has a real push on to get customers to move from satellite to a wired service. I imagine it  enables them to bundle additional services (internet, cellular) and to reduce the cost/complexity of installation.

After about 4 weeks on the service I have some strong thoughts. My installation was pretty smooth because I already had RG-6 going to each drop and opted for that instead of CAT-6. 

Here’s the good:

  1. Better Pricing – Hands down, Fibe is much better priced than satellite. The Better package gives me most of what I want. Because of the number of simultaneous programs that can be recorded (4 HD), timeshifting which is available in the Best package isn’t really necessary. As well, you don’t pay a silly surcharge for getting HD channels.
  2. Local Channels are HD – On satellite, the locals that were provided were mostly standard definition. With the ability to localize multicasts by city, this means that the local CBC affiliate is now HD for me. This is great for those nights when a Senators game is not the national broadcast on CBC. I used to have to rely on OTA (over-the-air) to get an HD signal.
  3. On Demand Programming – There is a ton of on-demand programming available, ranging from kids shows to episodes of current run shows that you may have missed recording.
  4. Consolidated PVR – This was the biggest selling point for me. One receiver acts as a PVR. All other remote receivers use that receiver to record programmes. The interface is pretty seamless and intuitive. It’s nice to start watching something on one TV, pause it and move to another.
  5. No Weather Dropouts – Very heavy snow or rainstorms would create outages with Bell TV. Usually they didn’t last long but did happen at inopportune times. It’s nice not having to worry about that anymore.

And then the complaints:

  1. Guide Sucks – The guide is horrible. It looks great, navigates quickly but ultimately is lousy. You cannot filter out all of the channels you are not subscribed to like you could with satellite. Satellite showed you the channel in a different colour, or you could hide unsubscribed channels altogether. Not so with Fibe. I guess they want you to see what you are missing so that you’ll be prompted to upgrade. Instead you have to go through the labourious task of setting up Favourites to only show channels you want… ONE AT A TIME. And all that sharing technology between the receivers? Not for the guide. You’ll need to go through that painful exercise for each one.
  2. No Sportsnet Senators channel – This is the one that prompted me to write tonight. Despite my research before switching services and confirmation from the Bell’s own site, the Sportsnet Senators channel which is used when Sens games are bumped (tonight in favour of the Jays home opener) is NOT available to Fibe customers. Well at least not in Ontario. I had this confirmed by Bell. Please lodge a complaint with them if you’d like to have this added as per their own site.
  3. Programming Timers – On satellite, any timer you set started a minute early and 2 or 3 minutes beyond the scheduled time by default. You can extend the timing on Fibe as well, but for EVERY programme you schedule as you set the recording. Doing this by default would make a lot more sense. I’ve missed the end of a few shows already because of this.
  4. No UHF Remote – A minor quibble, but the IR remote seems to require that you be directly facing the receiver. It doesn’t have much field of vision from an outside angle. The UHF remote with Bell TV is much better, even allowing you to put the receiver in a ventilated enclosure with no line of sight.
  5. Sacrifice of Internet Bandwidth – Again, this is a minor quibble. I had Fibe 25 internet service before adding television. The marketing material fails to inform you that you will be capped at 15 instead. It’s understandable that they want to reserve bandwidth for excellent TV performance, but they should be a little more forthcoming with that information.

Overall, I’m fairly happy with the service, with the consolidated PVR trumping most issues. The good news for Bell is that most things on the complaint list can be fixed. It’s only software after all.

How to Work from Home

The past year has seen a lot of change in my professional life. After spending 17 years working from home on my own business, my involvement in our startup Health Wave, has meant that I’ve returned to an office environment after nearly 2 decades of working alone.

While there have been some adjustments on my part in getting used to working in the same room with others, in an open space environment no less, for the most part the transition has been pretty seamless. Amongst our team, the subject of working from home has come up a few times. Braatzy (our CEO, who is used to working in ANY environs thrown at him, be it office, train, airport, taxi) suggested I impart a little wisdom and guidance on how to do it the right way (or at least in the way that it works for me).

First off, let me opine that I don’t think working from home is for everyone. There are some people who need the externally imposed structure of an office, set hours and someone checking in on them offering guidance. And for those that will be successful at it, it’s still a learned process. Looking back to 1995 when I suddenly had to start working out of my house, I realize that it probably took me at least a year to get disciplined and do it correctly.

So here are my thoughts about how to make the transition:

  1. Have a dedicated space for work. I can’t stress enough how important it is to pick an appropriate place in the house to work from. Working from the kitchen table or from the couch isn’t going to cut it. While some people may have a small apartment and don’t have the luxury of a free room, if you have an office, spare bedroom or some other space (preferably with a door), stake out that spot and consistently use it as your work area. For me, I’ve almost always had either a spare bedroom or an actual office with a proper desk.
  2. Respect the bounds of the office. Again, this may be difficult if you have limited space, but as much as possible, treat that space and your presence there as “work time”. It’s important to let your family or housemates know that when you are in your “office”, treat it like you aren’t home. The same goes for you when you are finished working for the day. Close the door, leave the space and put work aside.
  3. Always shower and dress for work. I’ll bet some people laugh at this because one of the romantic notions of working at home is “hey I can work in my pyjamas”. I never sit down to my desk without first having showered and dressed for the day. It just puts you in the right frame of mind to treat home and work as separate places, even if the trip to work is 10 steps down the hallway. As to dressing for work, I’d say you’d look pretty silly wearing a suit, but dressing in a manner that would be presentable (even if casual) in front of a client or co-worker will put you in the right frame of mind to do better work. Check out what this recent Cracked article had to say about it.
  4. Have consistent hours. As much as possible, start and end your workday at the same time. It’s very important to keep work and personal life separate. When I first started working from home, it was very tempting to just work on into the evening every night. Eventually it takes a toll on you and you’ll actually become less productive. There’s nothing wrong with working til 5 or 6 and having dinner and then “going back to the office” from 8 to 10 some nights. Just don’t try to combine the two, like working in front of the TV in evenings. When you are working, you are working. When you are relaxing, relax. You can’t cheat the system.
  5. Get rid of distractions. One of the big pluses in working from home is many office distractions are eliminated. There’s a lot of time wasted in offices with people socializing beyond a reasonable amount; with excessive meetings; and from just spacing out because of the lack of airflow or some other comfort complaint. The advantage of working at home is that you have complete control over the environment. Don’t squander that opportunity. I personally like listening to music or possibly some talk radio while working, so long as it doesn’t break my train of thought. Is a TV a great thing to have in your office? Probably not. Tempted to try to do laundry and kill two birds with one stone? Not a good idea. Being a stone’s throw from “home” makes it really tempting to try to multi-task household duties. The stop-start of juggling work and home will eat away at your time in small chunks, but more importantly will interrupt your train of thought while trying work through whatever task is at hand.
  6. Get out of the “office”. I mentioned that traditional offices have a lot of time wasted with excessive socializing. But we are social creatures and do need that on a regular basis. I’ve found it really a great break in the day to schedule a coffee with a friend or a Skype session with a colleague. You will go crazy if you are cooped up all day, every day alone. I found that I needed to schedule a coffee, lunch or some other break on a regular basis to keep me from sitting in front of the computer for extended, endless sessions. Go for a bike ride at lunch or play a sport (I play ball hockey) to break up the day. You’ll find after the break, you’re excited to get back into work. 
  7. Don’t be a slave to technology. This one extends to any work environment. I’m astounded by how many people jump every time their phone rings, when they get a text, when they receive an email, an instant message comes in and on-and-on. Instant communication is a blessing and a curse. If you allow yourself 5 or 6 different mediums to be distracted, you’ll take hours to accomplish what you could have in single hour. Computers can multi-task; human brains really can’t most of the time. If you need to be available, pick ONE means of access and tell those who need to get you what that is. Turn everything else off. Resist the temptation to hawk over your email and instead check it at timely intervals through the day – most of it doesn’t require your immediate attention.

I’d love to hear comments and feedback from others in their experience working from home. It’s great if your employer gives you that freedom to do so. Make the most of the opportunity and prove to them that you’re capable of making the most of it.

Handling Holidays and Business Hours

It seems I’m always apologizing for not writing blog posts more often. I looked back and see that the last entry was back in July. Things have been tremendously busy to say the least.

I ran into a quick requirement the other day for NDstorefront’s new admin application. An important metric to track is the time between order placement and fulfillment. Pretty straightforward requirement, right? Of course upon further inspection, it became clear that in order to have meaningful data on these times between order placement and shipping of the order, we’d need to take into account business hours. For example, if an order is placed on a Saturday night and fulfilled by the distributor on the following Monday, it’s effectively same-day fulfillment, as Monday is the first business day following the order date.

To that end, I located a pretty useful gem called business_time that handles this quite nicely. It’s an extension to ActiveSupport that adds some nice extensions to Time and Date to say things like:


You can configure the business hours as well to properly manage times outside of operating hours like so:

BusinessTime::Config.beginning_of_workday = "8:30 am"
BusinessTime::Config.end_of_workday = "5:00 pm"

I won’t go into the details of implementation as the documentation is quite good. This of course is only half a solution as it really only accounts for weekdays versus weekends as workdays. There is holiday support in the gem, but you must configure the list of holidays. I really didn’t want to be in the business of configuring and maintaining a set of holidays for each year. As well, there are all sorts of special cases as to when statutory holidays are observed as was the case in our last Christmas season. December 25th fell on a Sunday in 2011 and here in Ontario, that effectively meant Monday and Tuesday were stat holidays (with the observation of Boxing Day being shifted one day because Christmas was shifted as well).

Seems like a possible nightmare. Enter the holidays gem.

This is really well written gem by a fellow Canadian Alex Dunae out of Vancouver (Island). He’s tackled the non-trivial task of determining holidays for particular locales, including handling tricky cases like the one mentioned above, Easter (which is really tricky because it can fall in different months) and whether you want the actual holiday dates or the observed dates.

For my purpose, I needed to fork the gem and add some functionality to handle some dates for Ontario in a different manner. In practice, New Year’s Day is observed on a Monday when falling on a weekend as it is granted as a statutory holiday. The gem also didn’t quite have the support for the case where Boxing Day falls on a Monday , but needs to be shifted to Tuesday to make way for Christmas Day. Fortunately, modifying it was a breeze. Alex has used YAML files to describe the rules that in turn build the code required via Rake task.

With a modified version of the gem in hand, I was now able to feed the holidays into business_time. I worked on the assumption that we would be deploying a new app within 2 years and only needed to project that far forward with holidays:

Holidays.between(Date.civil(2011, 1, 1), 2.years.from_now, :ca_on, :observed).map{|holiday| BusinessTime::Config.holidays << holiday[:date]}

And that was it. I was able to look back on some recent data we had collected on shipments by our distributor and get an accurate reflection just how long it was actually taking to fulfill orders.

Customizing ActiveAdmin

Has it really been 3 months since I last wrote a blog post? Embarrassingly: yes. Things have been pretty busy and there’s been lots learned over that time.

I thought I would write a quick post about customizing the ActiveAdmin gem. I first saw ActiveAdmin at RailsConf and thought that it was a pretty cool idea to simplify the tedious task of creating CRUD interfaces for administrative tasks. It’s something you have to do in virtually every project, but is a pretty mundane exercise of repeating virtually the same code for each model you need to manage.

I’m not going to go into detail on setting up the gem for initial use because I think they’ve done an excellent job of it, but I will share some code samples that go above and beyond what appears in the documentation. One of the pitfalls of tools like these is that often the easy stuff is easy, but anything that requires customization is not. Happily, I’ve found this to be untrue with ActiveAdmin.

Adding a Custom Action

ActiveAdmin is DSL-driven and they’ve anticipated that users will want to add to the controllers that are automatically generated under the Admin namespace. In my example, I am using ActiveAdmin to list all of my application users. I wanted to add the ability for the administrator to be able to impersonate or sign in as a particular user.

My basic registration of the User model in admin/users.rb looks like this:

ActiveAdmin.register User do
  filter :username
  filter :email

  index do
    column "Username", :sortable => :username do |user|
      link_to user.username, schedules_path(user)
    column :email
    column :user_type
    column :current_sign_in_at

To add the impersonate action, there is a single DSL block that needs to be added:

  member_action :impersonate do
    sign_in(:user, User.find_by_username(params[:id]))
    redirect_to root_path

Adding the member_action call to the registration definition will add both the appropriate controller action and route. Adding the new link to support the impersonate action is as simple as referencing the new named route:

  index do
    column "Username", :sortable => :username do |user|
      link_to user.username, schedules_path(user)
    column :email
    column :user_type
    column :current_sign_in_at
    column "Action" do |user|
      link_to 'Impersonate', impersonate_admin_user_path(user)

Of course, the corresponding collection_action call is available as well.

Removing the New Button

Out of the box, one of the default actions is to provide a ‘New :model’ button. In my example, managing Devise users manually was not necessary and I wanted to remove this button from the layout. It’s easily handled by adding the actions keyword to the registration block.

I specifically only wanted to show an index and added this to the block:

  actions :index

Huh. Really? That simple.

Default Sort Order for Resource

If you’d like to set a default sort order for your resource index, it’s quite simple as well. On registration, add an options hash:

ActiveAdmin.register User, {:sort_order => :username} do

All in all, my first experience in using ActiveAdmin in a new project has been pretty worthwhile. As I tackle more sophisticated customizations, I’ll publish a few more posts about it. As well, there is a Google Group for addressing any technical questions about the gem.