How to find your Uber passenger rating
medium.com
medium.com
I also made a web scraper to get my uber trip details (incl. route driven), save it to JSON and map the trips all at once. http://i.imgur.com/Q1W59rD.jpg. Here's a quick dump of the code https://github.com/joshhunt/uber. It's pretty rough and it makes a lot of assumptions (e.g. metric system and AUD). I never really plan on looking at it again, so your milage may vary.
I also found their API structure to be quite unusual: They make a call to something like `api.uber.com/` with POST data of something like
{
url: '/api/user/123123123',
method: 'get',
location: [lat, long]
}
and you'll recieve a response back of something like {
responseData: {
username: 'madeofpalk'
...rest of requested data...
},
vehicles: [
...list of all vehicles and their locations...
]
...other data that wasnt explicitly requested but comes through with every request...
}
I had never seen this pattern before, and thought it was quite unusual (especially for a 'new hip startup' that uses Python and Node.js). Anyone care to comment on why they may have choosen something like this?You have two classes of services:
1. Technical Services
2. Business Services
The technical services may be REST, SOAP, etc. These deal with the nuts and bolts of: update this one thing, fetch a load of these things (where they are the same thing).
The business services are usually some flavour of RPC JSON or XML, and only occasionally are REST (think of a resource that is actually a composite of other resources, it's usually a business service).
The business service wraps the underlying technical service with the orchestration of which granular services to call, and returns something useful to the user (the client, in this case an app which is also made by the company).
What you quoted was the result of a business service, but you can imagine that behind that are services that individually fetch vehicles, user info, etc. The business service is just wrapping it and doing a useful thing for the user by returning the composite.
It should be noted, there's an idea of a "service catalog". Some people think this is wholly comprised of the business services, but actually it's the superset of both business and technical services. You might have 2 catalogs, one external and one internal... but both are made up of a mix of business and technical services. The goal is simple: Help users to get shit done. In the scenario given, "get shit done" means "perform multiple calls, and because it's mobile and calls are expensive return everything in one call".
Some of this is remainders from when they just had consultants working on this. Look at hash_password() at client.py :)
That's so... what? Is the API not https? If they wanted to avoid even knowing the password, then why not use something standard like SRP (https://en.wikipedia.org/wiki/Secure_Remote_Password_protoco...)?
That animated GIF with the CLI session is very cool, by the way.
Addendum: This is awful! (Uber's hashing, not the github code in question)
(Well, it's not really relevant but you reminded me of it ^_^)
They don't have to modify any of their restful APIs to fetch or serialize more data than intended. Instead, the / endpoint might act as a wrapper, which does three things:
1. gets the entire app state
2. makes an internal API call of its own (proxies the one from the request)
3. merges the two results and returns them
in this case it is pretty clear they sped up requests by returning some generic data every request needed to update the app all at once as well. that's a pretty common requirement. netflix even allows client code to upload server code to pack responses into the least number
What I thought was strange is that we're not in the 'old SOAP days' any more.
I get what they wanted to do - speed things up by including common data in every request, and avoid state in apps. What I found strange was the way they solved it, esp. given they're (apparently) using Python and Node.js - writing a middleware to insert the common data would be far easier than implementing their own routing layer or whatever they've done.
Of course I'm making a lot of assumptions about what kind of stack exactly they're using (assuming they're using a web framework that we've heard of)
edit: This tweet said exactly what I was thinking when I saw all of this. https://twitter.com/s_m_i/status/493609377958723584
"Also this uber thing shows folks will copy and paste commands they don’t understand without a second thought if the incentives are right"
>window.Uber.pingData.client.paymentProfiles
[
Object
cardExpiration: "2014-03-01T00:00:00+00:00"
cardExpirationEpoch: 1393632000000
cardNumber: "[last 4]"
cardType: "MasterCard"
id: [payment id]
useCase: "personal"
uuid: "[uuid of payment option from their system]"
__proto__: Object
,
Object
accountName: "[acct number]"
billingCountryIso2: "US"
billingZip: "[billing zip]"
cardExpiration: "2017-09-01T00:00:00+00:00"
cardExpirationEpoch: 1504224000000
cardNumber: "[last 4]"
cardType: "Visa"
id: [payment id]
tokenType: "braintree"
useCase: "personal"
uuid: "[uuid of payment option from their system]"
__proto__: Object
]I think we should also disable voice calls. Some people are deaf.
I don't think anyone's literally living in greyscale.
Red/Green confusion is quite common though, there are estimates of up to 8% of ("western") males. Definitely a number to consider if you want your whatever to cater as many people on the market as possible.
As one of those very rare individuals you allude to (see everything in greyscale), you should be aware that my eyesight (and many people with a similar condition to me) is "limited" but not to the point where i can't cross the street or need to use a screen reader.
Having said that, even for me knowing the colour would be useful even if I can't exactly distinguish it (e.g. I'm waiting for a white station wagon, its definitely not that black hatchback that slowed down in front of me)
Currently you can't tell the colour from the mobile app but it's a good idea. I've passed it along to the mobile team to see if it's feasible.
(Disclosure: I work for Zipcar)
They should definitely not be showing an image with the wrong color, but having the information is better than nothing.
I also had a fun "gypsy black car running uber app trying to extort me" experience in NYC last trip, and a bunch of black cars who took 15-20 minutes to arrive (despite initially saying "3 minutes" and showing as around the corner). In a few cases I had the driver call me and give me useless directions to where he was, so I cancelled the trip and booked another Uber, and got someone dramatically better.
I apparently have a 4.6 rating.
Given that Uber apparently drops drivers that get below a 4.5 or something, I wouldn't expect much trouble from them...
The black cars in NYC with an iPhone on the dashboard running the Uber app aren't necessarily getting 100% of their fairs via Uber. If they see you as a potential client, they'll still try to pick you up off-network.
If you already hailed an Uber, an unscrupulous driver may potentially tell you "Yeah, I'm from Uber". Although I'm not sure how they'd convince you to pay cash.
The driver was confused about "Hotel Pennsylvania", which was funny since it is a huge hotel, but he said there was a smaller Penn Hotel or something nearby which he thought we'd meant.
We got closer to the location, but still maybe halfway, and Marc got a call from the real Uber driver asking where the fuck he was. He pointed out we'd gotten into the Uber already, and it was clear it was the wrong Uber; we assumed it was just someone else's Uber by mistake. That's happened a few times before in high-volume locations, including one where the 2 cars were from the same livery company in SF and had off-by-one license plates (ours got stolen by someone else); Uber deals with this pretty gracefully for all concerned.
We pointed this out to the driver. Told him to start the meter now, as a new ride (which we'd request); this would be approximately the correct fare, and I was going to give the guy $5-10 extra in cash to be nice. (The whole trip was approximately minimum-uber-black fare distance anyway.)
He acted like he was trying, and failed; we then got to the location, and he demanded cash. We pushed back (the whole reason for using uber is not to deal with cash, and expense reimbursement), but said if he'd give us a receipt, that would be fine. He refused. This went on a little.
I got out of the car to go inside at this point, assuming Marc would deal with it; I was mostly trying to make sure we got our speaker badges before the desk closed. I wish I'd stayed to film the resulting interaction, in retrospect.
After this, the guy actually locked the doors, got out, and then went to my friend's door. He threatened to cut him. (I'm not sure on the details; this is secondhand.) He unlocked it, my friend got out. He's a ~350+ pound ex-bouncer from Manchester, and head of security for Defcon. The driver is a ~120 pound south asian gentleman. Words were exchanged very briefly; the driver gave up and left, unpaid.
I tweeted to @ubernyc, then per their request mailed support, and they replied, but proceeded to do fuck all, as far as I can tell.
We failed as security professionals for not getting dox on the car or driver, but we were pretty distracted. I would have been really upset had this happened to someone who could have felt physically threatened by the driver.
Uber needs some superior authentication system for drivers; btle or wifi or flashing indicators on the phones themselves would be nice. Ultrasonic tones on microphone/speaker might work.
I'm used to fearing kidnapping and extortion by drivers (Middle East, Thailand, etc.), but not so much in NYC.
Or just better education on the lo-fi authentication you're supposed to use: have the driver ask for your name. 'Are you rdl?'
I am not sure the word gentleman means what you think it means ;)
If they see you as a potential client, they'll still try to pick you up off-network.
That is just the beginning. Long term this will become a lot more popular both for drivers as well as for customers as they can both get more money.As time goes on, it would be hard trying to find the right drivers though, and having to pay cash. If only there was a service that married you with drivers through a smartphone app...
Anyway, looks like you can go and pull the token out of the page and just do
curl https://m.uber.com/cn --data '{"messageType":"PingClient","token":"xxxxx","app":"client"}' | jq .client.ratin
to check it programmatically. Could be interesting to have a service detect somehow that you'd just finished a ride and show you the new score (and possibly the change, etc)
Joking above but the whole concept of dual rating scares me a bit .......
This would be really cool.
Tyler Cowen extensively discusses the potential future of symmetrical ratings in Average is Over. The book is too complex to summarize here but it is worth reading.
I've used Uber only once - to help my mom to a doctor's appointment after she broke her hip.
I guess we were slow and a bit of a burden . . .
* Compliment their car or music
* Ask them about themselves (how are you doing, where are you from, how long have you been driving)
* Make small talk (how about this crazy weather/traffic/drunk people, do you have any weird stories, have you ever been to place xyz)
* Tell them a little about yourself or where you just came from/are going to
* Have the address of your destination or tell the driver how to get there
* Leave a tip for efficient service
* Don't throw up in the back seat * Leave a tip for efficient service
I always thought part of the point of Uber was not having to deal with cash and tips. I've never left a tip for my driver, and never really had an opportunity to as it's all paid for by your credit card on file.However, I do most of the rest (never really thought of complementing anyone's car, they pretty much all run together to me), and have a 4.9. I never even thought about making smalltalk as a way to get your driver to rate you better; it's just a nice thing to do when you're getting a ride from someone.
One of the interesting things I've noticed about Uber is how diverse the drivers are. I've gotten (at least) Russian, Kurdish, Moroccan, and Nigerian drivers, so that's led to some interesting conversations about where they're from and what it's like. From the conversations, Morocco sounds like the best place to go visit; the guy from Morocco waxes the most poetic about his homeland.
Maybe for guys, sure. You can find many stories like this one: http://www.neverendingfootsteps.com/2013/12/02/travelling-mo...
What you don't like about Lyft, is what I love about them. Their drivers seem to consider me a human being rather than a fare. So I always take Lyft as a default and fall back to Uber if they're not available, and taxis as a last resort.
Personally, I enjoy talking with my drivers most of the time. If I want a quiet, professional ride in the back of a lincoln towncar, I opt for Uber Black.
If they decide to start being ridiculous, I'll decide to start taking cabs again -- at least the cabbies generally have a clue about how to get to places, and don't bother with questions about "what route would you like me to take you on". The fastest route, thanks.
Not really worth being annoyed about.
That's why I don't like the preferred route question. Do I want to pay more for a longer trip? No.
The deal is, some passengers are convinced they know the best route from point A to point B, and will accuse drivers of trying to con them if they don't take that route. So if the passenger has a route they want to take, even if the route is stupid, you just shut up and do that. Otherwise, you take the best route.
In theory, of course. I have no doubt that there exist cab drivers and Uber drivers who run up the meter. Hopefully, Uber does some monitoring of routes and catches at least egregious cases.
Basically, if your Uber driver starts using a traditional GPS instead of Google Maps, get worried. That's my experience using Uber in LA for longish trips out to Marina del Rey, anyway.
(Going the other way: "The LA convention center? Where's that?" "Right next to the Staples Center." "Do you know what streets?". I did, but really? I'm from New York and don't have a driver's license, and _I_ know how to get there...)
It seems like a flaw in the Uber app that the customer can't just provide an intersection or an address, and the driver gets immediate turn-by-turn navigation. Yes, Uber still needs to blind the driver to destination until pickup, but it's not a huge obstacle.
The other thing is that users just HATE typing in addresses on smartphones. It's like the worst-case scenario for smartphone data entry -- lots of different fields, and words that are not in the dictionary/don't autocorrect well. So Uber (and Lyft, and (ahem) Flywheel (which I work for)) do not require that a user input a destination.
I'll decide to start taking cabs again
If there are any cabs left...They'll use lat/long to determine if the user is in China or not and then pull up google maps or baidu.
Beautify this (https://d1a3f4spazzrp4.cloudfront.net/web-mobile-client/js/m...) then check out line 13185 for loadMap (Map loading resources on # 13094)
They also create a gorgeous map "blur" effect when the user is ready to pull the trigger on a ride: http://snag.gy/rlBYX.jpg
`curl -H "Authorization: fbAccessToken <fb access token>" https://api.lyft.com/users/<lyft user id>` provides some basic profile, credit card, location and referral information but nothing about ratings. The lyft user ID can be obtained by logging in at www.lyft.com/login and viewing the source.
Just ask.
window.Uber.pingData.client.firstName, lastName, email all work, but rating is now "undefined".
That's where I was able to find it.
* Complimented the driver on his/her looks
* Brought cookies
* Always punctual
* Provided shoulder to cry on when requiredThe idea that you have to put in effort to be the perfect customer of a service you are paying for is ridiculous.
Anyone have some insight into why this data is there in the first place? Is this an accidental leak, some sort of optimization or something else?
It's an optimization for their developers. They probably don't want to write a bunch of "if user.driver?"'s in their API responses, so just return all the data all the time and let their clients decide what to show.
Probably careless API design.
I suspect most drivers, like most passengers, give a 5.0 to almost everyone, but dock points for being a dick. It just seems there's no other way to differentiate passengers, since they'll be paying the fee regardless.
This is not very scientific. I got 4.8 which means absolutely nothing to me.
I've heard of people in my city having trouble and getting a driver to accept, most probably due to him having a low rating (whereas I never have trouble finding a driver)
Your request for service includes several non-price elements to it, one of which is your perceived likelihood to be a hassle (and reflected in your star rating), one is the amount of unpaid travel required to get to you, and one is what the driver perceives as likely to be your destination. All else being equal, drivers would prefer to end up in portions of the city with a high density of quality fares (say, an airport, the startup district(s) in SF, etc) as opposed to portions of the city with a low density of quality fares (say, the outer edge of the service area).
If drivers make a habit out of taking "bad" trips, their Uber business gets meaningfully less lucrative. Accordingly, expect them to actively avoid "bad" trips. If one's travel patterns routinely result in drivers perceiving you to require "bad" trips, one is going to have a far different experience with Uber relative to a high-frequency no-hassle business traveler.
If I knew why somebody rated me below 5 that would be a different story.
You don't tip with Uber - 'gratuity' is already included. Regardless, the rate-the-customer screen is seen immediately after stopping the trip
Then again, I don't feel bad rating drivers because they sell me a service, I'm rating that (it wouldnt even have to include their name - it probably shouldn't. then again I'm european, we seem to have slightly different ethics).
I feel bad that they rate us because we don't provide them with anything.
That rating is going to be saved, sold and shared eventually.
In rough order of importance to drivers:
1) Not causing damage to their vehicles.
2) Giving good enough directions on pickup such that they waste a minimum of (unpaid) time getting to you, and exiting the car in an expeditious manner. An Uber driver's KPI is "number of minutes per day with the car in motion with a passenger in it." (This is the biggest reason why many of them keep multiple phones with multiple apps open -- minimizing time between trips maximizes the number of trips they take per day and, thus, revenue.)
3) Not contravening the usual covenants of civil society.
Much of that value is automated in the form of our credit card details in our Uber app. But we do provide value in a few other forms: not being obnoxious, not trashing/puking in their car, not harassing them physically or verbally.
All these things happen to taxi and Uber drivers regularly, so there IS a need to keep the demand-side riders in check. It's analogous to eBay or AirBnB's two-sided rating systems.
Also, it's not fair to state as fact that our consumer buyer ratings will be "saved, sold and shared eventually." If Uber were a free consumer app with an unclear revenue source, that'd almost certainly be the case. But Uber isn't in the business of needing to sell that data. On the contrary, any marketplace data they hold is competitive advantage over other driver/rider services. They have at least some incentive to keep that proprietary.
Both people in a transaction value the thing they have less than the thing the other person is offering, otherwise there's no reason to bother making the transaction.
At least, in theory.
also at the minimum they should make clear the passenger (you) is going to be rated IMO. Maybe that'd solve the issue of passengers not being courteous or whatever.
You provide them with the "I didn't vomit in your car" service.
I don't see how this it the case, assuming that drivers don't know what passengers rated them before rating the passenger.
Seems kind of like a win-win-win for all three parties (Uber, driver, myself)
What's actually going to happen is that you're going to get degraded service from Uber without knowing why. You're never going to get a cab in the quoted time, because drivers won't pick you up, and you'll assume it's the same for everyone, tell your friends how slow Uber is ... I would say the disillusionment, blame, offence, etc are going to be aggravated by consistently slow service.
My suspicion is that zero is equivalent to unrated, so shouldn't be in the sum?
Drivers are prompted to rate their passenger immeditely after the trip, in the exact same manner as riders rate their driver. Then, when a trip is offered to a driver, they're shown the potential customers rating (and other details), then the driver will choose to accept the job or not
On lyft, on the other hand, 5 means good, 4 means needs work, 3 means "don't match us up again" and 2 and 1 mean "recommend deactivation", 1 means "dangerous".
I use uber multiple time per week and have for years. So I guess I'm not an asshole.
<script> window.Uber = { development: false, jswLocale: 'en_US', pingData: false, version: '3.0.0' }; </script>
window.Uber.Ping.Client.attributes.rating