Born out of their own frustration with market offerings, the Vehicle Smart team, comprised of just three developers, recognized a need and shipped their apps in only two months. Since launch, the apps have been wildly successful, and the team created a corporate entity (Vehicle Smart Ltd.) to continue to add more features and generate revenue.

Tell us a little bit about your company and role. Have you always been a developer?

I’ve been a developer since my teens, when I wrote 8-bit MSX computer games. From there, I joined General Dynamics and spent 18 years in the defense sector. These days, I develop websites, web apps, web services, and mobile apps for all use cases, from social sharing to team safety.

I co-founded Devology Ltd. with my cousin, Michael Glazebrook, to write our own software products. In our second year of business, we connected with James English, who was in the process of transitioning from 17 years in government software development to commercial web and mobile apps.

Initially, James focused on iOS using Swift, but found development frustrating and slow. After a couple of weeks, James asked me for some C# and Xamarin training and support, and he quickly saw Xamarin’s huge potential and the benefits of cross-platform development, especially with Xamarin.Forms. From there, we formed Vehicle Smart Ltd, a 50/50 split between Devology Ltd. and JVE Ltd., James’ company.

Due to my experiences developing mobile apps, I was able to offer advice, consultancy, and pair-programming (working side-by-side), utilizing Xamarin.Forms. James, a Certified Usability Analyst, spent his years in the defense industry crafting and fine-tuning highly nuanced jet weapon displays. With my technical knowledge and his ability to create powerful and clean UIs, we’ve attracted positive praise from our users. Vehicle Smart is now our number one performing app, with only a few months’ part-time development!

Tell us about your app and what prompted you to build it.

Vehicle Smart (available on Android and iOS) is the smart way to check MOT and TAX information for any UK vehicle. Vehicle Smart provides free, up-to-date data for all UK vehicles, allows users to manage their vehicles through the “My Garage” and “My Services” features, and performs mileage analysis to spot mileage discrepancies between dealer reports and the MOT database. In our latest update, users can set important date reminders, such as MOT and tax expiry, insurance renewals, and service dates, as well as save vehicle-specific details, like oil type, tire sizes, and more, for easy access.

We also expose our JSON web-service API to allow other developers to access UK vehicle and driver agency (the DVLA and DVSA) data in an easy-to-consume JSON format, rather than scraping the HTML themselves. The agencies hold all vehicle and driver information and record every single vehicle test, so this is a vast amount of data.

Vehicle Smart was born out of James’ frustration with the current market offering and burning desire to create a product. He’s passionate about cars and bikes, and had used many mobile apps over the years, often two or three at a time, to manage and obtain the vehicle information that he needed. There wasn’t a single app that could do everything he was looking for and do it well.

Little did we know how popular our app would be! In under four months, we had over 100,000 users and more than 1,000 five-star reviews. We’ve had lots of feedback, ranging from how intuitive and simple we’ve made the user interface to amazement at how much data we provide. Numerous users thank us after they’ve discovered their tax or MOT has expired, letting us know that we’ve saved them from driving illegally, and avoiding hefty fines, with our app!

Why did you choose Xamarin?

Due to my previous mobile experiences, I was confident that Xamarin.Forms would be the ideal solution, allowing us to reuse our UI layer and business logic across platforms. I considered Xamarin.iOS and Xamarin.Android, but determined that Xamarin.Forms could easily handle our user interface needs.

I had used C# for some time, so when I started using Xamarin, I just extended that knowledge as I went on.

What do you think about when you hear “native app”? How did Xamarin help you accomplish your definition of “native”?

To me, native means hooking into all of the low-level platform SDK libraries, without restriction, which allows the UI to look and feel native. This is very important to me. I’ve had arguments with colleagues that felt HTML5 provided excellent UI support, but I saw glitchy animations and weird behaviors that yanked me out of the typical phone user experience, especially with iOS 7’s big look-and-feel update, aging the supposedly ‘native’ HTML5 implementations overnight.

Xamarin gives developers the right mix. You can use Xamarin.iOS / Xamarin.Android or Xamarin.Forms, and call through to the native libraries. Xamarin.Forms has gotten better and better, including improved support for native user interface controls, without needing custom renderers. My biggest problem right now is finding time to keep up with its evolution!

How long did it take to ship your app, from design to deploy?

From initial concept through to market, it took us eight weeks. James and I poured our spare hours into the design, development, testing, and deployment to the Google Play Store. A few days later, we deployed to iOS.

I’d estimate that we’ve reused 95% code across platforms, including UI and business logic. A shared services folder defines our UI on both platforms, including local notifications, persistence, and logging.

Since our launch, we’ve continued to release updates, including In-App Purchases and premium upgrades, expiration reminder notifications (7 days for freemium users, 14 and 30 days for paid users), saving vehicle information and overall improvements based on users’ feedback. We’re also actively working on our Windows app.

Without Xamarin, you could easily triple the amount of time it would have taken us to get to market, perhaps more. We would have needed to learn the Android Studio tooling, as well as all the Activity stuff that Xamarin.Forms shields you from. Plus, we’d then have to develop in Java for Android, Swift for iOS, and C# for Windows.

Why is mobile quality important?

We lose sleep over this regularly! An app’s ability to perform will defines its success, and delivering a high quality product has been key to our success so far. Apps that are full of bugs and crash often tend to be dismissed very quickly, and winning a user back becomes twice as hard, if not impossible. When you’re a new app on the market, it’s imperative your product is 99% stable. First impressions count for everything.

How do you use HockeyApp?

HockeyApp has been invaluable. It helps us capture crash logs, see stack traces, helping us track down a number of bugs that our users were experiencing, but we hadn’t seen ourselves.

We can see crash frequency, which determines the priority that they should be fixed. Based on impact, we decide whether we hold back for another beta test, or whether we need to go live with an urgent fix.

We also like the idea of adding analytics to see what features people are using the most and to get insights about which features the haven’t yet discovered.

What have your users said about your app?

We said this before, but the response has been amazing. Our friends and family love it, but they’re biased so we rely on the amazing reviews we’ve received for both Android and iOS.

We’ve learned that users sometimes struggle to leave feedback in the App Store, so, while our iOS version has only 47 reviews, all have been five-stars!

What advice do you have for developers who are just starting out or investigating mobile development? Any best resources?

My main resource is the official Xamarin documentation, and I find the Xamarin Forums invaluable. The community is fantastic, and I contribute when I have time. Xamarin’s blog post are great for keeping up-to-date about new features, the Charles Petzold book is also good, and StackOverflow is always an amazing resource. With these options, my questions are always answered.

If you’re an enterprise, be careful not to over-analyze or over-design. Avoid the waterfall model in exchange for an agile approach. For us, we try to have a sprint that captures a large feature and some bug fixes. We avoid unnecessary documentation like the plague, using Trello as our go-to place to capture all project details.

Be warned: users can be fussy and you’ll need to be on top of their reviews. Don’t assume you know all of the answers. Get a version out early, and get feedback from your customers.

In summary, just start. Don’t get paralyzed, trying to find the perfect way of doing things from the outset. Make mistakes and learn from them.

The majority of these excursions are brief and can be summarized thusly:

Install the thing.

Use the thing.

Meh.

I usually find a deal breaker in the first few minutes of entering and managing tasks, writing a thing, or staring at a new typeface. Typical meh-ness can be attributed to the productivity system frustrating amount of opinion, the editor missing an essential feature or keyboard shortcut, or a typeface having juUuUUUUst a bit too much personality. Infrequently, an app or a typeface makes the cut. Bear made the cut.

Bear is a thin text editor. It’s not attempting to be every editor to every person. Bear is the designed for the tech savvy, multiple device, and design-minded humans. Starting with the name – Bear – the application is an elegant combination of design, whimsy, and voice.

Here are a few of my favorite feature and design choices:

Bear uses iCloud for storage in the Pro version and makes it non-trivial to get files in and out of the system. Yes, you can import and export notes, but Bear dispenses with the concept of a file object and suggests that Bear is an eco-system of notes, documents, and thoughts that follow you around on your various devices. I can hear your optionality rage about this paragraph, and I understand your optionality rage, but my question to you is: do you want to worry about where your files are or what you’re writing? Me too.

Bear appears to be designed iOS first. This is a guess and is perhaps biased by the fact that I am in the third week of actively using an iPad Pro as a primary desktop. Bear feels at home in iOS. Yes, the keyboard support is very good on both iOS and macOS. Yes, there appear to be no obvious feature gaps between the platforms, but where is the Save command? How do I duplicate a file? You can’t. This is a product design for the mobile world where, again, you aren’t concerned with the file system.1

Avenir New is the default typeface in Bear and I’m in love. As a Futura enthusiast, I am a little sad that Futura isn’t great as a body text font. It’s a presentation and heading typeface. Avenir New combines the modern sans serif whimsy of Future and makes it readable. Also, check out the Q!

I’ve been an on/off user of IA Writer over the years. The primary reason it hasn’t stuck for me is restrictions to my editing space. IA Writer is very opinionated about what is a correct writing space and restricts optionality appropriately, but there are times where I want to change the typeface. There are times where the background must be navy blue. There are times where I want to tighten line width because it just feels right. Bear does not give you ultimate Sublime Text-like control over your writing environment, but it gives you enough control to design your writing space to your mood.2

The default theme, Red Graphite, is a good introduction to the design sensibilities of the application. Along with the dulcet tones of Avenir Next, Bear gently, consistently, and usefully splashes the accent color (in this case red) throughout the user experience. In the pro version, the accent color changes depending on the theme, but the experience of color highlighting the thing you current care about is thoughtfully and tastefully implemented.

Bear attempts to make thoughtful leaps for me. I tend to capture links in a Markdown style with brackets/parenthesis pairs. Rather than leaving the eyesore of a URL in my text, Bear maps the URL to a human readable link. I didn’t know how much visual noise was created by those links until they were gone.

And there is a bear. Throughout the UI. And I love bears.

Other than a currently mysterious relationship with Markdown3, my biggest gripe with Bear is that you can’t purchase it outright, you need to purchase a subscription. While I was fully prepared to lay down cash money for Bear, I paused for many weeks because subscription models feel like credit cards Like credit cards, subscription models are more profitable because humans are lazy. While I have no issue with dollars going to the developers, I do have an issue with myself forgetting to act managing my subscriptions. I would much rather pay as I go as new and better releases of a product are released.

But I did get a subscription. Bear is that good. No meh.

Important to note: I lost my shit with iWork when they nuked file related commands on Mac OS X many years back. The file commands promptly returned in subsequent releases. This courageous cloud-minded abstract-away-the-file-system move was certainly the way of the future, but for me, it was too soon, Apple, too soon. ↩

Bear has themes in their Pro subscription. One theme is called Gotham. I recommend it. ↩

There is a Markdown compatibility mode, but I don’t know what that means, yet. ↩

Google Play services offers a plethora of amazing APIs for developers to integrate into their iOS and Android applications. For Android developers, specifically, there are several more APIs available that can give you even more power and integration with the Android OS when developing apps for the platform. One of the newest APIs, Awareness, brings together seven different location and context signals into a single easy to use API, including time, location, places, beacons, headphones, activity, and even weather. The NuGet package for the Awareness API launches alongside our release of Google Play services 9.6.1 (32.961.0) for Xamarin.

The Awareness API offers two different ways to get insight to these signals, the Fence and the Snapshot APIs. The Fence API allows you to react to changes in the user’s environment and the signals. You can create multiple conditions that need to be met and when they occur, you receive a callback to react to them. The Snapshot API on the other hand, which we’ll look at today, gives you direct access to the signals from one simple asynchronous API. In addition to being a simple API, the Awareness API delivers better battery performance and memory usage due to its intelligent caching and cross-app optimizations.

Install the Awareness NuGet

The first step to accessing the Awareness APIs is to add the Google Play services – Awareness NuGet to your Xamarin.Android application. As of this blog post, the current version is 32.961.0. The easiest way to find the NuGet is to directly enter the package name Xamarin.GooglePlayServices.Awareness. The additional dependencies of Google Play services Places, Location, Base packages, and required Support Packages will also come along when the NuGet is added.

Register for API Keys

Google Play services often require a unique API key for each application using them. These are created and enabled in the Google API Developer Console. First create a new project:

Add Keys to the Android Manifest

Once you have registered for the APIs, you’ll receive a unique API Key that needs to be added to your Android Manifest file. It’s the same API Key for each of the meta-data tags that we’ll add to the application node, which will look like this:

Create GoogleAPIClient

With all of the API Key registration out of the way, it’s now time to actually start using the Awareness API. To use any Google Play service API, we’ll need to create a GoogleApiClient. First let’s bring in a few namespaces:

using Android.Gms.Common.Apis;
using Android.Gms.Awareness;
using Android.Gms.Awareness.State;
using Android.Gms.Extensions;

Now, in our Activity, we can create and connect to the GoogleApiClient:

Other signals besides headphones require additional permissions such as location and activity recognition. We must add two specific permissions to the Android Manifest:

To check and request permissions, we can use the Permissions Plugin that helps abstract the functionality into a simple call. If we want to query the location and weather, we can use the Permissions Plugin along side the Awareness API:

Learn More

The Awareness API is extremely powerful and at the same time extremely energy efficient when querying signals on the device. You can download a full source code example from my GitHub page that walks through using each of the Snapshot APIs, and you can also learn more about the Awareness API from the Google Developer portal.

Whether you’re a new mobile developer or an experienced enterprise team lead, Microsoft’s Azure App Service and Xamarin can provide you with everything you need to build engaging Android, iOS, and Windows apps.

In this previously recorded webinar, Microsoft Program Manager Mike James shows you how to easily add powerful web services and mobile essential features to your Xamarin apps by leveraging the power of Azure App Service and your existing .NET skills.

In the webinar recording, you will:

Learn how to deploy your first App Service

See the .NET Client SDK in action

Integrate with data and business systems, on-premises and in the cloud

Enhance your apps with push notifications, user authentication, and more

I blogged about SETAPP recently, and am excited that they’ve announced the opening of the public beta. I have some extra tokens available that can guarantee you access to the limited beta. I’m having Killotron 3000 Giveaway Robot handle distribution, but pretty much anyone who adds their email can receive an access token.

My previous post was from a developer perspective, but users are the ones I think will benefit most from SETAPP. From the launch press release:

Setapp is a less risky and more flexible way to buy, sell and use Mac software, providing a better experience for both users and developers. Users pay $9.99 per month and get unlimited access to a handpicked collection of high-quality apps. Instead of paying for upgrades, expensive in-app purchases to unlock important product features, or freemium apps that ‘trick’ users into buying more later, users of Setapp get access to fully functional software with the latest updates delivered continuously in the background.

There are already some of the best apps for Mac in the lineup, including Ulysses, CodeRunner, Blogo, Marked 2, RapidWeaver 7, Eltima Player and Base. SETAPP plans to add up to 300 apps as the service gains momentum.

If you want to try out the early access, just sign up below. I’ll take signups for a couple of weeks but will email out batches of tokens regularly.

So you’ve created your Arrow Builder project and created ArrowDB models. Arrow has automatically created all your APIs and even documented them for you. Maybe this is a mock API or maybe it’s your production API. Now, how do you get data into your Arrow Database? This blog post describes a method for populating your […]

Xamarin Dev Days has been a huge hit over the past couple of years. Thousands of developers at over 100 events around the globe have joined in for a Xamarin hands on learn experience, and we can’t thank our amazing community of MVPs, User Group Leaders, and Developers that helped organize, present, and run each of the events enough. We could think of no better way to end this year’s Xamarin Dev Days events than with a huge LIVE virtual Xamarin Devs Days event that everyone can attend!

Join us online on Wednesday, December 14 starting at 9:00 am PT / 12:00 pm ET / 4:00 pm GMT for the last Xamarin Dev Days of the year streamed live on Channel 9. Xamarin Dev Days Live will kick off with several sessions covering native cross-platform development for iOS, Android, and Windows in C# with Xamarin from Xamarin experts, followed by an afternoon immersed in code as attendees follow along at home for a walkthrough of building your first app.

Learn more and register at the link below to join us on December 14, 2016 at 9:00 am PT / 12:00 pm ET / 4:00 pm GMT!

MIT has a storied history regarding hacking where the act is viewed as a “clever, benign, and ethical prank or practical joke” at the University. Hack is also defined as the act of breaking into computers or computer networks. My definition is a combination of both.

To me, a hack is a clever or unexpectedly efficient means of getting something done. A good hack should feel like cheating because the value created by the hack feels completely disproportionate from work done.

With this definition in mind, I present five leadership hacks I regularly use. These are not practices designed to redefine your leadership philosophy. They are hacks.

Two minutes early. For everything.

Let’s start simple. I attempt to show up for every single meeting approximately two minutes early, and it has to do with Apple. It may have changed since then or been team dependent, but the expectation at Apple was that every meeting started roughly five minutes after the scheduled start time. It was assumed. We called it “Apple Standard Time.”

If everyone is aware that “Apple Standard Time” is the standard then no big deal, everyone ends up accounting for this handy five-minute buffer. But everyone is not aware. There was no onboarding were we learned about “Apple Standard Time,” so there were not infrequent meetings where half the people showed up and stared at each other for five minutes wondering, “Where the hell is everyone?”

The origins of “Apple Standard Time” are unknown to me, but I bet it started decades ago when someone important, someone with an impressive title kept… showing… up… late. No one said anything because everyone assumed there was good reason for the tardiness. There was a reason: this leader was bad at running their schedule. Worse, this behavior was allowed to exist and – even worse – it became part of the culture.

Two minutes early. For everything. This means I look at my calendar at the beginning of the day and account for transit time. This means I gracefully leave the prior meeting five minutes before the scheduled end. This means I profusely and honestly apologize for wasting people’s time when I walk in two minutes late and this means I don’t let this failure become a habit.

The clock faces you.

Ending a meeting that is going well is tricky. Laura is in the middle of a great soliloquy about the powers of a good engineering program manager. It’s great. She’s on a roll, but I need to be across the building for a 2pm meeting, and it’s 1:55pm right now, and I can not hear an ending to Laura’s speech.

Laura knows nothing about my internal scheduling turmoil and she’s looking straight at me because she knows my support for program managers is critical and if I’m busily checking my calendar rather than listening, I am telling the rest of the room, “This thing she is talking about is not that important.”

The first thing I do when I sit down in a conference room is to find easy sight lines to the clock. Hopefully, it’s on a wall, or maybe I need to turn it face me on the desk. The hack is: “I should be able to know the precise time of day at any moment without a single human noticing.”

By having an intimate understanding of the time, I can shape my exit. I can listen for the ever-so-small pause Laura lands at 1:58a. She’s not stopping, she’s taking a deep breath, so I can jump in and say, “This is great. I have a 2pm across the building, can we continue this discussion later?”

Whether you’re running the meeting or attending the meeting, being frictionlessly aware of the time is the first step to getting a meeting to end on time.

Office hours.

At my last gig, I wanted to meet everyone. First all hands, I committed, “I will personally meet with each and every one of you.”

Admirable. Doesn’t scale.

I started with 1:1s, but it was quickly obvious it’d take six months to get through the entire team, so we quickly pivoted to round tables. Five to ten folks plus me – every week. These meetings were more time efficient, but in each, it was clear that there were always a handful of folks who simply didn’t want to be there. I have work to do.

You can flatten your organization by creating as many communication conduits in as many unexpected directions as possible, and this was the goal with my flawed “meet everyone” strategy. The question is how do you create this communication serendipity for all the humans?

The result: my office hours are filled every time I announce them by the folks who want to talk and have an agenda. These are some of the most interesting meetings that I have with the team on a week to week basis. Random thoughts. Emerging concerns. Criticism. Growth conversations. Deep strategic concerns. Communication that only happens 1:1 and in person on a regular basis.

Three questions before any meeting.

Another morning calendar hack: I glance at my day and make a quick assessment: what is the value being created by each of the meetings on my calendar? In a moment, I should be able to answer that question. It’s a new director and we’re going to get to know each other. It’s a weekly sync with a team in crisis. It’s a regularly scheduled 1:1.

Once I understand the why, I then focus on the what. Whether I run the meeting or am a participant, I write three questions that I’d like to get answered at this meeting. For a day full of meetings, the three question exercise should only take a few minutes and it achieves two important outcomes:

First, it frames my goals for this meeting. What is top of mind for me and what am I going to ask when given a chance?

Second, if I am failing to come up with three questions, I ask myself, “Why am I going to this meeting?” Meetings are a virus. They infect and they multiply. The longer they exist, the more likely the humans forget why the meeting was called. If it takes more than 30 seconds to think about my three questions or if I can’t think of a single question that I want to ask, I decline the meeting with a clear explanation.

Continually fix small broken things.

There’s a stack of books on the right side of my desk. They’ve been slowly growing over the past month; I keep telling myself I’ll deal with them, but today I’m dealing with them. The one good book goes in my backpack for reading; the rest go to the bookshelf because I have decided I will likely never read those books.

Sticking with the desk. I’ve been collecting pens, and my pen cup is too full. So, I pour them on the floor and decide which pens are staying in the cup and which pens will be declared free. It takes a little over a minute, but I reduce my pen load by 50% and a lucky someone in the office is going to find a bunch of exceptional pens in our office supply cabinet.

There are five more small broken things on my desk that – in less than 10 minutes – I could fix. These are small broken things I’ve been staring at and stressing about for a month, and in 10 minutes that compounding guilt is better. That 10 minutes made standing at my desk more joyful.

As you walk around your office, you constantly see little things that are broken, but you often ignore them because you are urgently working on the big things. The last hack is the easiest and it’s the best: fix small broken things. Always. It takes seconds to clean that whiteboard, to plug in the clock in the conference room, and to stop, lean down, and pick up a piece of trash. Seconds.

The value created isn’t just the small decrease in entropy, it’s that you are actively demonstrating being a leader. I understand the compounding awesomeness of continually fixing small broken things.

Pixel gains momentum, Facebook launches Instant Games, Amazon opens AI tools to developers and more Each week we round up the top news stories, think pieces and other content that centers on the fast-paced, quickly changing world of mobile technology. We tell you which companies are employing clever mobile strategies, illuminate new ways of thinking […]