Tip:
Highlight text to annotate it
X
RETO MEIER: Hello, and welcome to a very special episode of
The App Clinic.
IAN NI-LEWIS: Today, we're broadcasting our pilot episode
of the GDG App Clinic, starring talented developers
from Prague.
RETO MEIER: We thought it might be fun to visit Prague--
IAN NI-LEWIS: But we couldn't get the budget.
So instead, we invited one of the Prague GDGs
to join us via Hangout.
RETO MEIER: We gave each developer a few minutes to
introduce their app, and it was our turn to give candid
feedback on how to make their good apps even better.
IAN NI-LEWIS: We're hoping to repeat this with GDGs all over
the world, so let us know if you want to
be part of the magic.
But be warned, Czech developers know
what they're doing.
RETO MEIER: So without further ado, welcome to the GDG App
Clinic, Prague.
RETO MEIER: Thank you very much for inviting us to your
GDG in Prague.
I'm a big fan of Prague.
I love the city-- been there a few times, not just for Google
Developer days, but for fun as well.
And one of the things which I always come away from whenever
I go to Prague is how great the developers are.
It's one of the big reasons why Google has a big interest
in what happens in Prague, so we are really honored to have
this opportunity to take a look at some of the apps that
you guys have put together, hopefully give you some
feedback, and just basically hear from you guys as well as
to what you've been working on and what
inspires you about Android.
IAN NI-LEWIS: And I've been to Prague once on the way to
[INAUDIBLE].
That's pretty much it.
MALE SPEAKER: [LAUGHS]
Great.
OK, so let's invite our first speaker.
MALE SPEAKER: Hi, guys.
Nice to meet you.
It's a pleasure to kick off this fantastic event, so I
hope we get some great feedback.
So our application is called Big Launcher.
As the name suggests, it's a launcher suitable for seniors,
for people who are visually impaired, and
for disabled people.
It uses big icons and large text for all the basic
functions of the phone, including contacts, including
messaging, including call log, and also it can launch
applications.
RETO MEIER: So this is Big Launcher up on our giant,
giant phone, and it, exactly as the developer said--
oh, by the way, make sure you guys introduce yourselves when
you get started as well, so we know what to call you.
What is your name, sir?
MALE SPEAKER: [INAUDIBLE].
RETO MEIER: [INAUDIBLE].
All right.
Perfect.
IAN NI-LEWIS: That's a great name.
RETO MEIER: It is a great name.
I feel like we're not going to be able to pronounce any of
the names today, so we've started about as simple as
it's going to get, and it's going to go
downhill from here.
Nonetheless, [INAUDIBLE] has done a great job here.
You can see Big Launcher is exactly what it says it is.
It's a replacement launch screen.
And it is exactly that.
So it's nice big buttons, bright icons, really easy to
see what's going on.
One of the things that I did find was during the
configuration process, there's a setup wizard that you go
through, and as part of that process, it feels like that's
actually quite complex.
So it's almost as though it's an app that you're going to
want to set up for someone else, rather than have the
visually impaired older person set it up themselves.
IAN NI-LEWIS: That's kind of the impression that I got.
I don't know how else you could do it, really, because
obviously, you're going to have some steps where you have
to dig into this stuff that's in the phone
already, you know?
At least just to set it up as the default launcher.
RETO MEIER: So that's something that you may want to
consider is what is the target audience for that
phase of the app?
So if that's more for your expert user, so yourself or
whoever is setting up a phone for your parent or
grandparent, then you may want to try and make that a little
bit more familiar to the standard phone UI, and then
keep the large screen simplified stuff for the final
home screen itself.
There's is also a couple of tips about the wizard setup
process itself.
It doesn't quite follow a standard wizard type UI.
So in a normal wizard, I want to be able to go to navigate
backwards and forwards until I'm complete, and I noticed
that when I was doing this setup, I
had to simply progress.
It was just sort of a series of questions that
got put up on screen.
I answered them, I chose my default, whatever
else, and moved on.
Now, if the idea here is that it is for the older person to
use themselves, then that kind of makes a lot of sense.
You don't want to have to put too many buttons on screen,
too much confusing navigation.
Just one big question, make a decision, move
on to the next part.
But I'm not sure that it quite worked.
It was a little bit too complex for that use case, a
little bit too basic for the more expert user.
One of the things that I noticed through that wizard
process as well was that you're able to select a
language, or go by default.
Now, I was a little confused by that, because the phone is
obviously going to have a language set.
You can have the different resource folders to make sure
the correct assets are loaded.
Was there a particular reason why you wanted to allow people
to select a language independent
of the phone itself?
MALE SPEAKER: Yeah, there's a reason.
Because we feel that's some of the users can have the
different language set in the system settings, but and they
want to use a different language in Launcher itself.
For example, some immigrants or people like that.
So that's why.
IAN NI-LEWIS: That's true.
I think if I were setting up this phone for my
mother-in-law, Chinese, I think that I would want the
setup to be in English, but she, of course, would want to
see it in Chinese.
RETO MEIER: Would want to have the launcher in Chinese.
That makes a lot of sense.
All right.
I'm learning stuff myself.
So when I'm actually using the app-- so you can see here that
the buttons are responsive, which is nice.
Whenever you're building custom buttons, custom UI,
it's really important to make sure that they behave the same
way that standard Android buttons work.
And so you need to have some sort of feedback when you're
pressing things.
What I did notice, which I would be interested to
understand better, is generally, for stuff like
this, it might be useful to have a long press, which
triggers the accessibility by default on the Jelly Bean
[INAUDIBLE] phones.
So the same way where on action bar items, when you
press it, it displays help [INAUDIBLE]
explaining what it is.
That actually--
[INTERPOSING VOICES]
IAN NI-LEWIS: He actually mentioned that though.
He said that he felt like the long press was unfriendly to
this type of user.
RETO MEIER: Yeah.
And it could be.
So how does one trigger the accessibility talk back
functions of the phone, then?
MALE SPEAKER: Well, there are two things.
The first is that senior people got problems to
distinguish between long press and short press.
So we wanted to get rid of that.
And then, during the development, we got to this
idea, or the possibility to use a long press for some
other function.
So you can turn on in the accessibility options that on
long press, the Big Launcher reads the activated item.
This is useful for older phones with previous versions
of Android, which doesn't have the explore by touch function,
so even on these older phones, people can use this read by
touch or read by long press function developed by us, and
they can be, for example, reminded of
what this icon does.
So when you create a shortcut for some application, you see
only the icon, but when you long press on it, the
description of this icon is red, so you'll
remember what it does.
RETO MEIER: Very nice.
Very nice.
So I mean, overall, there's not a huge amount of feedback
that we can give, apart from getting a little bit nitpicky.
I think that the padding around the time and date on
the top here is a little bit narrow.
You probably want to indent that a little bit more to make
it feel a little bit more balanced.
But really, a lot of the feedback is going to be that
kind of nitpicky stuff, so we're going to make sure that
we include that in an email, and send
you off those details.
We're going to get Roman, Nick, and Adam from the
Android Design In Action Team as well to provide a little
bit of extra feedback on UI elements to this app, and all
the ones we look at today, rather than spend too much
time complaining about two pixels being missing from a
particular part of the UI.
IAN NI-LEWIS: Although I did have one comment on the clock.
I was little surprised, because I've always been told
that digital clocks were less accessible, and that older
people would prefer analog clocks.
But you used a digital clock here.
I'm wondering, was that a conscious decision?
MALE SPEAKER: Well, it's, again, because of the support
of low res devices and older phones, because you don't have
too much space on phones with 240 by 320.
IAN NI-LEWIS: Good point.
MALE SPEAKER: We also, if you turn on the option in
preferences, there's also enlarge, better indicator, and
mobile signal indicator, and we are really getting low on
space there.
RETO MEIER: No, that's a really good point.
IAN NI-LEWIS: No, that makes sense.
RETO MEIER: So a couple of very quick last minute points.
So it does have an old school venue button, which does
display a custom, more easily pressable menu, I suppose.
I'd like to say, I understand why you've got this,
particularly for backwards compatible
support for older devices.
I did note that you still have the Menu button, and it is a
little more shameful in the wizard.
There's no need to have it available there.
And here, I would think about having a default mechanism on
newer versions of the device which get rid
of that menu button.
So I know that there is a setting within the setup
wizard which lets you optionally choose to have
preferences show up within the UI itself.
I'd consider defaulting that to on and hiding that menu
button away.
It just will make the app look more polished on newer
devices-- make people feel like it's a more polished
final product.
And the other piece of suggestion I would have as
well, particularly around-- it seems like you're having to
make a lot of UI compromises and choices based on what
makes it easier to use by older people.
I would, if you're not already, strongly suggest that
you make sure to use a lot of analytics to find out exactly
what people are doing.
Are they long processing?
Are they then hitting back?
What are the behaviors?
What are the choices?
What are the outcomes of some of those compromises?
MALE SPEAKER: We did lots of testing with the UI itself,
but currently, we don't include any analytics in the
app, because again, it's about the target group.
We suppose that lots of seniors don't have data tariff
or mobile data at all, so we've created this from the
beginning to be a completely offline application.
RETO MEIER: Great.
Well, I can't argue with that.
It sounds like you've thought it through.
So nicely done.
That's the thing.
We could go on praising it, but that doesn't seem--
IAN NI-LEWIS: No, it looks great.
Well, actually, I've always got one last thing, but you've
got a really good point that you don't want to
use the data tariff.
But have you considered maybe doing analytics anyway and
just storing it to persistent storage?
Because I feel like, especially in the scenario
where you have a caregiver that's setting up the app, and
then you've got the senior that's using it, it might be
useful to have that data, even offline, to just debug issues.
RETO MEIER: And you could also do things like store up the
analytics and only upload it when it's connected to Wi-Fi.
Those sort of things might be [INAUDIBLE].
IAN NI-LEWIS: Which all of you should be doing anyway.
That's a really important step.
RETO MEIER: All right, perfect.
So thank you, [INAUDIBLE].
IAN NI-LEWIS: Well, thank you very much.
RETO MEIER: Great app.
We'll send you through some tips, but
basically, nicely done.
MALE SPEAKER: I think this also.
Thank you very much for your feedback.
RETO MEIER: Of course.
IAN NI-LEWIS: All right, who's the next victim?
MALE SPEAKER: Next victim?
Our victim?
OK, next application is a stocks tracker.
IAN NI-LEWIS: Great.
TOMAS VONDRACEK: Hello, guys.
RETO MEIER: Hey.
TOMAS VONDRACEK: So my name is Tomas Vondracek.
[INTERPOSING VOICES]
RETO MEIER: OK, cool.
TOMAS VONDRACEK: Shortly Tom, for you.
IAN NI-LEWIS: That sounds great.
We can deal with that.
RETO MEIER: That's way more our speed.
IAN NI-LEWIS: Thank you so much.
RETO MEIER: Tom it is.
TOMAS VONDRACEK: OK, so let me introduce my application that
I published a few days ago.
It's a stocks tracker, so as its name
suggests, it's about stocks.
So one day, I bought a stock here at Prague Stock Exchange,
and I wanted to watch it all the time with my phone.
But by the time, there was no application that could provide
me data from Prague Stock Exchange, so I decided to make
my own app.
RETO MEIER: All right, perfect.
All right.
So let's take a look.
So one of the things that I really liked about this app is
just the story you told us of having a need that you wanted
to have fulfilled, and then building an app
that fulfills that.
I think a lot of the best apps come from people who have a
problem that they want to solve for themselves, and so
they build an app which does that, and I think that's a
great way of knowing what your users want, if you're your own
first customer.
So let's start it up.
You promised it would be really quick
as soon as it started.
So let's--
boom.
That's pretty fast.
IAN NI-LEWIS: Very nice.
RETO MEIER: Nice.
So this is a really nice app.
What I really like about this is how you've followed the
Android design guidelines in a way that makes it really easy
to use, really familiar, but it still has its own unique
look and feel.
So if we look at the front page here, we've got this sort
of custom little thing down at the bottom here which is
giving us the NASDAQ index.
Nice little graph control there.
All of this is custom.
There's nothing like this built into the platform.
So that looks really nice.
IAN NI-LEWIS: Yeah, it's really pretty.
And it's a good use of space there, too, because we've
always said don't put too much on the bottom, because you
don't want to accidentally press something when you're
trying to hit the back button and the home button.
So it's nice to see something there that's visual and
important, but doesn't have to be interacted with too much.
In fact, honestly, the only problem that I had when I
first picked up this interface was looking
for the search button.
I sort of expected it to be up at the top, and instead, it
was up at the bottom.
Now, it's a perfect icon--
search with a little plus?
Like, oh, that's how I add a stock.
No worries there as soon as I found it.
It just took a little while to find it, because it wasn't in
the place I expected on the action bar.
RETO MEIER: Feels like it should be in action.
So that may be one piece of feedback is to extend that
bottom part out, move the button up to the top.
IAN NI-LEWIS: Yeah.
We also usually say don't put a refresh button.
RETO MEIER: Yeah, it's possible.
I had a little bit of a look to see how the refresh worked,
and it seems that within preferences, you're able to
select your refresh frequency.
So whenever I see that sort of thing, I get
a little bit nervous.
So I feel like I need to ask how you doing your refreshes.
TOMAS VONDRACEK: I beg your pardon?
IAN NI-LEWIS: Yeah, sorry.
How are you doing your refreshing?
TOMAS VONDRACEK: Well, the application starts an alarm in
particular interval.
It's not waking up alarm.
RETO MEIER: So it's an inexact repeating non-wake alarm?
TOMAS VONDRACEK: Not repeating, but I set alarm
every time I need to schedule next update.
RETO MEIER: OK.
So one of the things about that-- if you're doing that
yourself and it's not repeating, then it's going to
trigger it basically the exact time.
So you may want to consider sitting an inexact repeating
alarm, even if you then disable the alarm each time
and reset it.
That will give the system a little bit of leeway to time
shift all the alarms from the different apps, and make sure
that they're not waking up the cell radio within in a few
seconds of each other and keeping the radio hot and
draining the battery more quickly.
If you want to take it even a step further, given that you
said you have a server where you're remembering what
people's stocks are--
so if you wanted to be really, really battery efficient,
really, really awesome, you would actually do all of the
parsing of the stocks on your server, and use Google Cloud
messaging to tell each of the devices which have those
particular stocks listed that it's time for a refresh.
And in fact, because the stock data is so small, you could
probably bundle that within the payload.
So you wouldn't actually need to do any refreshing at all.
You can just tell the devices, GOOG is up 10%, and have it
update that way.
TOMAS VONDRACEK: So it wouldn't mind if there was a
lot of push messages from server to all those apps?
RETO MEIER: No, we have social media apps like Twitter
clients and instant messaging apps all use
Google Cloud messaging.
There's no quota, very efficient, definitely,
definitely the way to go.
TOMAS VONDRACEK: OK.
RETO MEIER: So that's something to look at.
I think that's probably the biggest piece of feedback
which is going to really transform this app.
It's going to reduce your latency, it's going to
increase your battery life, it's going to let you hide
away these refresh buttons.
So I think that would be a tremendous asset.
From the UI perspective, I was worried.
We don't have the Android Design In Action guys here.
Roman, Nick, those guys are kind of the experts.
You've done a great job.
A lot of these apps have done a fantastic job.
You look here, we've got the tab strip along the top, and
so you've got this really beautiful view page, your
implementation, so you can switch
between the stock exchanges.
IAN NI-LEWIS: Is that your own, or did you borrow that
from the apps page on AOSP?
TOMAS VONDRACEK: I beg your pardon?
IAN NI-LEWIS: Well, I just noticed that
the 3D effect here--
I wonder if that's the AOSP implementation, or did you do
that yourself?
TOMAS VONDRACEK: No, it's simple page transformer that
is available in support library.
So nothing special.
RETO MEIER: It looks really nice.
And what really impresses me is you've got the view pager,
and you've also got the correct implementation for the
drawer pattern-- like, correct in every way.
It displays correctly, it comes in and out correctly.
Just really, really nicely done.
So, bravo.
We so rarely see a correctly implemented drawer pattern,
even within some Google apps.
So it's impressive.
TOMAS VONDRACEK: Thank you.
RETO MEIER: And you've got the right details here.
One possible nitpick--
you've got settings and account within the drawer.
I'm not entirely convinced that's the right place for it.
I think the drawer is better for just navigation, so all of
these other things-- stocks, portfolio, indices, and market
news, perfect.
But I'd consider moving settings and account back into
the overflow menu over here next to select markets, and
possibly even switch them around--
move select markets, potentially move that into the
navigation drawer.
But these two things, settings and accounts, are things which
you would rarely change.
You'd set up once or twice maybe at the beginning, and
then never see them again.
So you want to move them out of the general UI and hide
them away in the overflow.
IAN NI-LEWIS: Yeah.
In fact, things like select market I might even want to
see in the settings.
Basically, settings is a really good place to tuck away
things that you don't expect to be used particularly
frequently.
So when you go to select markets, I figure that not
being an international super trader, I'll probably set up a
couple of markets and then forget about them and just
switch between them.
I do think that it was a little confusing in terms of a
difference from the stock apps that I normally use to have to
remember which market each my stocks is listed on.
That might be more of a US thing, where we've got NASDAQ
and the New York Stock Exchange, and we don't
really think of--
I mean, they're treated the same for tax purposes, so I
don't really think of them as being different.
So I looked for a couple of stocks, and I couldn't find
them, and it turned out they were on the wrong exchange.
RETO MEIER: That might be a really useful search feature,
so that when you are searching to add, it works across all of
the exchanges that you have selected.
Not across every exchange, but just the ones which you are
interested in.
That might be really useful shortcut.
I noticed when Ian added the Prague Stock Exchange, it has
a whole bunch of default stocks set up.
I really like that, because it was actually one of the pieces
of feedback that I had was when you first start up the
app, you end up with this screen, which
is perfectly fine.
It tells you to add stock.
But it's kind of almost cheating, because it's asking
you to add stock using a button which you'll never be
able to use again.
So it's almost training the user to use the
app the wrong way.
I think it would be really interesting to instead have a
few default stocks, so that you sort of see a screen like
this when you get started, immediately understand how the
app works, and then are looking to add your own
stocks, which you then do using the button, which
hopefully will be up at the top.
IAN NI-LEWIS: Another thing that a lot of apps do that I
think I like a lot--
I think it's particularly helpful-- is if you do have
empty space in your list, what you can do is put the outline
of another item, which then if you press it, it will take you
to the ad page.
Because that's the thing is when I look at these stocks,
the first thing I think is, how do I get more
things into this list?
And if the button is right there, it's very intuitive, as
opposed to down here in the corner, where it's certainly
visible, but just not as intuitive.
RETO MEIER: Otherwise, like I said, really, really nice app.
You click through, you have the stock details here, nice,
again, custom graph, which shows the stocks.
Looks much better over that time frame.
And then you can click again further through, and I quite
like this, because you can actually annotate the graph,
and save that, and even share using the standard share
intent, which is all really, really nice.
One thing I did notice--
you obviously have the ability to zoom in and out using the
buttons at the top.
I was kind of always looking to zoom and pan left or right
within this, so it's kind of screaming out for a
gesture of some kind.
And I think we actually have an Android training class
around gesture support, so it may be worth having a look at
that, considering it.
I've build so many graph implementations in so many
different programming languages over the years, so I
know how much of a pain it is to implement that second level
of zooming and panning.
So not a P0, not a high, high priority bug.
Certainly, the faster, more efficient
updates is more important.
But as a nitpicky thing which might be really nice, I don't
think I've seen any stock [INAUDIBLE].
IAN NI-LEWIS: That's odd, because I've built many graph
libraries, and I think it's actually very easy to
[INAUDIBLE].
RETO MEIER: Well, I guess we all know who's the better
programmer.
So yeah.
I've taken a few notes.
I just want to see if I'm missing anything here.
No, I think we've covered pretty much
everything I wanted to.
IAN NI-LEWIS: Yeah.
It's a great app.
The thing that I think we have to point out-- and I don't
know how well it comes out in the video--
is just how fast this app is.
It's completely smooth.
RETO MEIER: It's lightning fast, yeah.
Really, really quick.
TOMAS VONDRACEK: Yeah, I put a lot of effort to make it fast.
RETO MEIER: And it's paid off.
Project Butter, a big part of what we do with the framework
now, trying to get everything to be snappy, fast, and
smooth, and everything in this app is.
Updates, there's never any jag, never any latency,
everything just sort of works, which is really nice.
Portfolio stuff here, again, tells you how much money
you've theoretically made.
Go back to stocks, it's all just fast
and quick and intuitive.
So congrats.
Nicely done.
If you do get a chance to implement the Google Cloud
Messaging, we'd love to hear about that, because I think at
that point, this could be an app which we
could talk about featuring.
Not that it's our choice, but we can certainly talk to the
people whose choice it is.
IAN NI-LEWIS: Well, we certainly do have the ability
to get into the pure Android process.
RETO MEIER: That's true.
This is looking pretty pure Android.
But yeah.
IAN NI-LEWIS: Once we get a couple little changes, and
getting rid of the refresh button and going to a
different refresh cycle, that would be--
because we need a stock up in Pure Android.
RETO MEIER: We totally need a stock app, and this is nice.
So yeah, definitely keep in touch, and let us
know how you get on.
And we'll see what we can do.
IAN NI-LEWIS: Yeah.
And add Hong Kong and Shanghai.
TOMAS VONDRACEK: OK, thank you very much.
RETO MEIER: Perfect.
Thank you.
MALE SPEAKER: Thank you very much.
The next speaker is application SMS Ticket.
MALE SPEAKER: Hello, everyone.
My name is [INAUDIBLE].
I am from Inmite company, and I'm happy to introduce last
update of SMS Ticket, which our team has
just released yesterday.
Let me say a couple words about the use case, because
you might not be that familiar with it.
Let's say I want to take a bus or tube in Prague.
What I need is a ticket.
And I can buy a ticket in a shop, or in ticket vending
machine, or I can send a special text message to some
special number, like this.
RETO MEIER: I love a man who brings his own props.
MALE SPEAKER: And after a minute or two, I receive a
text message, which I can officially use as a ticket.
RETO MEIER: Perfect.
MALE SPEAKER: And what our application does--
it remembers all of those codes and special numbers for
you, so you can, within three clicks, send a text message,
you will receive a text message back.
The application parses validity information from the
ticket, sets some alarms to warn you 10 minutes before the
ticket expires, fires notifications, and saves the
ticket in the database for later reference.
Later on, you can see how much you spent on tickets in
detailed statistics.
Let me say just some numbers.
We have about 883,000 users, and about ever second user
uses the application actively, and we support 22 tickets in
nine Czech and four Slovak cities.
What do we cook for future?
We would like to add push notifications to keep the
ticket database up to date, and we would like to add a
widget to make the order of a ticket just one click
experience.
RETO MEIER: Nice.
MALE SPEAKER: OK, I'm pleased to be here, and I would
appreciate any feedback.
RETO MEIER: Excellent.
Thank you for coming along.
So, like I said, I've been to Prague a couple of times for
Google Developer Days, and the folks from Inmite are always
impressive.
You guys do some really good work.
So it's wonderful to see.
I think two apps from you guys are nominated today.
SMS Ticket--
we're going to be able to be pretty quick on this, because
it's actually really good.
I love the simplicity.
I love what you guys have done.
You've got your custom branding, this sort of golden
orange color, which is really distinctive, and it pervades
the entire UI in a way that is subtle but really effective.
It's obvious what your brand is.
Icon coloring and everything else really works.
Once you're in the app, again, you have this really subtle
user guide so that you know what you're supposed to do.
It tells you right here you can choose to look at the list
of tickets or statistics, buy a new ticket, so the whole
process is laid out for you in a way that
doesn't feel too obnoxious.
I don't need to click past it, and I don't need to
go through a wizard.
It's just there.
If I order a ticket, again, you're given the cities, all
of this detail.
So we'll go with Pilsen.
And then, again, it's just this really
simple click process.
Everything's really obvious.
35 minutes.
Buy a ticket.
And again, you've even customized the color of the
text in this dialog.
Now, normally, I wouldn't be convinced that that's actually
a good idea, but it kind of works here.
IAN NI-LEWIS: Yeah, it flows.
RETO MEIER: It just feels authentic.
And that's kind of the key.
We always harp on about how important it is to follow the
guidelines.
Don't change the standard UI in ways that
will confuse users.
And a lot of people assume that means that they have
create apps that look exactly the same as all of the
standard apps.
It's not what we mean.
We just mean that they have to look the same--
MALE SPEAKER: We did the app in orange, so why not have
orange dialogs?
IAN NI-LEWIS: Sure.
RETO MEIER: Exactly.
MALE SPEAKER: Why should we use blue dialogs?
IAN NI-LEWIS: In fact, if you've ever seen our game
review show, which is sadly off the air right now, one of
the things that we would harp on is when you'd be playing a
game, and it would all of a sudden pop up a standard
system dialog, and it took you straight out of the game.
So having a skin for those dialogs, and making it feel
like it's part of your app, without doing too much
rearranging or alteration of the
functionality is a great idea.
RETO MEIER: Absolutely.
So if we try and buy a ticket, we can't, because we can't
send an SMS, which is perfectly appropriate.
You guys have happily sent us a special version where we can
add a test ticket, so thank you for that.
That definitely makes our life easier.
And boom, so there you go.
You have a ticket.
Really straightforward.
12 minutes.
It's got a little orange indicator saying that
actually, you're going to need to use this
ticket pretty soon.
So that's a really good indicator
to make sure people--
what you're doing here is adding value above and beyond
what they would have gotten if they were just looking at
their SMS texts in their SMS viewer.
Change that metaphor presenting them with a ticket.
And now it's turning red, because I guess
it's within 12 minutes.
We can click here.
We can see the valid to and from.
We can see the code, and I guess the code's important,
because I'm guessing you have to show that to conductors or
what have you if they accost you, demanding to know if you
paid for your ticket.
So you go through, and you can show the SMS
itself, which is perfect.
So that can all be validated.
All consistent.
What I really like here is they've actually used
notifications really, really cleverly.
So you have this notification, and it's a rich notification,
so you're able to show the SMS, which, again, you need to
do if someone wants to know you've got a ticket.
Got the details, and it's got an icon here which if we
continue to prattle on, which we will, this
would become red.
Oh, look at it.
It's like I scripted it.
So it's red, which means, hey, you've got less than probably
10 minutes before the ticket expires, so you need to get on
and use it.
Really, really useful, really, really effective way of using
notifications.
Now, again, this is nonstandard.
The guidelines say that the notification icons should be
black and white, small, et cetera.
IAN NI-LEWIS: I disagree.
I disagree.
Because the guidelines actually say they should be
monochrome.
RETO MEIER: Yes.
IAN NI-LEWIS: You could take.
RETO MEIER: That's true.
IAN NI-LEWIS: There's only one color there.
RETO MEIER: I think it is monochrome.
There's only one color.
So I can't argue with that.
But again, it's a really practical way of showing more
information in a way that just makes sense.
You go, well, obviously it's going to be this.
IAN NI-LEWIS: Really smart.
RETO MEIER: What else would it be?
So again, really nicely done.
IAN NI-LEWIS: In fact, the only thing that I was
surprised about that I kind of wanted to be different is I
would love to have the SMS and the important codes show up in
a much larger font.
I imagine myself needing to show that to somebody, and my
day is going to go faster if it's about two or three times
as big as everything else.
RETO MEIER: It's OK.
I'm sure every single person in Prague who uses the app,
everyone in Prague who uses public transport, is using
your app anyway.
So the conductors are totally going to get used to it.
IAN NI-LEWIS: That's true.
RETO MEIER: No, that's a good point.
It would be nice to make it more visible.
IAN NI-LEWIS: Same thing with the order ticket button.
I think that could be bigger and a little further away from
the status bar.
RETO MEIER: That's true.
IAN NI-LEWIS: I think that would make me a little more
comfortable.
RETO MEIER: Yeah.
It might be useful to emphasize the actions you want
people to take or the information that they may need
and make that a little more obvious.
UI nitpick-- if you have tabs, you should be able to swipe
between them.
So you want to have that view pager implementation on the
front page to swipe between tickets and statistics.
IAN NI-LEWIS: I don't know why we do tabs without view
pagers, you know?
RETO MEIER: Yeah.
We should just not allow it.
IAN NI-LEWIS: Yeah.
RETO MEIER: So that's the only other sort of nitpicky--
as well, when you've got the notification--
so you've got when the ticket will expire, valid from, code.
I'd almost want to change it around a little bit so that
you, again, made it a little bit more obvious how long
until it expires.
So you've got that countdown that's indicated by red.
I just want to see like, 10 minutes.
5:00.
Whatever those two numbers are should be kind of made bolder,
made more obvious.
MALE SPEAKER: Yeah.
The orange stands for 20 minutes, and the red one
stands for last 10 minutes.
And then it goes gray for expired tickets.
RETO MEIER: Nice.
And beautifully, once I'm done with my ticket, I can swipe it
away, probably after it's expired, is that right?
MALE SPEAKER: Mmhmm.
RETO MEIER: Yeah.
That explains why I can't get rid of it.
So that's fine.
And I'm guessing--
I haven't actually tried adding multiple tickets.
Yeah, nice.
Let's add lots of tickets.
I'm testing you.
But that works nicely.
Now, one thing that you may want to consider, though, is
that if I do have a lot of tickets-- and that's, in
fairness, probably not a very common use case--
I risk flooding my notification bar.
So you may want to consider collapsing that in so that
it's just got the latest one and the
total number of tickets.
IAN NI-LEWIS: I don't know.
How uncommon is that if you're traveling with your family,
for instance?
You might buy four tickets to the same place.
MALE SPEAKER: But we still can group them.
RETO MEIER: Yeah, exactly.
If you group them by expiration time, something
like that, I think that would really work well.
IAN NI-LEWIS: Yeah, that would be great.
RETO MEIER: Let's see.
And they do dismiss.
Perfect.
So, yeah.
Nicely done.
I'm going to check to see if I have any additional notes.
Not really.
I think the only real issue we had was the
swiping between tabs.
Everything else is nitpicky.
Hopefully you'll find some of that useful.
But totally your call.
IAN NI-LEWIS: Yeah.
And of course, one argument for not swiping between the
tabs is that if you can dismiss these tickets by
swiping them away, it might be hard to distinguish between a
swipe on the ticket and a swipe between tabs.
But I think what we're really asking people to do now is an
edge swipe.
So if you've got something where you're swiping
internally, then it's understandable that that
gesture wouldn't switch between tabs, but an edge
swipe always should.
RETO MEIER: Yeah.
The stock tracker app that we just looked at actually does
this really well for bringing out the action.
The draw at the side.
It does sort of an edge swipe for that, which works really,
really well.
Perfect.
All right.
So we shouldn't spend too much more time on what is already a
really nice app.
We want to be able to take a look at a couple more in the
time that we have available.
So thank you very much, really nicely done, and yeah.
Let us know how you get on.
MALE SPEAKER: Yeah.
Thanks a lot.
MALE SPEAKER: Thank you.
The next speaker needs to jump a little bit to get here.
OK, so the next application is Swim Places.
MALE SPEAKER: Hi, guys.
So, just to let you know, I'm not a developer.
I'm in charge of the project management for BIPORT.
And I'm the spokesperson for them.
I'm going to talk about our app that conceived together.
Oh, by the way, my name is [INAUDIBLE].
That's one of the tough names.
RETO MEIER: [INAUDIBLE]?
MALE SPEAKER: Sort of.
RETO MEIER: Everyone always messes my name up.
I'm allowed to mess up other people's.
MALE SPEAKER: And this app was originally conceived by our
mate COEX, who designed the web
application for Swim Places.
And one day, when we decided on a hot day, when we decided
to go out swimming, and we couldn't find anything, we
didn't have a computer with us.
We decided that we were going to create the app.
IAN NI-LEWIS: It's a good idea.
MALE SPEAKER: It's a non-commercial community app
which basically allows and provides users with the option
to add places that they love or discover new places that
they haven't visited yet.
The target group is pretty much wild swimming
enthusiasts, but also, that doesn't mean skinny dippers.
But it also does include them.
RETO MEIER: It's not against them, it's not for them, but
they're welcome.
Excellent.
MALE SPEAKER: They're welcome to use it.
Yeah.
RETO MEIER: Let's take a look.
You can't judge anyone's preferences on me.
So I guess one of the quick questions I did want to ask--
so it sounds like all the places that get added are
based on your community.
So you're not sourcing data from anywhere else.
You're asking your users to add places as they visit them,
is that correct?
MALE SPEAKER: Correct.
It's correct.
The first couple were added by us.
The most known ones.
But then the community picked up, and basically is in charge
of adding everything.
RETO MEIER: Perfect.
OK.
And that's what we can see.
So if we look at our list-- so I like that it knows where I
am, and gives me nearby places based on my location.
But it didn't turn on the GPS, or at
least not that I noticed.
So it was all done quite quickly, quite quietly.
I don't feel like it's draining my battery for
something which it shouldn't need to.
So that's a really nice touch.
IAN NI-LEWIS: Yeah, that's good.
These sorts of apps, you won't really need a very accurate
location to be useful.
RETO MEIER: Exactly.
IAN NI-LEWIS: Of course, this one draws a pretty wide--
we've got all the way down from San Diego up to Seattle.
RETO MEIER: Yeah.
IAN NI-LEWIS: And Madison Park Beach.
I know that place.
One of my best friends lives two blocks from there.
Well, he was my best friend until I found out his wife was
working on the Kindle Fire project, and
now we don't talk.
RETO MEIER: That was it.
Well, what are you gonna do?
MALE SPEAKER: Tell your friend to add more?
RETO MEIER: So that's kind of our problem in terms of using
it is just that.
Obviously there's not a big community of Swim Places users
yet here in the Bay Area, because I'm pretty sure that
there is a beach closer than Pismo Beach.
IAN NI-LEWIS: Yeah, but you don't want
to swim around here.
It's awful.
RETO MEIER: That's actually true.
IAN NI-LEWIS: Not in the Bay, anyway.
RETO MEIER: It's so cold here.
There's the beautiful Pacific, and we've got the Bay, and you
would just die.
Then again, I'm talking to people in Prague, so I'm
guessing if you enjoy outdoor swimming, you don't have a
problem with getting cold.
IAN NI-LEWIS: No.
RETO MEIER: App looks nice.
I think overall, you've obviously got a
color scheme going.
You've got the blue.
It gets perhaps a little too blue here, in that you've got
dark blue at the top, then a lighter blue for your tabs,
and then a lighter blue for each list item, and then a
slightly darker blue for distances.
What it means is that your contrast is getting a little
washed out.
The app seems to almost fall on itself, where the bits of
white become almost too pronounced.
So this little white bar that says Places Around Me in the
tiny, tiny text seems more important than it is, because
it's one of the only pieces of UI that isn't blue.
So you want to be really careful about how those color
choices and that color template can affect the way
that people are looking at the app.
Overall, I feel like the list items feel a
little bit too narrow.
I'm not sure how high they are, but they feel like
they're a little bit less than 48 pixels.
I'm not quite as good as Roman when it comes to picking exact
pixel heights, but it feels a little narrow.
MALE SPEAKER: Possible.
Possible.
RETO MEIER: It's a really small thing, but it makes a
real difference in terms of how easy it is to click on
things and to navigate through the app.
So you want to make sure you're at least 48 dps in
height for anything that you want to touch.
IAN NI-LEWIS: Again, like on the last app, we really
encourage you to use a view pager so that you can swipe
between those tabs.
At this point, that pattern is so common that it feels wrong
when it's not there, to me, anyway.
And then the action bar, I think.
RETO MEIER: Yeah.
So it's an interesting choice.
So I'm guessing this is a split action bar
implementation?
I'm not entirely sure, but it feels like these buttons could
just as happily live at the top as part of the standard
action bar.
MALE SPEAKER: Well, basically, they're at the bottom, since
we couldn't really fit them next to the tabs there already
on the top.
And it changes when you flip it.
When you flip it 90 degrees, it changes and
it goes to the top.
RETO MEIER: OK.
And that makes sense.
So you are using the split action bar.
It's a legitimate pattern.
It can be, at times, a little bit disconcerting to have the
things along the bottom.
It is a standard pattern, so I can understand
why you've done that.
Again, you probably want to see if you can lose the
refresh button.
It doesn't seem like an app that's going to be refreshing
data so rapidly that a user is going to want to have to
manually do a refresh.
It makes sense an instant messaging or in email, where
you're waiting for an email, so you keep
pressing the button.
I think the update rate for this is going to be much
slower, so you're better off doing maybe a server push,
again, using Google Cloud Messaging.
When something gets updated, you send it out to all of the
phones to tell them, hey, there's some new locations.
You may even want to include the location of the newly
added spot in that Google Cloud Messaging payload, so
then the app only needs to do an update now if that
application is near where the user is.
So if it's 1,000 kilometers away, don't worry.
We'll do the update later.
If it's right next door, hey, maybe that's going to be
interesting to them.
IAN NI-LEWIS: Well, unless you're phenomenally wealthy.
[INTERPOSING VOICES]
IAN NI-LEWIS: So Sergei would use that, I think.
RETO MEIER: Sure, sure.
IAN NI-LEWIS: But other than that.
RETO MEIER: For the rest of us, not so much.
Your list views as well-- so you've got a lot of content in
each of these, and it seems like some of it may be
duplicated.
So I'm not entirely sure what the icons on the left mean.
I'm guessing it's the kind of place.
So the sea shell means the sea, the Loch Ness Monster
means a lake.
Is that the idea?
MALE SPEAKER: Yeah.
RETO MEIER: That's really nice.
I really like that.
I like the visualness of it.
Makes it much easier to see at a glance.
IAN NI-LEWIS: I like that it's both color coded and--
RETO MEIER: Yes, it's a picture and a
color, which is nice.
But it does mean you're duplicating data.
So I don't need to see the word sea
next to the sea shell.
Like, you should just train your users so they understand
that that's what that means.
And certainly when you click through to details, it's
useful then to say what it is, just so that they can learn
what those different icons mean.
But on this main screen, I want to see the name of the
beach be bigger, basically.
Make it easier to read, easier to see.
That's the main piece of information that you're trying
to pass on.
IAN NI-LEWIS: Same with the distance, I think.
RETO MEIER: Exactly.
IAN NI-LEWIS: Especially here, where we've got some beaches
that are relatively close, and then some that
are very far away.
It would be useful to have the distance
a little more scannable.
RETO MEIER: Absolutely.
One other thing that you may want to do-- so if I navigate
in, I have the ability to hit map or navigation.
Really nice touch.
I would consider adding the navigation action to this main
list view on the right hand side, because if I was using
the app, a lot of the time, that's what I'm going to do.
So if I'm driving upward down the Pacific coast, and I want
to watch the sun set at a beach, I'm going to take a
look at this, look for all of the pink things, and the
nearest one I find, I'm just going to hit navigate to find
out how to drive there.
So again, this depends on your use case.
So this is a really good example of why analytics can
be useful, to find out, well, what percentage of your users
are going through here and straight away clicking
navigation?
If that's a common use case, then that's something you want
to promote.
And similarly, try to decide--
and this is kind of good advice for most developers--
decide what do you want your users to do?
What are the main actions?
What counts as success?
So do you want them to go through and read as many of
these as possible, or add photos, or use it to navigate?
What are those primary actions?
And make that as simple as possible for them to achieve.
MALE SPEAKER: Great.
As of now, we mostly want them to add as much information as
possible, upload photos.
The navigation is just a candy.
RETO MEIER: Just nice to have?
I get that.
And so that's good advice.
So then what you may want to do is consider adding one of
those actions to this main screen so that you can say,
oh, I'm at that beach.
So you just open it up, you go oh, the one at the top is
where I'm at, and have the button there to add photos
directly from it.
Obviously, that introduces a UI challenge, and making it a
little bit more cluttered.
So you may only want to add that button for the item at
the very top of the list.
But it's something to consider.
You want to reduce the number of clicks between the user
opening your app and performing whatever action you
want them to perform.
So similarly, you've got the ad here, which
is for adding places.
Obviously, that's the main thing that you want them to
do, to build up that community.
So that may be another example of why it may make sense to
have that at the top.
Because when most people are opening the app, they're
expecting the main actions to be up here.
And so by not having it there, it makes it a little bit less
likely that they hit that plus button.
You may even want to go a step further, and if that really is
the most important thing for the app, is to have a big
button somewhere maybe above the list view, which
encourages them to do that first and foremost.
Now, I wouldn't always do that, but you can tell how
important that is.
So in Prague, you've got probably most of the important
swimming places there, strong community.
It's less important.
So definitely don't show it to people in Prague.
Here in California, most of the things here are missing.
And so I open this app and I go, well, this isn't actually
that useful to me, because there's nowhere nearby.
But if the first thing up at the top of the screen was
actually a button asking me to add places,
well, that I can do.
I know a bunch of places around here that I can add.
MALE SPEAKER: That's a great point.
Well, do add them.
RETO MEIER: I will.
I will set that as an action item for myself.
But that's my point is that you want to make it obvious to
the user, what do you want from me to do?
And then I can decide whether that's something that is
useful and interesting for me.
So maybe have a look.
If there's nowhere within 100 kilometers, make
that the main option.
Just say, please help grow our community.
People love that sort of thing.
So that may be something to consider.
MALE SPEAKER: Good point.
IAN NI-LEWIS: Now, for the ad screen, this might just be me,
but I really feel like you'd get a better user experience,
and possibly more additions if the first thing was a map.
Because you have this nice positional thing, but what I
really want to do is-- the first thing is I wanted to
point to it on a map, and then fill in information.
The problem with this screen is that the very first thing I
see is three or four text boxes and
the on screen keyboard.
And that immediately says to me, oh my god, I'm going to
have to do a lot of typing, and I'm not into right now.
I think I'll just go and do something else.
RETO MEIER: Yeah, that's a good point.
Because this is what you get straight away.
All you see is the text, and you're like, oh, I just wanted
to-- thing.
So what Ian's saying is a really good point.
If this was the very first thing-- so as soon as you
click in here, you see a map with an icon next to a quarry
or a lake that I'm in, it's like, OK, great.
So I click that, and then the next thing I get is it asks me
for a name and stuff.
And hopefully, as much of this is optional as possible, so
that you can just say, yeah, it's the Pacific Ocean.
IAN NI-LEWIS: Do we still have the Places API that
they can look up?
RETO MEIER: I think we do, yeah.
IAN NI-LEWIS: We used to be able to do that.
RETO MEIER: I think that there's still an API from
Google-- a Places API that allows you to search for
points of interest.
You may be able to use something like that to help
make suggestions for your users.
IAN NI-LEWIS: Help auto fill.
RETO MEIER: Yeah.
I don't think you're able to use the data itself, but you
can use it as a way to suggest places that people can then
fill in the data themselves.
But do check the API terms of service, because I don't want
to steer you in the wrong direction.
MALE SPEAKER: I'll look into it.
RETO MEIER: Otherwise, all this is really nice.
Are you sure you want to cancel?
Ah, so this is a really interesting dialog.
Do you really want to cancel?
All inserted data will be lost.
And if I hit cancel, it doesn't cancel.
IAN NI-LEWIS: Because it's cancelling a cancel.
RETO MEIER: Be careful with that.
MALE SPEAKER: All right, we got a bug right there.
RETO MEIER: Yeah.
So make sure that you're getting that right.
I always forget what the correct button order is here.
I think you've got it right, but make sure that you've got
the yes no in the right order.
It's all detailed in the style guide.
IAN NI-LEWIS: And maybe stay and leave would be better than
cancel and leave in this case, because--
RETO MEIER: Yeah.
You just want two objective things which it's clear which
button is going to make you go away, and which button is
going to make the go away button go away.
IAN NI-LEWIS: Also, I would suggest not showing that
dialog if the user hasn't actually entered in any
information.
RETO MEIER: That's a good point.
If there's no data to lose, then there's no reason not to
just let them back out.
IAN NI-LEWIS: And in point of fact, unless that becomes
non-editable later, the absolute best user experience
is, if I haven't entered any data, leave without prompting.
If I have entered data, save that data and leave without
prompting, and then allow me to delete the data that I've
entered if it turns out that I didn't actually want it.
And that covers the 90% use case with the least amount of
intrusive dialogs.
RETO MEIER: Otherwise, all of the details are reasonable.
The only issue here I have is you've got these custom
colored buttons along the bottom here.
In this example, I'm not sure that it does make sense.
They just feel a little garish.
The colors are really strong, particularly around defaults.
This makes me think defaults may do something really bad.
Big, bright red button, like, seriously red.
I think that's 25500 red.
IAN NI-LEWIS: I know.
It's like composing in Gmail.
That's dangerous.
RETO MEIER: That's a big deal.
If nothing else, it makes it seem like these are the two
most important things on the screen, and that show is going
to do something magical, whereas all it's really going
to do is apply my filters, right?
Which is perfectly appropriate, but I don't think
that it's necessary to have them differently colored.
Let's see.
So-- oops.
So this is one of the dangers of having all of your actions
right here at the bottom, is it's really easy to
accidentally click the wrong thing.
So I totally did that on purpose to
demonstrate that point.
Search.
It would be nice to have search as inline--
so an action bar search rather than
popping up its own screen.
Particularly, that way you can see what is already there
before we start searching and having auto complete in that
would be nice as well.
IAN NI-LEWIS: I actualy feel that way about filters, too.
I think it's a little harder to do, but especially when
your filter is just a list of check boxes, if you can pop it
over, like drop it down from the top, or put it in the
bottom so that you can see the results.
RETO MEIER: Absolutely.
And one thing that you may want to consider trying-- so
I'm not entirely sure how useful this would be, given
that we don't have so much local information, but it
might be interesting to apply filters by basically pivoting
on the information that you have.
And so if I click on the seashell icon, I hit the icon
specifically, maybe that just shows me all of the sea.
So it applies that filter that way, rather than having to go
through the second screen.
Again, I think that's something you probably want to
beta test with people to see if that means that they get
lost, and they don't know how to go back.
But something like that as a way of being able to click
here, get a list of all of the lakes, and if I hit back, it
takes me back to the main screen that's unfiltered.
I think that would be really interesting.
IAN NI-LEWIS: I would get lost on the list.
I might be OK with that on the second screen.
RETO MEIER: On the second screen ?
IAN NI-LEWIS: Yeah.
RETO MEIER: Yeah.
IAN NI-LEWIS: It's tough.
RETO MEIER: It's interesting.
Again, basically, what we're trying to come up with here
are ways to reduce the number of clicks to
implement any behavior.
So the problem here is if I hit filter, that's one, and
then I have to unclick a bunch of these so that I can just
get the one that I want.
Or I can do one, two, three--
so it's taken me four buttons to get there, and it doesn't
actually look like it's applied my
filter, which is upsetting.
IAN NI-LEWIS: Also, I'm wondering why I have a long
list of filters with text when I thought you were training me
to use these really pretty icons.
And if it had been with the icon, then you might even be
able to group them a little closer together.
My main issue with the text is that you've got a bunch of
check boxes, and you have to scroll up and down to actually
use the filter.
You don't want to pack things tightly and make them
impossible to use, but let's say that, for instance, if you
had just the buttons that you could turn on and off, and you
were highlighting them in some way to make
them active and inactive--
Reto, you need a new microphone?
RETO MEIER: I'm struggling today.
IAN NI-LEWIS: Is he blowing out your ears every
time he does that?
Boom.
Aah!
RETO MEIER: Apologies.
I need to figure out something.
IAN NI-LEWIS: But again, just minimizing the amount of
scrolling would be really great.
But yeah.
I could literally see just a big box at the bottom of your
results list with all those icons in it, and I could just
turn them on and off and see the results immediately.
That would be awesome.
That would be magical, I think.
Would that be magical?
RETO MEIER: I think it could be magical.
IAN NI-LEWIS: OK.
He knows what magic is, don't you?
RETO MEIER: Yeah.
So otherwise, really nice.
I really like the community aspect.
I like the general UI.
I like the functionality.
Huge potential.
I think there's a few little things which could make a big
difference.
So we're going to, again, put some of these nitpicky stuff
in an email, send it through so that you have all of our
feedback in one place.
We'd love to see how you get on.
And I'll add some local swimming spots, I promise.
IAN NI-LEWIS: Yeah, it's really cool.
Just last thing, because we say this about any app that
has community is, you might want to think about hooking
into more communities--
so having some more information about your users.
Maybe hook into Google+.
You might think about it.
RETO MEIER: You could consider a Google+ login so you could
share the swimming places with your friends.
IAN NI-LEWIS: With your circles or whatever.
RETO MEIER: Be kind of cool.
All right, nice.
Thank you.
MALE SPEAKER: All right, well, thank you very much.
IAN NI-LEWIS: Thank you.
MALE SPEAKER: OK, thanks a lot.
So I would like to thank both of you for participating in
this, and organizing this with us.
We are proud to be first GDG in the
world to host App Clinic.
RETO MEIER: Woot.
Thank you very much for having us.
It's been really rewarding, really interesting, and great
to see that Prague developers continue to be some of the
most talented app developers in the world.
IAN NI-LEWIS: Yes.
Thank you for giving us apps that we didn't hate.
You don't know how hard our job is sometimes.
Today, it was easy.
Thank you.