Rodney is Founder and Chief Architect of InterKnowlogy, established in 1999. His day consists of working with C-Level Fortune 500 and above clients, and technology and interaction design consulting. Rodney has expert knowledge across web and native apps for phone, tablet, and desktop apps, with expertise in scaling with cloud architecture. Rodney has a passion for natural user interface technologies that span touch and gesture, and he leads the design team to create high impact experiences. He has been a MVP Solution Architect and served on Microsoft’s Architecture Advisory board. Rodney has been recognized as one of the top architects in the world with over 25 years of professional experience in creating solutions. He also serves on the InterKnowlogy Executive Team and is involved in the daily operations of the company.
Most people seem to have interest in product comparisons even when the products have different intended audiences. These comparison usually are quite slanted in one direction due to the predilections of the author and provide little to no value because it is an opinion piece and not a true evaluation. So the discussion either resonates with you or feels completely ridiculous. With devices, authors seem to enjoy rating similar products through the same lenses even if does not make sense. Why would a purely home consumer ever want a business centric device? The sway is trying to make other people see the world through your lenses instead of educating people to make their own choices that are right for them. This is completely true for phones, and it’s also true for wearables.
I have been using a Microsoft Band for several months, and my son just received his Apple Watch. My world is app UX design and architecture for large enterprise systems, which mixes in complex mobile and large screen immersive data visualization experiences. My son’s world is that he is attending Art Center College of Design for Interaction Design and is about to embark on a summer internship at Facebook. We both own Apple and Microsoft products. His center of gravity is in elegance and beauty of design, where mine is in elegance and performance of design. But what is also different is what do in life which changes what we need from our devices.
For wearables, my world is fitness. I want to know steps, how well I’m sleeping, and, most importantly, detailed tracking of my mountain biking adventures with gps, heart rate, and calorie burn. On a second tier of importance are the notifications through email, calendar, Skype, SMS, Twitter, and Facebook. With my activities (mountain biking) I’m often in dirt and rocks and slamming into things on the mountain, so I can’t worry about the health of my wearable. At the end of every ride I shoot off an email to my buddies that has these attachments:
This is my lense. For $200, I feel I am getting my money’s worth out of my Microsoft Band. I don’t care that it is ugly and is not distinguishable from other wearables. It’s a touch bulky but I’ve gotten used to it. I wish the battery life were a little better. Putting that into context, I can do a long 20 mile mountain bike ride only if I’m near a full charge. It is hitting pretty much every sensor on the device with GPS sucking up most of the juice. I wish there was a little better control of how notifications are managed. For example, I may just want my work email pushed to my Band and not my personal email and not have to define a discrete list of people. No device is perfect and we will all need to judge whether or not the compromise you would need to make justifies its continued use.
My son would never use a fitness band, and would never use a Microsoft Band. He decided on an Apple Watch long ago. The only reason he has an Apple Watch so soon is that he prioritized a quarter of his net worth (i.e. $800) to this device. He has never worn a watch before. I would never wear a device so expensive on a mountain biking ride. I hear my son extol the sapphire glass on the watch, but he also used to talk about the shatterproof gorilla glass on his Android phone before it lost a battle against cement. The leather band is from a European country and costs $150 alone, and it’s handmade and smells of new leather. It is the stainless steel version, and the buckle on the leather band is milled from same metal as the housing. When my son was telling me all this, my wife laughed at the look of complete and utter disinterest on my face. Clearly, vanity is important to him and a core reason why he purchased the device.
So after about 24 hours living with the Apple Watch, I asked my son of his first impressions:
To hammer home my point about my son and fitness, his daily caloric goal was set to 300. The screen real estate feels small after using iPhones. The force touch is a new and interesting interaction being shared to other types of Mac devices, meaning a tap versus a pressed touch will behave differently. My impression is that although the interaction is interesting, it may not be discoverable for the less sophisticated users and if apps sporadically adopt it. The digital crown has been designed very well as animations that react to its movement feel natural and unforced. After apps are loaded, reactions to touch and the crown are smooth making the device not feel underpowered.
App navigation is not quite worked out because tapping the wrong app is too easy – you need to be precise and not move around while doing it. Siri integration seems snappy. My son asked Siri “how far is the moon” and she responded promptly. I had to ask Cortana on my Band the same question and the response was obtained in about the same time. Voice quality seems to have been nailed. It’s very Dick Tracy, but I had to explain to my son what that means. I could hear my son’s voice quite clearly, and he could hear my voice just fine through it. It was tested in quiet room in ideal conditions.
What Apple is doing with tactile feedback is interesting. Vibration patterns can be used for different things. For example, my son has CarPlay. When using navigation his Apple Watch starting vibrating with one pattern when he had to turn left, and another vibration pattern when he had to turn right. My son enjoys the one less step he needs to do to buy things via Apple Pay on the Apple Watch. Not sure I like that it is even easier to spend money. Basically you just need to move the watch to the NFC reader and boom – you have been charged. The idea here is that since the device is strapped to your arm, it remains authenticated after supplying the passcode once per day. If the Apple Watch is taken off, it would need to be authenticated again before it could be used. Another interesting feature is a use of a meta language to communicate to your friends. Of course they will also need an Apple Watch. Through this digital touch, you can send vibration patterns to a friend. This could even be your heart beat. Also, you could send simple sketches to each other. He doesn’t know anyone yet with an Apple Watch so it remains to be seen how well used this feature will be.
So these are the lenses of my son. He loves new gadgets and loves the Apple ecosystem. Vanity is important to him. At $400, the device feels worth it to my son. But at $800, he says it doesn’t. The vanity effect seems to balance out the feeling that it is not worth it. It will be interesting to ask him the same questions he has worn the device for a couple of months. Perhaps he can sell it this week for 4x what he paid for it. Anyone?
I just wanted to give a shout out to the IK IMSA development team. Lots of unplanned long hours for gotchas related to how we are pushing iOS, Android, and Windows with Visual Studio, Xamarin, and Azure. Just on a phone call early this morning with the Technical Lead Mike Beverley and Project Manager Jaimie Hogan, and with everything coming to a head on our last push to stabilize the multiple platforms and get the builds into app stores, you can hear their calm confidence in their voices as they continue to triage issues and make amazing progress. True grace under pressure. Thank you to the entire IK IMSA development team, everyone at IMSA, and Microsoft for the continued hard work to make this a success.
My son is attending Art Center College of Design for Interaction Design, and was recently accepted for a summer internship at Facebook. I had a front row seat to the whole process. As someone directly involved in recruiting top talent for InterKnowlogy, watching how Facebook recruits was fascinating. What Facebook has embraced from head to stern is that they are only as good as their people. Many companies give this lip service, and they might actually believe it, but their actions don’t hold up. Facebook is continuously bringing in the best young minds into the fold through internships and putting their stripes on them as quickly as possible. Having name cache does not hurt – what college student wouldn’t want to work at Facebook? But that only helps to generate a long list of potential candidates. It’s the rest of what my son underwent that was most impressive.
At Facebook, potential interns are interviewed by qualified people. These are senior employees that are skilled in the domain of the intern, and not someone who has been delegated a task to interview a “lowly intern”. Qualified people can quickly evaluate and bond with potential interns, and it only serves to excite the students. At every step, Facebook was demonstrating how invested they are in the success of the interns. They have the foresight to prioritize the time of the right employees to engage with the potential interns. By doing this, Facebook can maximize their chances of having a highly qualified crop of new talent. My son felt that they took the time to get to know him and his interests, including the type of work he wants to do to best align his internship into one of the many Facebook teams. They never made him believe that they were doing him a favor by just talking to him – they made him feel special and valued.
After successfully completing this process, my son was given an internship offer beyond his expectations. Facebook is showering him with hardware and software (all the tools he needs to design apps). Their handling all aspects of the internship including how he will be travelling to Menlo Park, managing his lodging for three months, and even will be feeding him. Facebook, at every turn, is a sending a message that they value him and his time, and want him to value his experience. This investment has already produced a sense of loyalty in my son. By spending the money and taking the time and putting forth the energy to engage the right people, Facebook is setting themselves up to be able to hire top talent right from the best colleges year after year, generation after generation.
Want to make sure the best and brightest are continuously flowing into your company? See the above.
Instrumentation – not exactly the first thing you want to think about when building cool mobile apps. But when you are testing an app on an Android, iOS, and/or Windows mobile device, and it blows up, wouldn’t it be nice if you had the forensics on the exception to be able to track it down? Regardless of the device being used? In a centralized web portal? That’s what Xamarin Insights is about. Although still in preview, it seems to have finally stabilized to allow us to start using it. This capability is similar to what Microsoft is offering with Application Insights but for cross mobile OS scenarios.
I spent some time with the lead developer on the IK IMSA team, Mike Beverley, chatting about Xamarin Insights, in this brief video:
My mother passed away from cancer in 2011. During her final days, she was comatose and needed to be moved frequently. The movement was not enough to prevent bed sores, otherwise known as pressure ulcers. Pressure ulcers are caused by pressure that limits blood flow to skin and surrounding tissues. This experience is burned into my memory, and as a designer and technologist I wanted to explore ways to prevent others from suffering as my mother did. I was shocked to find that, in the United States alone, more than $10 billion is spent annually on the treatment of pressure ulcers. Could technology be used to help? Yes it can.
I led an internal R&D effort to explore the use of Microsoft Kinect camera technology to monitor the amount of motion over a period of time. The goal was to identify and measure how much motion was happening, and then report when a lack of motion occurred. We call the amount of motion detected Motion Energy, or ME for short. If a lack of ME is detected over a period of time, a nurse would be automatically notified with an ME event. As the exploration continued, I found studies related to patients falling out of their beds and hurting themselves. I began to wonder if a lack of motion could be monitored, could too much motion also be monitored? The answer is also yes.
The studies related to patient falls are reporting that more than $20 billion is spent annually on the treatment related to injuries suffered from the fall. The same ME technology used for monitoring a lack of motion can detect when a motion spike is occurring. A nurse can be immediately notified about the event and an attempt can be made to prevent the patient from falling or further injuring themselves after a fall by providing immediate assistance.
This video shows an example of the core ME technology:
We envision a system that can be placed into a patient’s room that would passively monitor them. When too little or too much motion is detected, a ME event would be generated by the system. This ME event would be sent to a Cloud backed system to log the event. The on call nurse would be notified on a mobile device immediately of the ME event, and an action can be taken. From the mobile device, a video feed from the patient’s room could be viewed when the ME event occurred (e.g. for a patient’s fall). The video event can also be stored in the cloud with the ME event.
We believe a system like this could not only prevent suffering but improve patient satisfaction. Dollars saved from prevention would more than offset the cost of the system within the first year of use. If you would like more information about Motion Energy, or discuss other potential uses for Motion Energy, please contact us at firstname.lastname@example.org.
After giving a workshop at Art Center College of Design on Interaction Design in the Enterprise, I had several conversations with students on what companies are expecting from interaction designers. Simply taking a look at interaction design job descriptions from various companies can quickly show the diverse expectations that are out there. Part of the issue I have encountered stems for the raw newness of the field. Its roots lie in graphic design and grew up through web and mobile apps. Job descriptions are often asking for a variety skills that span branding, graphic design, web and/or mobile development, visual UX design, sketch, wire framing, and user research. I have yet to meet a human who I would call an expert at all of these things, but if you are out there please introduce yourself to me because I have a job for you.
I would never ask a developer to do a branding exercise with a customer, but I could imagine the hilarity of the outcome. We would also never ask a developer to design the UX. Developers do not think like users – they think like systems, workflows, services and information. The visual experience a developer would design might look more like a data entry form because it is perceived as efficient. On the other side, we have graphic designers who are skilled on creating beautiful looking UX, but they also do not always think like users. We all have downloaded really cool looking apps that, after using it for a short while, stop using them because they feel clunky and are difficult to use. Of course we all have encountered developers and graphic designers who can think like users, which usually comes from the wisdom associated with building many, many experiences (we love you guys).
So if you do not want to have your app feel like a data entry form, or a beautiful app that no one wants to use, what do you do? This is the space that interaction design fills. This is how we use interaction design:
After a project has been won, features need to be identified. Long gone are those days where features (or for you old timers, requirements) are documented in words. We have learned a long time ago that documents that describe apps quickly become out of date and are difficult to maintain. What is worse is that two people reading the document can have two completely different expectations on what the app will do. That is the best and fastest way to have an unhappy project outcome. So instead of writing documents, we spend most of our time working with various stake holders and listening to their ideas. These are ideas that they have come to us to make real. We facilitate the conversations to draw out the information we need. This is a team effort, and on that team we have an interaction designer. The interaction designer works with the team to crystalize the features, sketch concepts, and facilitate the conversations with the stakeholders. The sketches and storyboards that emerge are created by the interaction designer and then discussed with the stakeholders for validation, and course corrections are made with the pencil (not in code). Feeding the sketches is the wisdom of designing dozens (if not hundreds) of apps across many different industries.
Should the project warrant it, the interaction designer can organize and execute on user testing to validate the early concepts. When does a project need user testing? This is a common question. The truth is that even though you are creating a new app, it might be so familiar that the user is well understood simply because of past experiences. But when the user is not understood, user testing is necessary to maximize your chances of getting the app right the first time. With user testing, feedback is collected and concepts are modified. We use sketches during this to have people focus on the features of the app, and not, for example, on how well the branding is integrated into the app. Transitions and animations can also be important parts to help users understand the app. In this case, the interaction designer can create simulated but guided experiences to allow the user to more deeply experience the app. Depending on the user population and how much energy the customer wants to put into user research, a fully branded simulated experience can be created by the interaction designer.
All of this is to solicit quality feedback before software development actually begins. A quality estimate can be produced because the features have been thoroughly analyzed. Expectations have been managed because the customer has seen the app before it was developed. With this process, we can produce an accurate build schedule and estimate to complete the work.
Once app construction begins, the interaction designer works closely with the graphic designer so that the design can be productionalize into art assets that the developers can use. Typically our graphic designers have more technical expertise than the interaction designer because they are more focused on the pixels and what the target platform can and cannot do. The graphic designer will create static visual comps of the app that are appropriately layered so that the development team can pull out the pieces to be integrated into the app. The production work that goes into building the art assets is extremely tedious and requires detail oriented people, right down to each pixel. Everything is positioned based to the pixel. All colors are defined in hex. Detail after detail, and nothing is left subject to interpretation by the development teams.
Once the app is constructed, it must go through a finalization and usability stage. There are things in design that simply cannot be addressed until the app is constructed. These might be subtle animations to cue the user, or how a list of items responds to a touch gesture, or how one view of the app animates to the next view. You just cannot plan for these things until the app is running and you can see everything in context. Issues can arise from data dependencies and latencies that came about that were unplanned. The interaction designer works with the team to guide final usability modifications to complete the experience.
Even before a project is won, interaction design can be used to echo back early concept conversations to show customers that you are interested in the work, invested in its success, and want to understand more about what needs to be accomplished. This is done with the power of the pencil in sketch. For a customer seeking solutions, nothing is more powerful than seeing an idea come to life in a simple sketch. This quickly builds a level of trust that we would not have otherwise been able to achieve. Interaction design can help you win the work.
I’m hoping that this post has provided some clarity to companies seeking interaction designers and what they should expect from them. Interaction designers are filling a huge hole in many companies. The appropriate use will lead to more successful projects time and time again. With interaction design you can expect that your projects can be more accurately scoped and your customers’ expectations much better managed.
When taking your presence to mobile, there is always a scalability conversation that quickly occurs. This is especially true when the systems you need to access are on-premise. Your on-premise systems may have never been designed for the user load you would add with mobile apps. Additionally, your on-premise systems may not even be exposed to the internet, introducing a whole set of security complexities that need to be solved. In the case of IMSA, we are relying on services already exposed to the internet, so one less set of issues to manage.
- How many users would concurrently be accessing the services through the mobile apps?
- What is the latency for the service calls?
- How much effort is it for the service to generate the data?
- How often are the services taken down for maintenance? For how long?
- Will the services change over time as backend systems change?
These are relatively simple questions, but they serve to shape the approach you take to scale. To provide the best possible mobile experience, we envisioned a brokering capability to be served by Azure. All mobile apps across iOS, Android, and Universal Apps would access this brokering layer for data access. This brokering layer is caching data from IMSA services for fast access.
There is immense flexibility in how you shape solutions in Azure for scale, particularly around caching. Ultimately the purpose of data caching is to minimize the number of trips to the backend services. There can be instances where the backend services are so expensive in time and resources to call that the architecture must do everything possible to minimize the user paying the price of waiting for that call to complete. In this case, Azure can be setup to actively keep its cache fresh and minimize the amount of calls to the backend services. Mobile apps would then always have a fast and fluid experience and never feel slow, and a company would not have to worry about putting a massive amount of resources for scaling up their backend services.
Fortunately, this was not the case for us and the IMSA backend services. The backend services are responsive and data is small per service call. Also, it is not expensive for the backend services to produce the data. Even in this case, there is benefit to leveraging Azure. IMSA race events are at key moments in time, and traffic heavily spikes around each event. It is not beneficial to have hardware laying around mostly idle 90%+ of the time waiting for the spike in usage. Additionally, the IMSA services could be taken down briefly for maintenance. Using Azure for brokering calls still has merit because capability can be scaled up and down around the IMSA events. There will be minimal additional load put on the backend services because Azure is doing most of the work of serving data to the mobile apps.
The approach we took for IMSA relied on a combination of HTTP output caching (via ETag) and Azure Redis Cache all within Azure Mobile Services. Basically, when a mobile app makes a request from an Azure service for the first time, no ETag is present because our services did not already generate it. However, we have the URL and parameters passed in, which forms a unique key to the requested data. Redis cache is checked to see if the data is present. If the data is present and is not expired, then the cached data from Redis is returned. If the data is not present or is expired in Redis, then Azure makes the request into the backend IMSA services, puts the response into the cache, and returns it to the calling mobile app. An ETag is generated with each response, so if the mobile app requests the same data again that ETag is supplied. This is informing our Azure services that the calling mobile app has data already, but is not sure if the data is still valid. The benefit of supplying the ETag is that we can check whether or not the ETag has expired, meaning the related data in cache has expired. If it has not expired, an HTTP 304 is returned which is much lighter weight response than if the cached data was returned.
There is a downside to this approach. When simultaneous requests are made for the exact same data (based on the URL and the parameters passed in) at the exact same moment, each request could do the full trip to the backend IMSA services. If IMSA had millions of users during each event, we would prevent this by doing data locking within Redis, but they do not so the extra engineering to prevent this is not warranted.
Through this technique, we have set ourselves up to be prepared for tens of thousands of new users at each event without bringing the IMSA services to their knees.
While we were busy thinking through the interaction design elements of new IMSA mobile apps, we knew we were going to have to build six apps (iOS, Android, Universal Apps for phone and tablet). The app architecture we chose to follow for this is Model-View-ViewModel (or MVVM). Our mission was to maximize the amount of code sharing across all implementations of the app. The more code sharing we could do, the less code we would have to develop for each platform. Less code means less time to develop and less to test, making the aggressive schedule more achievable.
The Model layer contains the business logic and data that will drive the IMSA app. Data would be served through a scalable cloud infrastructure being constructed for the mobile apps. Regardless of mobile OS, the business logic and data will remain the same. How we access the data in the cloud and retrieve would also remain the same. These layers are devoid of any user interface elements are a logical candidate for re-use across all the mobile operating systems. Perfect – one layer to write one. But we want more.
We were suspicious that the View layer would be so unique across mobile operating systems that the ViewModel layer would not be re-usable. The ViewModel layer is responsible for binding the Model layer (the business logic) to a View (the user interface). Remember we are talking about code sharing across iOS, Android, and Universal Apps – this have to be do so different that writing a consistent and shareable ViewModel layer would not be possible – right? Wrong! After some initial prototyping we were pleasantly surprised. The path we have chosen is going to allow us to use the same code in the ViewModel layer across all operating systems.
From our early calculations, thanks to Visual Studio and Xamarin, we are predicting to see about 75% code re-use (of the non-generated code) across all the implementations! Excellent news for the developers and project manager. We’ll dive into code examples in an upcoming blog, but next we’ll discuss our approach with Azure. Also, this video has additional information for code re-use with Xamarin.
The IMSA Mobile Apps project is currently in flight and we are actively working on building this cross platform/cross OS solution. This article is the first in a series of blogs discussing the details of the project, and we’ll be actively trying to catch up to the current day as we are busy building towards the Laguna Seca race.
Back in the first week of December 2014 we flew out to Florida to visit the IMSA team with Microsoft in Daytona Beach. Microsoft was hosting an Architecture Design Session, or ADS for short, to flesh out features of the solution. It became quickly apparent that the solution was layered and complex. Many features discussed have become part of longer product roadmap as IMSA is committed to providing the best experience possible to their fans. Also, it should be noted as in all ideation sessions, some ideas discussed are put deep down in the feature backlog.
I am certain that some would ask why IMSA involved Microsoft. This is a mobile app – what does Microsoft know about building mobile apps across iOS and Android? Well, it turns out quite a lot. From past projects, we already knew the tooling we get with Visual Studio and Xamarin allows us to build amazing mobile apps across all platforms and OS’s. The other side of the coin is the plumbing we get to integrate into cloud infrastructure. This app needed to scale across the huge IMSA fan base during live events. From past projects we knew how effective we could be building scalable mobile apps with Azure. So to IMSA and to us, involving Microsoft made perfect sense.
In the ADS, some of the interesting features starting popping up:
The app would need to change shape depending on whether or not a race is live or not. We thought treating the app almost like the NFL Now app would be interesting. There could be something interesting always to watch on our app, regardless if an event is live or not.
IMSA radio is a live audio stream. The app would need to deliver this feed just like other integrated audio content on your device. So turning on IMSA radio, putting your headphones on, and then your device in your pocket should be as natural as playing music.
Using the device’s GPS, if the race fan is at the event the app should respond differently than if the person were elsewhere. When you are at an event, what you are interested in is different than when you are not.
Telemetry information from the cars. It would be just awesome to watch your favorite car at the event or at home and see all the g-forces they are pulling when they are flying around the corners.
IMSA services to content and structured information are not scalability to a mobile play. A cloud infrastructure would need to be placed in front of the IMSA services so content could be cached and served more quickly.
After the ADS we went home and decomposed all the features while looking at the schedule. We needed to pick a race event to target deployment. We had a lot of homework to determine our approach. In this next blog we will be discussing how we were planning on maximizing code re-use across all platforms and OS’s.
There are more smart phones in China than there are people in the United States. These are the kinds of factoids that are shared when talking about mobile strategy to spur conversations about why it is imperative for your company to “go mobile”. Mobility has been a consumer driven movement and not the enterprise. Many years ago before iPhones and iPads, Microsoft produced extremely weak and laughable mobility offerings into business. Windows was not lean and mean, and it ate batteries for breakfast. Apps that ran on Windows consumed resources left and right, sucking up memory and constantly banging on your hard drive. These devices were barely functional – they could run everything on the Microsoft platform, but barely and for not long unplugged. It couldn’t be adopted by business because it just didn’t work.
Fast forward a few years. Hardware and software is different and better. Apple has made touch phones and tablets fun and intuitive, and now expectations on how to interact with devices and apps have been elevated. Everyone is connected and has their collective noses planted into their favorite devices. Consumer centric services have emerged as tens of thousands of apps and have grown through Internet standards (email, web, RSS, etc.). Businesses refactored software they already made for the web to mobile apps to try to prevent competitors from getting a leg up. And now, these devices that we’ve grown quite fond of are carried right into the workplace.
Now that each employee is carrying smart phones and/or tablets into work, these devices are trying to be used for business productivity. There has been no displeasure from CIO’s about this – who wouldn’t be satisfied with their employees buying their own equipment with a constant flow of free hardware refreshes. Portable access to email and web are fantastic, but is this what we are now calling business productivity? Your phones and tablets have an unlimited supply of consumer apps, but really how are these devices helping me be more productive and a better worker? Each business is very different, and although email and web access is the lowest common dominator, making better workers requires smarter business apps. These are the apps we use every day in laptop/desktop form, and until today they have been relegated to these larger devices.
Hardware has become cheaper, better, and smaller despite Microsoft. Business is still running on Windows, and this is not changing anytime soon. Have you seen how many IBM mainframes are still being licensed? It is not because business loves big iron – they have made too much investment in these systems to make switching platforms a ridiculous proposition. The same is true about people’s desktops and laptops. So when your next hardware refresh comes, and it runs Windows 7 or 8, the form factor is very likely to be that of a tablet. You might still wish to carry your personal device that cannot be locked down and secured on your business network, but over time as more consumer centric tablet apps become available on Windows, there be less reason to do so. Everything we do on our big desktops or laptops will run on a tablet. We will have our smart business apps with us at all times, plus Angry Birds. This is why Microsoft, the turtle in this race, has hope.