Citymapper is what happens when you understand user experience
medium.com
medium.com
So, for example, if your train takes 10 minutes to reach your destination, leaves your local station every 30 minutes and you've just missed one, CityMapper will show an estimated journey time as 25 minutes (avg wait 15 minutes + 10 min journey), instead of the actual 39.
On multi-train journeys like many Londoners have, that error compounds quickly, and it can make choosing the fastest route near-impossible. And I don't know why they do it, because they have all the timetable data (including live timetables).
Essentially they need to start including knowledge not just about how frequent transport is supposed to be, but the typical number you'll have to miss before you can get on. For the 29 in Camden this number is around 5.
But, as Citymapper becomes more ubiquitous within each city, this becomes a solvable problem. They can use the real-time usage of Citymapper to model congestion, and offer better route suggestions. I'm quite happy to use a journey that's 15 minutes longer if it means I'm warm, rather than standing in the cold for 30 waiting for the 'faster' option.
A huge furnace powering a black box labelled
"Citymapper Development." There's a ramp up to an
opening in the front of the furnace. There are two
grunts with full-body jumpsuits that say "Citymapper
Employee" on them. They are heaving humans into the
furnace.
I'm sure you are a great team, but that was the silly mental image "we need more humans" gave me. ;-) I don't know why they do it
If you represent every edge on the transport graph with a single fixed traversal cost, you can calculate the lowest cost route between two nodes with well known algorithms like (simple) Dijkstra's algorithm or (high performance) Contraction Hierarchies.When the cost of a route varies with time of day, and the best route changes with time of day, things get quite a bit more complicated.
If you want to do computations in advance, as you need to for fast algorithms like Contraction Hierarchies, you have a cost-vs-time profile for each edge. Things can get complicated quickly.
(I work on Citymapper's routing.)
Head out the office, pick a spot to get to (say a meeting in another part of town) and see if you can figure out which route is actually quickest. It's seldom the one suggested. Trying to figure out the real trip length for upcoming departures for a number of travel options is a head-wrecker.
I use CityMapper frequently, and I love it. But this 'feature' is infuriating!
On this question, there's a balance between possible maximum speed, and reliability. If I want to go to point B, the quickest possible route will often be made by stringing together a serious of improbable connections. For instance, the route could rely on taking three infrequent buses, with little leeway for transfer between one and another, on the assumption that they won't be slowed down by traffic (or just slow customers, stopping more than normal, etc). But if an app sends me along this route, and one of the buses is behind schedule, and I miss the connection, that then becomes a big problem. So there definitely is good sense in prioritizing frequent bus routes to some degree.
I guess the problem with doing this automatically for queries for journeys starting 'now', is that people will often just look up general journey times with the default options (eg the current time).
Even when I know the route, I still (always) check it on my phone the very moment I leave the house, because I expect to get up-to-date information. If I can go to two different bus stops, I don't want to get an average! I just expect you to tell me which bus is coming first — right now.
The only situation when I'm checking a route ahead of time is when I need to know when to leave the house. For this I use Google Maps' "Arrive by" option, so even when I don't take the route immediately, I still expect to see exact times.
You realise that there is some lag in the system, right?
A small lag in data collection and transmission, a small lag in publishing the data via the feed (this is stated as 30s) and TfL cache the data points for 30s. Then you have the ingestion and processing lag that Citymapper introduce before they get it to you and display it on your screen.
You can estimate a lag of greater than 1 minute, pushing 2 minutes if you were unlucky that another CityMapper user nearby potentially requested the same data just before you and you're now seeing TfL's cache.
If you have a bus frequency of 7 minutes we're actually talking a lag of around 28% of the worst case wait time for that bus.
This experience would vary so greatly in different parts of the city (density of CityMapper users), that it would corrode your trust of the info.
Until that lag can be almost eliminated I think they're doing the right thing by choosing values based on average frequency and average wait time. The consistency means that almost everyone is treated to a similar experience, and though it is not highly accurate it is highly consistent. People can, and do, trust a highly consistent experience.
And yes, I live in London and use CityMapper a lot, and I've also played with those TfL feeds and experienced the real world lag in the data for bus/train arrivals, and bike hire data. Those data streams, when you walk out onto the street... they are only an approximation of what you really see outside.
You can cache times as ETA, and even in the worst case when an unexpected change in the schedule needs 2 minutes to propagate, it's still an improvement for all wait times longer than 4 minutes (i.e. all wait times that matter).
I live, literally, next to the Langdon Park DLR station. Any time I use CM to get directions to the center, it will either send me to the Jubilee line, or to the Central line, which is fine. But, it always sends me to Stratford first, which is in zone 3. Why? I know, it's faster (and cheaper) to either go to Canarry Wharf, and to a 2 minute walk from the DLR station to the tube for the Jubilee line. Or go to Bow Church DLR and walk to Bow Road tube, and then transfer at mile end to central line.
Basically it seems, CM tries to avoid walking as much as possible, even if that means taking a longer&more expensive journey. Can you guys do something about that? If nothing else, an option that let's me specify that I don't mind a bit of walking.
The thing that's so infuriating is that Tube Deluxe gets this perfectly correct. So I need to keep two apps.
Here's how I use Google Maps:
As I am putting on my shoes to go out the door, I look at the event I'm going to in Google Calendar. I click through to the location in Maps, and click directions on the pop-up bubble.
I walk out the door. Five seconds later I'm at the road, and need to know whether to turn left (to the station on the line to Victoria) or right (to the one on the line to London Bridge / Canada Water). I need to know my actual arrival time (barring unexpected problems) for each route, departing NOW.
If I'm doing advance research (when do I need to leave?) I almost always do so using Google Maps on my laptop, not an app on my phone.
If I don't use Google Maps, it's only because I'm using JourneyPlanner.org / PubTran, to deal with those annoying occasions that Google Maps doesn't know about engineering works (e.g., this week: no trains to London Bridge!)
http://journeyplanner.tfl.gov.uk
It gives you a selection of routes to choose from, with times.
That's pretty much my only complaint about an otherwise perfect app though, but you're right that those little errors can add up to be quite inconvenient over a long or rushed journey.
- day bus service ends and night buses begin
- your phone signal dies
Does it do it at other times too?
However, Google Maps, given the same destination, provides several routes (and allows for explicit choice by the user for their own weighting) where 99% of the time the quickest route is the one that I had thought of beforehand. And this is when selecting Train + Underground in order to compare directly to the equivalent set of results in CM. A shame.
(Founder of Citymapper)
https://d262ilb51hltx0.cloudfront.net/max/800/1*rjIGH2VNUxDe...
And this one is 32MB:
https://d262ilb51hltx0.cloudfront.net/max/800/1*a7_PF64-SfAd...
Total size of gifs in this page: 149MB.
Is Gfycat embedable? We should encourage its adoption.
Another thing i found those gif aren't being cached, as i refresh I am sure AWS will be happy with this business.
However, I bet all the lost traffic due to people leaving the page was probably worse than having to pay $900.
It's so annoying that a single tab can crash the whole browser, and it's also a security risk on Windows. The common "sandbox" model there is to spawn child processes with very limited user rights (like IE 8+, Chrome, Safari+Webkit2).
Given the number of tabs I have constantly open, I know that Chrome cannot handle it (I guess IE is the same here) and a multiprocess firefox won't either.
Firefox on the other hand, chokes much earlier than Chrome.
What I know is that I have more than 300 tabs in Firefox currently, both on my home machine and my work machine, and I don't have any problems with it.
Edit: And I would add that my task manager is also not polluted with hundreds of chrome processes.
That aside, what could possibly require opening 300 tabs? That must be an absolute productivity killer... Why not use a bookmark manager or "read later" service or something?
Sure, they should get pruned to bookmarks, but you can't argue if a person's method of staying in the "zone" works for them, I suppose.
That said, embedded videos will limit your browser compatibility unless there is a fallback. On the other hand, older browsers are also likely to have problems with 150MB webpages heavy on javascript.
... but you couldn't embed that on Medium, anyway.
Doesn't seem like a win for anyone.
But I didn't know that.
I started trying to read the article. All I saw were static images that didn't show the author's point at all, until some of them finished loading and started to flash and cause re-layouts.
Now the page is incredibly hard to read because all the images are on auto repeat.
This is a UI disaster, especially for a post about good UI. h264 works and would have shrunken the page dramatically. It gives me controls that let me play, stop, or rewind video. It can play partially loaded videos (which is hit and miss with GIFs depending on browsers).
At the very minimum you could use JS to stop the GIFs from playing when the user isn't mousing over (something I've noticed at Polygon). It keeps them from being insanely distracting.
It's a small text article with animated screenshots. It doesn't load well, it doesn't scroll well, it isn't easy to read. The only reason I stuck on the page was to see just how much time it took to fully load. If it wasn't for the fact I had decided to come here and point out how unusable it is I would have bounced off the page and never come back.
Here's the thing: animated GIF are not the solution. To almost anything. They're designed for small animations, not long high resolution screen captures or real video. If it's over ~150kb or so you should probably start rethinking your format choice. If it's 3 MB, you made a mistake. If it's in double digits like some of the versions before they were updated you've made a HUGE mistake.
Some people only get 200mb a month of data on their cell plans. This one page would use up 75% of that. For animated screenshots.
CityMapper is for multi-transportation within a few metropolis.
The UX of Google maps for routing when driving is incredible and beats everyone: Apple, TomTom, Garmin... everyone. Down to showing labels on side streets "3 minutes slower" allowing you to evaluate every decision you could make when faced with traffic.
But... for public transport, or mixed transport solutions like crossing a city when so many external factors are at play... CityMapper wins.
It's not an either/or, and it's not that Google Maps don't understand UX. Google Maps just has a different focus... the car.
The other annoying thing is it uses street names as in "turn right on to Main Street" but often the streets don't have name boards and there could be two close together.
Still, first world problems eh?
Edit: as someone else mentioned, the app does support it.
Very rudimentary lane/intercharge information, no waypoints, no POIs along the route.
The quality of the lane/interchange information is kind of subjective, so I will give you that, but Google Maps fully support waypoints, and POIs are available from roughly a billion overlays available. On mobile, I'd argue the Google Now based POI feedback from Field Guide presents a much nicer UX than anything Garmin offers.
Can I add a waypoint by clicking anywhere on the map? My car had these features 9 years ago.
Also look at the "lanes support" on the same screenshot. Compare it to [2]
[1] http://www.techfaster.com/wp-content/uploads/2014/05/Maps.pn... [2] http://www.sportys.com/morepics/14164m.jpg
That's kind of an arbitrary division, right? Doing POI through Google Now actually makes for a much better user experience than anything I've ever seen with a GPS. It's pretty great really.
> Can I add a waypoint by clicking anywhere on the map?
Yes.
Oh wait, you meant on _Mobile_ Google Maps! But that is a different product. Let's stay focused on Navigation within Google Maps. ;-)
Not sure what other maps one can use while driving...
I can't get too mad at it, since I can just zoom out and it'll search from the center of the map - but it's not very effective if the distances are long or if I'm using the text interface.
You know, you're going to have to actually elaborate on that.
Cynically, if the app supported SF no one on HN would care about the rest of the world ;)
"Our map works best in these cities and the experience isn't the same outside of them" is answered by "1 star, sucks, needs bus data in Ohio".
Mobile apps nowadays need a lot of good will to drive usage, so if any part of the experience is even slightly substandard your users will rake you over the coals.
So, completely reject any user for whom the experience isn't great - it's the rational move. Sadly, supporting your edge cases is harmful to your own health.
If you start looking at all of the UK, there are different APIs for trains and buses, and then various local services which have no API at all, so you'd have to manually input timetables.
Google probably have transit authorities begging them to include data on their transport into Maps, but for an independent app it's not that easy, and takes a lot of work.
I was wondering... could it be possible to not rely on any API, and deduct bus routes and timetables from crowdsourcing the locations of travelers? You'd need to sample the location quite often, but I think it should be possible to detect when someone is walking, and when someone is riding a bus. If a lot of people come from different locations, wait in the same spot, and they all start moving simultaneously much faster than walking, they are probably in a bus. It could also map out all the stops, although it might take some time for stops where people rarely get on or off. Should work for above-ground transportation, but perhaps metros block the GPS signal.
The app supports 400 cities and adding a new one every other day. Our focus has been 1) crowd sourcing transit data 2) making real time arrivals available to users wherever a feed exists.
(I lead product at Moovit)
Still, I'm glad to see Google Maps competitors alive and kicking. Google Maps is one of the main lock-in apps that keeps people inside the closed Google Play Services ecosystem.
I can't speak for others. But as someone that tried the Apple "ecosystem" after being on google, I have a big appreciation for it. A lot of websites/apps these days use google for single sign-on, pretty much meaning that I don't have to type my damn login every time I install a new app, etc.
But, on the Ipad, I had to type my password in so many times. And my password is 25+ characters long, with mixed upper and lower case. Easy on a keyboard, but on a touch-screen keyboard it is a PAIN.
And do you really need a 25+ char password for every blog you comment on?
This really validates OSM's approach. Every single time there's a thread about OSM on HN or Reddit or whatever, someone pops up and says "Google rocks, OSM sucks, because your maps are dog-ugly and there's no routing/clickable Starbucks/whatever".
Explaining to them that "no, OSM is just a dataset, osm.org is merely a minimal browser for map contributors" is hard. But having apps like CityMapper, which are actually _better_ than Google, really makes the point.
Personally I'd choose a certain other OSM-based router over CityMapper/Cyclestreets for bike routing, but I may, ahem, be biased.
Here's public transport things that are in the OSM database: http://www.öpnvkarte.de/
When I use Google Maps all I really want is for it to take me from point A to point B in my car.
I type the name of a place and It loads directions, time, traffic, and guides me there using the best route possible. One click. Quite literally the best UX I could imagine.
For most of Google Maps users (the ones who don't live in those 8 cities), Google Maps is almost perfect. It's not that Google Maps doesn't have a good UX, it just wasn't built for you.
1. Get me Home/Get Me To Work quick links. It takes your current location as starting point and tells you your options for going home/work.
2. You can configure it to monitor your subway line during commute time (7AM to 10AM and 4pm to 6pm) and it will notify you if the subway is delayed for any reason. I use line 6 which breaks down more often than I want and thanks to the App, I can take N/Q/R if Line 6 is down.
3. The way 'Get Me Somewhere' works. In addition to being able to type an address, you can move the map around to point the destination pin to a particular point in map. It's hard for me to explain but it works amazingly well especially in NYC where people often go by cross streets and don't have the actual street address.
I completely agree with author that Citiymapper has an exceptional UI/UX.
None of these requires additional configuration, it just does it all automagically.
Couple of points that might be helpful if the writer reads this:
- you can switch off the shake-to-send feedback (it even prompts you to do so if you dismiss it a few times without leaving feedback).
- I'm not sure how the Citymapper UI in scenario 2 (getting directions from a->b) differs from using the directions search screen in googlemaps (reached via the little button with arrows next to the profile button). It presents the directions search screen immediately and would cut down the time in that scenario drastically. (But I guess if the person writing the article doesn't know about that button that's rather a UI smell. I wonder how many people don't know that our things that don't look like buttons are buttons?)
- Scenario 5 is also fixed by using the directions non-button, your previous searches show up in the zero type suggestions there.
I am however going to try and convince the powers that be that Citibike integration is a must, so I can have a holiday to new york.
A simple implementation would simply walk between the endpoints of the route and the closest bike stations. A better integration would also consider more complicated multimodal routes (walk, bike, metro, bike, walk) and historical usage patterns to predict empty/full stations.
If it helps convince the PTB that public bike system integration is a must, I use it as my sole means of transportation during the summer months, relying exclusively on bike navigation (it's great!), then awkwardly fumbling with another app to find a bike station near my destination.
[1] https://montreal.bixi.com/data/bikeStations.xml [2] http://appservices.citibikenyc.com/data2/stations.php
"It takes 22 minutes to get to X, here are your directions."
I guess that's an unfair comparison. Fair enough about actually using the app though.
But I live in Austin, TX. No one is taking a bus or train or bike anywhere. Especially not in a hurry. Virtually everyone drives everywhere; with Google maps on Android I can often do that in a single voice command and zero clicks.
If you get the opportunity to attend a talk by Azmat or any of the team, take it. They are an exceptionally clever and humble bunch and I'm thoroughly enjoying being a witness to their growth and success.
Even better would be "Where do trains/buses go from where I am?"
It would be very useful to see all route lines radiating out from my location, with next times and freq.
This would help understand the multiple ways to get to another location.
One route might get me directly to location, but leave in 15 min.
Another route me get me 2 blocks from location, but leave in 2 min.
- Reloading the app, it never remembers I was on the biking screen, and always goes to the main screen. Minor detail, but annoying, and so easy for them to fix!
- Every time I move the map even slightly, it removes all bike stations from the map and queries the API again for a new set of stations, even if the last request was only five seconds ago. If there's any wireless interference, it complete destroys the functionality. I mean, cache the station locations at the very least! And don't hide the old data while waiting for the new data, if it's less than a couple minutes old.
- The screen real estate devoted to the map is only ~50%! The bottom third is taken up by a totally unnecessary textual list of stations, which can't be hidden
- And you can't even rotate the map!
Granted, it's a million times better than the default Citibike app. But it's still got a ways to go to achieve "ideal" UX.
"...Hello OpenStreetMap"
(sorry about the pain and suffering if you do decide to build out melbourne and look at PTVs API docs)
A signal failure happened earlier this week on my line and I received no notification of it, only finding out when I got to the station.
It's probably an issues to do with Androids background notification system or something, but I dunno
1. Google --> unlikely, they have a large maps team already, and have recently gorged on Waze
2. Apple --> most likely, IMO
3. Facebook --> who knows why? But probably in the running too.
Google's existing offerings fail most spectacularly for knowledgeable people in urban environments (I cannot overstate how much GM's handling of subways drives me insane), which is the niche this lot have successfully found. Apple seem to have a lot of customers in that bracket so they are the better fit.
Citymapper takes a very different approach to UX to Google Maps so I can't see them going together well. Perhaps it could be used to improve Apple Maps, but again I think it would clash with Apple's usual way of designing apps in house.
How it worked: sent a link to the end location to a friend.
Expected / Hoped for usage: Citymapper would separate who clicked the link (allow you to add a name perhaps), then show where everyone else was on the map, and their ETA.
So I can say, let's meet at this place, send the link, and know everyone's ETA. A bit like latitude, but smarter. Once there, or on my way, I can track progress.
Sure, people might shout about privacy, but it would be insanely useful and save constantly being punished for being on time!
Any Citymapper devs out there fancy championing this one?
I'm still not totally sold on their routing algorithm in London, but I'm not sure exactly what's wrong with it - all I know is it often suggests routes that no same person would take. It definitely seemed to get a little worse maybe 6 months or so ago; it's possible it's just been tuned in a way that doesn't get on with my usage pattern.
One of the devs posted in this thread that they favour routes with more frequent services, as people often don't want to travel immediately. I'm not entirely sure I agree with this thinking in a mobile app, but it could explain some of the less optimal routes.
One of the reasons Im guessing it doesnt have this is because the Google Maps API prohibits building turn-by-turn applications quite directly. If only they trusted OSM, they could have this up and running pretty quickly.
Now, Google Now automatically shows directions to these places together with expected travel time on preferred mode of transport without any configuration at all. 10 seconds? How about 0 seconds?