We changed our name! After 14 years of creating award-winning digital products & services, it’s time for a new identity that better reflects the human insights-driven, digital customer experiences we create.
We changed our name! After 14 years of creating award-winning digital products & services, it’s time for a new identity that better reflects the human insights-driven, digital customer experiences we create.

AIAIO: Our Blog

AIAIO: Our Blog

The pulse and reviews of Alexander Interactive

Archive for the ‘Technology’ Category

The Fight to Ride: Dissecting the Disruption Battle Between Old & New Ride-Hailing Apps

“Who’s that guy waving at in the middle of the road?” If you’ve had a lapse in memory or are just too young to remember what ‘hailing a cab’ looks like, you’re not alone. In today’s digital world, hailing a ride means going to your smartphone and hitting “request.” No waving necessary.

An industry valued well over a billion dollars, ride-hailing apps have taken over traditional methods of public transportation, and major cities around the world either love it, or hate it. For New Yorkers, the flood of yellow cabs in the streets has dwindled to a steady stream, overshadowed by bright pink Lyft mustaches and sleek blue Uber ‘U’ stickers. But for cities like Austin, Texas, where strict voters overruled the use of such companies for lack of certain regulations (think fingerprint-based background checks), commuters have to fend for themselves. So while it may seem like Uber and its competitors are winning the fight to ride, you can’t yet count out the old-timers in their yellow rides of sunshine. This disruption battle has only just begun.

Uber, founded in 2009, stands at the foundation of the ride-hailing industry, but not without pressure from its competitors. Lyft joined the battle in 2012. Followed by an outbreak in services overseas like Ola Cabs in Mumbai, Grab in Southeast Asia, and the women only service SafeHer in the U.S. arriving later this year. And they all want what Uber already has- disruption.

According to Harvard Business School professor Clay Christensen, author of The Innovator’s Dilemma, for Techcrunch, “a disruptive product addresses a market that previously couldn’t be served… it offers a simpler, cheaper, or more convenient alternative to an existing product.”  Today’s existing product? Taxi cabs.

The first means of ‘ride-hailing.’ The original form of a public chauffeur. Cabs were established long before the cultivation of online transportation networks, and have used this ‘first-of-its-kind’ status as their platform for battle against companies like Uber and Lyft. But now, cabs have something more than age in their favor. The launch of ride-hailing apps made specifically for taxi’s allowed the yellow cab industry to finally put up a fair fight. Taxi-hailing apps like Gett, Arro, Flywheel, and Way2Ride, have all successfully launched in major cities in the past few years. Most notably, Gett has already announced that it’s revenue has tripled annually to $500 million, inching closer and closer to Uber’s $800 million last year.

With more and more apps coming to fruition every day, we may never see a clear winner of this battle. But one thing is certain, there’s no clear frontrunner either. There are downsides and upsides to ride-hailing apps, taxi-hailing apps, and just plain cab hailing. Time, money, and overall experience affect the ratings and ultimate success of these networks. Here are the most important points of contention these ride-hailing apps are fighting over.

Surge Pricing vs. Flat Rates

Surge pricing has been a huge cause for complaint for users of both Uber and Lyft. It’s not uncommon for users to experience rides for as much as 3X the original price during heavy traffic periods, extreme weather and heavy social holidays or events… along with what appears to be for no apparent reason. This is where Gett and traditional Taxi’s come out on top. Gett is primarily based on it’s $10 flat rates for black car trips in Manhattan (up to a half hour), and taxi’s don’t have a surcharge at all.

Winner: Gett/Traditional Taxis


Compared to Uber’s 14,088 black and luxury cars and Lyft’s 5,000 dispatched vehicles in New York, the Taxi and Limousine Commission has roughly 13,437 medallion cabs. That’s not that big of a difference; but when looking at the number of specific drivers for Uber– the company has approximately 32,000, whereas Gett hasn’t yet reached 6,000, says NY Daily News.

Winner: Uber & Lyft 


Uber provides 82,000 rides per day in New York. Taxi’s make 485,000, without even factoring in Gett rides. This doesn’t need to be further debated …

Winner: Gett/Traditional Taxis


According to Pew Research Center, 33% of American adults have never heard of online ride-hailing services. Of the remaining percentage, only 15% have actually used them. Uber and Lyft might be well known in the major cities, but it’s not as widely used as regular cab systems everywhere else.

Winner: Traditional Taxis 


Last year, Lyft made $800 million. Pretty impressive, except Uber made nearly $2 billion. Talk about an upset. Comparatively, the New York Taxi and Limousine Commission released data last year that indicated a 18.4% gross revenue decline from the post-2012-far-increase peak.

Winner: Uber & Lyft

As you can see, the battle for the top spot on the disruption podium is far from over. Luckily for commuters, no matter who wins, there will always be a ride and disruptive technologies will keep riders as the real winners.


How to Hire (And Retain) More Women in Tech

According to the US Census Bureau, women make up just over 50% of the total US population and 59% of the US workforce. And yet, when it comes to technology, the number of women at the table plummets. A Deloitte report exploring the gender disparities within the tech industry found that the number of women employed by these companies (including some of the world’s most recognizable brands like Microsoft and Google) is less 25%, even fewer for technical roles. So what can tech companies do to recruit, hire and retain more women?

  • Provide educational opportunities and chances for women to learn. Part of the challenge in hiring women is that there are presently fewer applicants in the job pool. Less than one fifth of US computer science degree recipients in 2013 were women. While not all people working in IT or other technical positions have computer science degrees, companies without training programs or educations offerings are missing out on opportunities to consider women who’s skills can be polished once hired and can be developed into a true asset.
  • Consider how job descriptions and outreach are worded. Deloitte identified two major keys for recruiting efforts. The first is to make it a priority to avoid words that demonstrate or present any sort of (unintentional) bias that may deter a woman from applying. Secondly, reconsider requirements and recognize that mandating a significant amount of years of experience inheriently slashes many women from the pile of applicants.
  • Make it a priority to help ensure jobs are satisfying for women once they are hired. To consider simply getting women in the door is setting up for failure. A National Center for Women & Information Technology (NCWIT) study found that not only are women in technical positions between 25-34 finding increasing dissatisfaction with their jobs, 56% of those women are leaving before the highlight of their careers. This quit rate is twice as high as men in the same positions. Include true flexibility especially with scheduling. Develop catches to stop any sort of discrimination or bias that may not be recognized.
  • Create a path to leadership. Opening the path and demonstrating to younger women how they can grow can be a critical piece of the puzzle. Develop a mentorship program that pairs up women executives or management with younger women. This could be as simple as making tan internal program to create lasting bonds among coworkers or it could be going the route of Facebook, Pinterest and Box who paired together to create WEST (Women Entering and Staying in Tech). WEST pairs experienced women in technical roles at one of the three sponsor companies with younger women within their region (as opposed to their company) to provide 1-on-1 mentorship. Developing leaders does more than improve the worker’s life; it improves a company’s bottom line. A Credit Suisse report found companies with women in leadership experienced better sales, higher returns on equity, better stock performance, and higher payouts of dividends

Hiring (and keeping) female tech talent and creating leadership opportunities for these workers is more important now than ever. With benefits clearly demonstrated, it’s up to today’s tech leadership to identify what women need to feel good about their jobs and comfortable in the workplace – and make the necessary changes.


New Manager Tools

This article leans slightly towards Technology Management but is applicable across disciplines

You've been a great senior resource, you've lead a team or a project, and you've made the decision, along with your manager to transition to some kind of management role. If you are still thinking about it, or wondering what it will be like, start here: This 90-Day Plan Turns Engineers into Remarkable Managers. This article will give you all of the thought starters your need to decide if management is something you want to pursue.

Below are some required reading to add to your utility belt. Start taking a read through these, and make sure you block off the appropriate amount of time each week to continue your learning! This list is meant to be a starting point for new managers, not an all inclusive list of manager resources


  • Managing Right for the First Time – This book is intended as a field guide for first time managers, or for managers who want to begin doing a better job. David Baker worked closely with 600+ companies and interviewed more than 10,000 employees, then summarized the findings in an interesting and eminently readable form. Read this book and you're likely to understand management and leadership like you never have before, but also learn very practical steps toward becoming a better manager and leader.
  • Getting Things Done: The Art of Stress-Free ProductivityNote: I'm not advocating for using the GTD system. Use what works for you. However, the first half of this book is a gold mine for how to think about planning, resources, and managing your own and other's tasks. I personally do use GTD, but the lessons, and the way of thinking that this book opens up is transferable to any system. It got me thinking about planning and delegating in different and exciting ways. Read the introduction and I guarantee that you'll see scenarios you recognize and want to scream YES, YES I DEAL WITH THIS. I HATE IT! HOW DO I FIX IT?
  • The Personal MBA: Master the Art of Business – This book is, but isn't about MBA. It's a toolkit of how to handle various situations and grow your skill set. It's not meant to be read cover to cover, but peruse the table of contents you'll see things you want to read.
  • Emotional Intelligence for Project Managers: The People Skills You Need to Achieve Outstanding Results – Great book on emotional intelligence

Articles to read

Websites to subscribe to


  • Manager Tools Podcast – A huge library of how to deal with any situation. Skim the list, there will be something in there you want to learn about. Don't forget to subscribe!

If you have anything that should be on this starter list, let me know!

You can follow Tim on twitter.


How to Sync Basecamp Todos to Omnifocus or Todoist

Basecamp is a large part of our process at Ai. It tracks most of our communication (a lot of this has been moving to Slack). Basecamp serves as our system of record for signs-offs and deliverables. We also use it’s “todo” function pretty heavily in the planning stages and tracking client tasks. Once we get into implementation, we transition to Jira, as it’s more powerful. Clients do not have access to Jira.

I don’t have an issue tracking Basecamp tasks. It’s really good at emailing you when something is due. But, as I’ve said before, I’d be even BETTER at it, if the tasks were in my world. My world is Omnifocus, but there is a VERY large contingent of Todoist users at Ai. I am the outlier in this. In the past, my reasons for not using Todoist were I didn’t want Ai tasks and personal project tasks in the same app, the hotkeys weren’t up to snuff, and I didn’t want to pay for premium to get notifications. I’ve since ignored these rules with Omnifocus; It runs everything in my life, it DOES have great hotkeys, and I dropped the $$$ for premium Omnifocus which was more expensive than Todoist premium in the long run. But, this is a topic for another post.

Back on track. How to get Basecamp todos into my system? Again, Zapier to the rescue. Zapier can connect to Basecamp, do some basic filtering to make sure I only get tasks that I care about, and drop them into my Omnifocus inbox. Most of the following steps hold true for both Omnifocus and Todoist

  1. Create a new Zap that triggers when a new Basecamp todo is created. Have it create a new task in your system
  2. Select the appropriate Basecamp account and test it
  3. Select and test your Todoist/Omnifocus account
  4. Choose your Basecamp Account, Project, and Todo list. If you want to filter even more by only items assigned to you, add a custom filter. Do this by either Assignee ID or Name
  5. Match up the Basecamp data to your tool of choice. First is how I send it to Omnifocus. Note, I do need to populate the due date by hand. In both options, I add the url back to the task in Basecamp so I can easy mark it off or comment in it when I’m done. Todoist lets you be a LOT more granular and handles all of the fields so you have no manual intervetntion
  6. My tasks are now in my world. Profit.


You can also follow Tim on twitter


Basecamp 3 is Coming

Basecamp 3 is coming and I’m exited. Below are excerpts from Basecamp’s preview post on what I’m looking forward to most

Basecamp won’€™t send you any emails, push notifications, or in-app notifications if it’s outside your specified work hours. Live a little! Work Can Wait until you’re back at work.

group chat room for quick discussions

This is cool but it came a little too late. We’ve been using slack for project based and individual chat. It has a dedicated app that is easy to cmd+tab to. I see campfire in the browser sitting in an unchecked tab and not being useful

Show someone you care by clicking the Applause button on any message, comment, document, or answer on any automatic question. They’ll get a discrete notification letting them know you appreciated what they said. This is a great way to show your support for someone’s suggestion, idea, or point of view without also sending a notification to everyone else on the project.

e.g. What did you work on today€ or Are you blocked on anything?)

Hmm, I wonder if this could be used for virtual scrum?

@mentions: Psst!


They’ll instantly get a notification letting them know they’ve been mentioned, along with a direct link right back to where you mentioned them

If you’re not in the desktop app

Buhhh wait what? Ok maybe what I said about the tabs and apps above might not apply

You can bookmark just about anything in Basecamp 3 so you can jump right back to it from anywhere else

This will be handy. Here are always a few key threads I end up digging for. Usually long running threads about key deliverables

At the bottom of every project is a timeline of all activity going back to the moment you started the project

I like this if search hadn’t been improved. This has a lot easier than scrolling through all the lists looking for something around a certain time

So you can make a folder and put a photoshop file, a Google doc


Now you can assign to-dos to multiple people. Now you can set date ranges, not just single due dates. Now you can bulk assign multiple to-dos with a single click. Now you can select multiple to-dos and move them as a group.


Now you can save any new message or document as a draft before you publish it

Basecamp 3 allows you to see all the work you’ve assigned to other people

You can sign up for an early invite here


PHP7 Vagrant Box

We’re keeping a close eye on PHP7 and what it means for the future of the language. We know it’s coming and will eventually effect the way we work and how we write PHP. The earlier we can get eyes on the new paradigm, the better.

Installing in your local dev machine is risky, especially if you have ongoing work. As usual, Vagrant comes to the rescue!

Rasmus Lerdorf has put together a Vagrant box to ease in the setup and isolate your testing. 

If you use Atlas, check out the box here. Otherwise, the readme is available on Github


Mongular, a Content Delivery System

Mongular is something to keep a close eye on. We’ve had a number of projects here at Ai where we might want something… other than a CMS. Where content is king and that content is decoupled from the system using or displaying it.  Other solutions that we’re excited about are Prismic and Contentful.

Systems like this would let us do whatever we wanted with the site. Not being tied to the confines of a particular CMS’ way of doing things could be freeing. These systems offer much more powerful ways to relate content or parts of content to each other. Going far beyond just weighted tags.

What is Mongular?

Mongular is a Content Delivery System (Framework?… not really) built to take advantage of all the tools available to speed up the delivery of your content to users, and reduce server load.

Content Delivery System?

Mongular wasn’t built to be a Content Management System, even though with enough development it could probably be built to do just that.

Mongular was built to deliver content in an easy, efficient and extendable manner. Where developers take it, is up to them.

Related reading:


Apple Pay and Magento

The Business of Apple Pay (Alec Simonson)

On the outset, Apple Pay is very cool and could very well be the wave of the future. A lot of this hinges on “what’s under the hood” in terms of Apple’s contract with the leading credit card companies who helped with the development. If everything is open, and companies like Samsung can let their customers pay with NFC technology as well, I could see this as something that will be successful, adopted, and an example of Apple leading the way. However, if Apple goes all proprietary (as they love to do) and contractually forces these major credit cards to only use their devices, or charges other companies like Samsung to license their payment platform, or otherwise mandate that all touch-to-pay via smartphone methods are hereby known as “Apple Pay,” I could see adoption problems happening. Open standards have frequently been key to paving the way to adoption, and this has never really been Apple’s model in the past. For example, AirPlay is really cool and loved but does not work outside the environs of iOS, and can therefore never reach greater than 14.8% penetration as of this writing. So Chromecast was born, and while not nearly as simple or feature rich, it’s open to both Android and iOS and therefore has a much higher potential of adoption. Feature expansion will follow.

One of the aspects of Apple Pay that I think is great is that merchants aren’t really troubled with much of everything, since most of this is really on the backend. A new reader with NFC capabilities, and they’re off and running. Low cost or no cost adoption. Or is it? Nobody has mentioned what Apple’s commission is on this latest development. An article on Forbes suggested it may be around 0.2%, giving Apple $0.20 for every $100 spent. That’s not much, but when you consider what percentage that is of the credit card companies’ net (perhaps around 14%), it starts to look more substantial. Credit card companies like their investors, so it’s hard to imagine them not wanting to pass that extra cost onto merchants, who will be all-too-willing to share that with consumers.

All of that aside, it’s very smart and forward thinking, and early adopters will likely be looked upon with jealousy by others. From an implementation perspective, adding Apple Pay will likely be as easy as it was to add Google+, and merchants will do it. But the long-term prospects will rely highly on what sort of deal Apple made….the devil is always in the details.

The Technology of Apple Pay (Tim Broder)

Out of the gate, Pay is native app only. This leaves Magento sites at a disadvantage. In the future I’d like to see Apple open up this functionality to Safari on both mobile and desktop. Pay already has one-time number generation. This could be implemented in the browser similar to how 1Password can inject a credit card number into a form. Until something like this happens, only sites with a native app siting in front of Magento’s API will be able to take advantage.  If you are looking to investigate this space,, an unofficial Magento SDK, is a great starting point.

I’ll be curious if a developer comes up with a browser dedicated to this functionality. Tap into the Pay API and generate credit card numbers ad hoc, and bridge between Pay and e-commerce sites. Or, take it a step further and develop a custom keyboard for iOS 8. If allowed, it would be more seamless than a whole seperate browser. I say “if allowed” because there are some restrictions on what 3rd party keyboard can do. For example, they cannot touch passwords. The stock keyboard reasserts itself when tapping on a password field.


Lean UX and Ecommerce Design

Alex Schmelkin, Co-Founder and CEO at Ai, and Sharon Rodriguez, VP, Strategy at MetLife, presented “Lean UX and Ecommerce Design: How Ai is transforming the insurance industry with MetLife” at the IRCE Focus Design and Mobile conference in Orlando, FL.

The session highlights how MetLife is re-inventing the way that people buy insurance, and focuses on how MetLife’s global applications development team are building out sites and apps for maximum utility and continuity across all consumer-facing channels. Allowing them to work rapidly and gain insights across all of their cross-channel initiatives.

Watch the full presentation of  “Lean UX and Ecommerce Design: How Ai is transforming the insurance industry with MetLife.”

Check out Alex’s presentation below or download the full presentation.


Continuous Integration Overload: Dealing with many projects in Jenkins.

Running an amazing CI tool like Jenkins is a great for productivity, especially when you’re testing throughout multiples stages of development.  But what happens when you need to test multiple stages of development, with multiple features and for more than a few projects?

You may find yourself cutting and pasting some Jenkins Execution shell commands from a master template, or rewriting them by hand for each and every instance.


You have to manually set up each project with each environment, and then remember which template you’re using which is frustrating and, more importantly, time consuming work.


In comes Fabric to save the day. 

Fabric is a python based superhero that can deploy, update, sudo or pretty much anything you can do with a bash script, but over multiple ssh sessions!  This means that you can design one master fabric script and have it create or maintain many instances or build environments.

Integrating Fabric with Jenkins.

Using the same helpful Execution shell, we can call a fabric script and pass it parameters with Jenkins’ parameterization.


And then the Execution Shell.


Now Save and Build!  And the next time you push a new feature, just specify the parameters for Jenkins and you’ll never have to worry about individual instance configurations.

Here’s a quick and dirty FAB file that we can use to control many of our deployments.

from __future__ import with_statement
from fabric.api import run, sudo, cd, env

def setup(setup_type):
    if setup_type == 'stage':
        env.hosts = setup_type.stagingServer
    elif name == 'QA':
        env.hosts = setup_type.qaServer
        raise ValueError('Invalid Setup Type')

#Run commands through sudo - username

def update(user, environment, local_branch, remote_branch):
    run('sudo su - %s -c \'cd ~/%s/ && git checkout  %s\'' %
        (user, environment, local_branch, ))
    run('sudo su - %s -c \'cd ~/%s/ && git pull %s\'' %
        (user, env, remote_branch,))

def clone(user, path, gitpath):
    env.user = user
    with cd(path):
        run('git init')
        run('git clone %s' % gitpath)

def updatewithuser(user, directory, branch):
    run('sudo su - %s -c \'cd ~/%s && git pull\'' %
        (user, directory,))

def status(user,location):
    run('sudo su - %s -c \'cd ~/%s && git status\'' %
        (user, location))

def clone_with_user(user, location, gitpath):
    run('sudo su - %s -c \'mkdir -p %s\'' % location)
    run('sudo su - %s -c \'cd %s && git init && git clone %s\'' %

def branch(user, location):
    run('sudo su - %s -c \'cd %s && git branch\'' %
        (user, location))