Apps that grow with you

It's difficult to make a good app. But it's even more difficult to make an app that grows and matures with the user: something that starts off basic and overtime, as more knowledge is shared between you and the app, more in-depth features are revealed to appeal to a more mature, advanced version of you.

Thought I had while discovering something completely new after a week of using the Jawbone UP fitness band.

iphone-20130801221737-0.jpg

Ember.JS: How to handle invalid URLs

There’s a lot of documentation for the new Ember Router. However, I found that no one was talking about how to handle the “*” route in Ember, i.e. the routes that don’t match anything.

I first tried to look at the ApplicationRoute but that didn’t seem to throw anything. Ember just sits there with a lovely blank page!

 

ApplicationRoute { 
events: {
errors: function(reason, transition) {
console.log("never happened");
}
}
}

So here’s the easiest solution for handling bad urls. My router looks like this now:

App.Router.map( function() {

this.route('login');
this.resource('companies', {path: 'companies'});
this.resource('company', {path: 'companies/:company_nice_url'}, function() {
this.route('members');

});



this.route('bad_url', { path: '/*badurl' }); // Catch everything else!

});

The last route named “bad_url” will catch all the other unrecognized URLs and direct the user to the App.BadUrlRoute where you can handle them. You will get the URL segment as params.bad_url for you to inspect and offer friendly advice like “hey did you mistype companies?”.

If you simply want to show a page that says “There’s no one here you fool!”, just create a handlebars template:

<script type="text/x-handlebars" data-template-name="bad-url">
<h1>There’s no one here you fool!!!!</h1>
</script>

And you’re done! Any path that doesn’t match your routes will get routed through ‘bad-url’, where you can act on it accordingly.

 

EDIT ON 6TH AUGUST

Marcus in the comments pointed out to me that using path: '/*badurl'  is better due to this handling "/this/is/wrong/path" situations. My initial solution to using a dynamic segment (:bad_url) did not catch this. Thanks to all the commenters!

 

EDIT ON 7TH AUGUST

I have realised that having "*badurl" instead of ":bad_url" has one caveat. I am implementing a funky search route that deals with all URLs past a base route like this: /search/x/y/z/a/b/c . Having the astriks to catch all the bad url's makes it impossible to have a search router which deals with "/search/*search_terms". So there you go... ups and downs to both methods. More on that awesome search route another day... :)

 

Important Considerations Before Naming Your App

If you’re a small time developer, you generally tend to skip steps when it comes to following a proper process on naming your apps / products. Here’s a list of things you shouldn’t be skipping...

Say you decide to make an app to educate people about how bad donuts are. Let’s call this app “Evil Donuts”. Excellent name!

Step 1: Google it.

This is so easy to forget sometimes. Always Google and see what comes up. Then switch over to the “Image” search tab and see what comes up there. If you only manage to get one to three bikini women, it is a good sign! These are the things that would compete for SEO and the things people associate your name with.

Screen Shot 2013-07-07 at 10.32.46 AM.png

Damn it, Facebook Group is taken. Might have to name it “Evil Donuts App”.

Step 2: Domain Search

Domains are important. We need to look for www.evildonuts.com and www.evildonutsapp.com. These are good domains for our app, unless your aim is to introduce a submain on your own site like: www.m2d2apps.com/evildonuts.

Screen Shot 2013-07-07 at 10.34.41 AM.png

Bummer, someone parked it.

Screen Shot 2013-07-07 at 10.35.13 AM.png

I recommend you use https://iwantmyname.com/ to look for names. It checks pretty much every domain possible.

Step 3: iTunes / Play Store

Ok let’s say this is going to be an iPhone app. We have to fire up iTunes and see if an app with that name exist. If it doesn’t great. If it does, you have to decide whether to stick with it. If you do, you can simply extend your name to: “Evil Donuts - Junk Food Eating Tips”. When the user installs the app, you can still name it “Evil Donuts” without Apple freaking out.

Screen Shot 2013-07-07 at 10.36.35 AM.png

Score! No Apps! Just like our 60Hz App!

Step 4: Easy to type?

We never thought about this when we launched “Notes + U”. Terrible name. Worst of all, it was hard to type on the iPhone. iOS keyboard hides the “+” button under 2 levels in the keyboard -- BAD idea. Make sure it is hard to misspell and easy to type out.

Step 5: Trademarks

Disclaimer: This is not in any way legal advice. Get a real lawyer for that. I am not qualified. This is merely personal experience.

CHECK TRADEMARKS! If your app only ever sells 10 copies this is less of an issue. However, if it makes its way up the ranks and you start gaining some love from Google, then you are in for it! “Evil Donuts Inc” is not going to be nice and empathise with your situation. Trademark law, I believe, specifies that once you have a trademark, you have to actively defend it or risk losing it altogether. So chances of you getting a Cease & Desist letter is quite high. Unless you have a strong legal team you will be forced to pull your app from the store when this happens.

Generally you will be forced to take down everything you have related to your beautiful app once you get a letter. Game over.

Interesting things I found out:

  • If you made friends with a law grad, good for you. Love them, buy them dinner, and keep in contact.
  • There's less likelihood on infringing trademarks if the name is descriptive. For instance, if we had named our app “Donut Nutrition Tutorials”, it is quite hard to get a C&D due to its descriptive tone. However, if we called it “DonutNutritionTutes”, then it is still under threat!
  • Generally trademark disputes resolve in the favor of the trademark owner. So you are very likely to lose even if you contest it.

Check the following countries at least:

Screen Shot 2013-07-07 at 10.38.26 AM.png

Cool! Abandoned in 2005!!


Once you are happy, go ahead and create an app in iTunes to stop anyone from taking that name.

Happy building apps. Evil Donuts app never did get made.

 

Getting The Story Right

Products are only as good as the story they tell. Whether it is an app or an electric toothbrush, the creators have to think about how it is going to be a captivating story. If the product cannot form a relationship with another person at an emotional level, then they have no reason to buy it. If no one can find anything interesting to say about what you’ve made, chances are, word will never get around...

Read More

We changed looks. Now we change names. Your favourite TV tracker is now running at 60Hz.

tvQ is 60Hz.

We had a great launch for our latest TV tracking app about a week ago. It's a new app rewritten with all your feedback from 1.0, with a fresh take on TV and movie tracking and of course, a fresh new icon with a sleek new user interface. Now it's time for a new name too!

What are we in essence?

We are all about your TV experience. At the end of a hard day's work (or play...) you sit down in front of your TV for a pause, to escape to another world. Our app is your assistant and your guide on this journey to other wonderful worlds of imagination. The television is the center of this experience and believe it or not, it flips the frames 60 times every second to immerse you deep in this experience. Our app, helps you stay in sync with your TV experiences at all times, which means we're running at 60 frames a second too. So we called the app, simply, 60Hz.

60Hz

We, here at M2D2, want to keep pushing 60Hz in this direction of helping you to get the most out of your television time. We'll be adding new features to make your TV experience more entertaining.

When 2.1 launches, we'll officially change names. When it does, tell your friends. Your recommendation is important to us. We depend on it heavily to keep the app moving forward. We've been prompt to answer all your feedback. We've gotten over 30 emails on the first few days alone! We have a good idea of where we can improve and what we can do in future releases. So keep the feedback flowing...

And spread the word about 60Hz!

Designing 60Hz 2.0

I love watching TV shows. I spend about an hour a day on it at least. It’s not just TV, I love movies too. I love the stories in them. It is another world of imagination where there are no limits. I gravitate towards shows which have a long running story, like Game of Thrones. I appreciate the sense of continuity they have. These shows offer a way for me to escape my busy work day when I get home.

In the December break of 2011, Suneth and I were geeking it out trying to solve a very small problem we had with TV: I find it hard to keep up with the story. Often, the episodes aren’t in order. Even if they are, you tend to forget it a little here and there. Busy life gets in the way of tracking these things. So we decided to make a little iPhone app, called tvQ, to keep track of where you’ve watched something to.

So tvQ 1.0 came out. We drew inspiration from apps like Series Guide for Android, which I had been using on my Nexus One. We got some traction after Justin from Trakt.TV approached us for an integration. 50% of our users are from trakt, the last time we estimated the numbers, which is a huge deal.

tvQ v1 is slow. It suffers from slowness brought on by Core Data Framework. We probably didn’t know the right way to go about it, to be honest. It is designed with stock standard iOS controls, which look dated now. We wanted to give it some love and write it in the architecture some of the bigger enterprise grade apps are written in. We wanted it to be fast and focus on the user experience a lot more this time. Other apps for trakt were copying our front page so we thought... let’s make something better! (Haha)

Coming from Momento Jar app, we had sharpened our iOS + Design skills. We started sketching out some of the early designs as you can see here (and some early photoshop mocks):

These screens represent some of the thinking gone behind the new design. Initially we wanted to take the 1.0 experience across where we focused heavily on just a single list of shows with their next episode. A lot of the times, this design didn’t always perform well. We realised the main page was more about episodes and less about each series. So we spent time crafting the front page to be episode centric.

Now, episodes from each show are put into 3 buckets.

  • We always show you what’s on today. They don’t have to be next in line. It is to say... hey these shows are on today, which might spark your interest to catch up or just see where it’s at now.

  • Next is upcoming, which is what I look forward to in the coming week. I get some of these stuff online so I keep an eye on these. Sometimes I like to read in advance and see what’s in store for the following week (I skip ads on TV so I don’t see the previews). I can limit this section by saying don’t show me if the next episode is 6 weeks away or more. When Suits is returning in a few weeks time, it will start appearing on the list again... which is exciting!

  • Same goes to past episodes. The thresholds you set for yourself allows shows you neglect to fall off the ledge and stay out of your way. Make sure to set these up in your settings when you get the app.

We added a proper library for you to collect shows. Made it so that you can ignore missed episodes for shows like CSI where you don’t care about watching every single episode. We made comments part of the synopsis page to see immediate reactions from other community users (trakt only).

iOS Simulator Screen shot 22.04.2013 8.06.47 PM.png
iOS Simulator Screen shot 22.04.2013 8.08.02 PM.png

One big change this time around is artwork. We put fanart and posters in the center of everything. This doesn’t mean we compromised on design at all. They elegantly fit in and add color to our app. You will realise the app is white for most part, with neon styled icons. The rest of the colors are really added in by the great artwork, giving color to every page. Our experience with Momento Jar really helped out here. There’s a bit more technical knowledge involved in caching, cropping and animating images to get the most out of them. If you get the iPad version, you will see that the obsession with great artwork continues. We hope you love it!

iOS Simulator Screen shot 22.04.2013 8.50.57 PM.png
iOS Simulator Screen shot 22.04.2013 8.29.36 PM.png
iOS Simulator Screen shot 22.04.2013 9.00.26 PM.png

We did a lot of work in the backend too. It is a brand new codebase. We threw out everything we had before and made everything super fast. We used the Command & Engines architecture (future blogpost...?) to organize everything properly.

In the end, we’re very pleased with the result. I think this is a world class app, for both iPhone and iPad. It is made with love by Suneth and I, who uses the app on a daily basis. We hope our effort will convert to a large number of downloads. Tell everyone about it! It’s available 10th of May. Our app experience puts us firmly in front of the TV tracking apps out there. We intend to be creative with our features in the future releases. If you have awesome ideas of your own, head on down to our 60Hz page and start a discussion about it. We love hearing everyone's take on the app and the community support.

Thank you for reading. Here’s the end result (we felt serious about the app that we made a video about it!!!). Tell your friends... iPhone app is FREE on the 10th!!! :)

Why Design is Important

A lot of the time, design is a step that is left up to the developer working on a feature. He/she is given full liberty to make a decision on the user interface. Often, there is not enough to make an informed decision on the UI, even though he may be capable of coming up with something aesthetically pleasing. Spending time on design can feel like a waste of time, effort and ultimately, money. This is, of course, not true.

Design is where marketing, sales and brand meet the product and its platform. It is the round table where all departments can sit down to have an equal say on how a product’s development effort can be be part of the bigger story.

A designer can interpret some of the abstract thinking behind features to produce a consistent design, which in turn can be interpreted by the technical team. A designer’s job is a lot more complex the just coming up with a fancy UI. He has to worry about the narrative, and ensure that the UI reflects on the spirit of the product.

Event a tiny feature like a word count in your word processor product can be a complex decision. You could

  • Have a count in the status bar of the app
  • Hide the operation in the tools menu
  • Toolbar item
  • Context menu when text is selected

The right decision can depend on a number of factors like user stories, target audience, client requests, estimated frequency of usage, new target markets etc. If you look closely, Google Docs chooses to hide it in a menu while Word has it in the status. Reflects well on what each product tries to achieve.

At the end of the day, UI is how your user forms a long term relationship with your product. The message you carry is important for this relationship to grow. A solid design process can go a long way.