HN user

azylman

1,351 karma

Sr Staff engineer at Uber working on commerce systems. Former Google engineer. Former engineering manager, tech lead, and founding engineer at Clever (YCS12). My comments are my own, I don't represent any employer, past or present.

I do not put disclosures in my comments, my background is fully disclosed here. Per HN commenting guidelines: assume good faith.

Posts35
Comments205
View on HN
www.technologyreview.com 3y ago

The entrepreneur dreaming of a factory of unlimited organs

azylman
1pts0
blog.x.company 8y ago

A new chapter for Glass

azylman
4pts0
www.tctmagazine.com 9y ago

3D printing organ scaffolds for human transplants

azylman
3pts0
arstechnica.com 9y ago

Court says yes to regulating cabbies, no to governing Uber drivers

azylman
2pts0
status.npmjs.org 9y ago

"fs" unpublished and restored

azylman
23pts16
eng.uber.com 9y ago

UMirrorMaker: Uber's Kafka replicator

azylman
1pts0
regressing.deadspin.com 9y ago

Why There Are So Many Ties in Swimming

azylman
156pts54
docs.google.com 10y ago

Introducing Go 1.6: asymptotically approaching boring

azylman
3pts0
golang.org 10y ago

Go 1.5.1

azylman
53pts4
ubereats.com 10y ago

UberEATS

azylman
52pts60
github.com 10y ago

Show HN: Docker-reload, rebuild and restart docker container on changed files

azylman
1pts1
kubecon.io 11y ago

KubeCon

azylman
5pts0
golang.org 11y ago

Go 1.5 Beta

azylman
137pts80
influxdb.com 11y ago

Chronograf: A new data visualization tool for InfluxDB

azylman
3pts0
www.hakkapools.co 11y ago

Gopherfest 2015

azylman
2pts0
blog.newrelic.com 11y ago

New Relic's Support for Docker

azylman
3pts0
github.com 11y ago

Show HN: Csvlint.go, command line tool for validating CSV files against RFC 4180

azylman
10pts4
ewencp.org 12y ago

Iterators in Go

azylman
5pts1
techcrunch.com 13y ago

Lightbank Invests In Walk.by to Connect Local Merchants To Online Shoppers

azylman
2pts1
coffeescript.org 13y ago

CoffeeScript 1.6.0 released with support for source maps

azylman
240pts77
arstechnica.com 13y ago

Microsoft foresees chaos if Google v. Oracle result stands

azylman
48pts23
www.nytimes.com 13y ago

In Victory for Google, U.S. Ends Antitrust Investigation

azylman
2pts0
arstechnica.com 13y ago

Why Gmail went down: Google misconfigured Chrome's sync server

azylman
7pts0
arstechnica.com 13y ago

Long-time Googler will head Silicon Valley patent office

azylman
40pts1
techcrunch.com 13y ago

Virtual Phone System Profig (YCS12) Shuts Down Fewer Than 3 Months After Launch

azylman
10pts2
www.reuters.com 13y ago

EU regulators to accept Apple, publishers e-book offer

azylman
1pts0
www.bloomberg.com 13y ago

Apple Said to Be Exploring Switch From Intel Chips for the Mac

azylman
33pts67
googleappengine.blogspot.com 13y ago

About today's App Engine outage

azylman
81pts30
techcrunch.com 13y ago

Former Patent Examiner’s Perspective On The Current “Patent Hubbub”

azylman
2pts0
techcrunch.com 13y ago

Mobile Payments Fustercluck

azylman
3pts0

This isn't really true, some languages handle I/O much better than other languages. We migrated a Python application to Go that was about as simple as you can get and mostly blocked by I/O (call DB, transform storage format to Thrift, respond to caller with Thrift) and saw SUBSTANTIAL improvements in performance. Approximately 40% improvement in p99 latency and, more notably, 15x improvement in throughput.

There's an important nuance there which is that they don't have to prove that the person knew the actions they were taking were illegal, just that they intended to take those actions. As an example:

Knowingly driving a car someone else stole is illegal, even if you don't actually know it's a crime to drive a car someone else stole (after all you didn't steal it, maybe you bought it from the person). Driving a car that was stolen that you didn't know was stolen is not illegal.

I mean what is uber processing payments itself too?

https://underhood.blog/uber-payments-platform

https://underhood.blog/assets/images/uber_payments/overview....

Usually the way these kinds of things evolve is it will start with some business requirement: "We want to launch in country <X> but our existing PSP <Y> doesn't support the country's most common payment method <Z>" (Uber operates in 71 different countries).

So you build out a system to abstract over multiple different PSPs (such as Stripe, though Stripe isn't listed in that graphic so not sure if Uber uses it at all) to unlock new business growth. Then you find out that some PSPs are cheaper than other PSPs, so you can save the business money by supporting additional PSPs. Then you find out that some PSPs are more reliable than others so you can increase availability by dynamically selecting PSPs based on availability and transaction costs etc. etc., layering on complexity over time.

All these things are actually built for very good reason (in this example, built to grow the business and reduce costs), but the reasons aren't obvious to the outside observer. But the work easily pays for itself many times over.

So could you run Uber with <100 engineers? Probably, if you were okay running in just a single country instead of 71. But that would be a very different Uber.

You can only run Uber with <100 engineers if you cut out a substantial amount of the systems Uber requires to actually function as a company. Goodbye Fraud, Risk, Safety, Insurance, Compliance, etc. That may be true for things like Whatsapp with a simpler feature set, but is certainly not generally true. For instance, people often underestimate the amount of ongoing engineering effort to stay up to date on changes in tax law in all the countries Uber operates in.

Yup, that's a lot closer to the kind of numbers I would have expected. And if you look at peak it's probably at least 10k tps for each of them.

DC and LA are both infamous for having bad public transit systems, so don't base all your decisions on your experience there. Within the USA, Chicago is really good - taking the L is way faster than cars because you get to skip road traffic and the trains come very frequently. I've heard mixed things about NYC (some very positive, some very negative, likely depending on where you're traveling from/to), but have no experience there myself. Outside of the USA, there are lots of countries with fantastic train systems (e.g. Hong Kong) that are way better than driving.

That may be the case for LA, I'm not familiar enough with their situation to speak to it, but it isn't the case generally. There are lots of rail lines in the US and globally that have not come anywhere close to maxing track capacity. One such example is BART in SF, which could just add more cars to existing trains and see 60% increase in capacity [1]. The tracks and stations support trains up to 10 cars long, but very few are actually that long enough because they don't have enough cars in the fleet.

[1] https://www.bart.gov/about/projects/cars/faq

Here in city (Seattle) most people drive because transit tends to be spotty and slow for most people...So, what's the solution? Make driving worse of course. Speedbumps everywhere...Transit still mostly sucks, but now driving sucks too...the transit folks realized it's hard to compete with driving, so they've just given up entirely on making transit great. It's easier to ruin driving.

The claim was that they put up speed bumps (and other measures) _with the intent of_ making driving worse to encourage public transit. That's obviously false. Speed bumps get put up to discourage unsafe driving.

If, when forced to drive safely, people would rather take public transit, that's kind of scary, but also a good thing I guess to get unsafe drivers off the road? However, that's not what the claim was (and in reality is unlikely to be true, though I have no data to back that up).

Building an entirely new bridge isn't going to be cheaper than adding more cars to BART. Even assuming it was (which it wasn't), it's not going to help as much as you think it is. Not sure if you've ever commuted on the San Mateo bridge, but it's basically fully backed up from the exits onto 101, because 101 is also grid-locked. So in addition to building an entirely new bridge (which, again, more expensive than adding more cars to BART), you also need to add more lanes to 101.

Maybe try quoting the entirety of what I said?

Additional highways are at-best a stop-gap for day-to-day traffic, never a solution, due to induced demand [1]. You really need large-scale investments in public transportation for this.

Clearly "improve roads" vs. "improve public transit"...

How many semi truck drivers and their loads can you fit on a public bus?

You're again arguing against something no one ever said. No one suggested that we should just remove all semi-trucks and replace them with buses. Again, we're discussing where to allocate incremental improvements to existing systems. No one is suggesting doing nothing or, worse, shutting down existing systems.

Using your specific example of semi-trucks, moving more traffic (such as daily commute) to rail lines or buses can actually help semi-trucks as well, by freeing up road capacity for things that actually need it. And additionally, freight trains already make up a fairly large percentage of our freight network (~30%) so rail is actually a great alternative to semi-trucks in many cases.

Here in city (Seattle) most people drive because transit tends to be spotty and slow for most people...So, what's the solution? Make driving worse of course. Speedbumps everywhere. Change 4-lane roads to 2-lanes. Remove parking. Lower speed limits to absurd levels. Make through streets dead ends.

This is obviously not the solution that anyone is proposing. You're arguing in bad faith against a strawman. The solution to bad public transit is to make public transit better.

Sometimes you just need a wider road. Pretending that's never the case is preposterous. If that was true then why do we keep multi-lane highways open instead of closing all but one of the lanes? Wouldn't that improve traffic, under this theory?

You're setting up this strawman where the argument is "improve roads" vs. "do nothing". That's obviously not the case. The argument is "improve roads" vs. "improve public transit". Demonstrably, improving roads is worse than improving public transit. You refer to this as a "fool's conclusion" yet this has been a well-known fact in the field for almost a century. The wikipedia article I linked has some good information on this if you'd like to learn more.

Yup, this is a big reason why I said "in most cases" and not "in all cases". When your trains have to go underground and underwater and your highways go over roads and over bridges, that dramatically changes the numbers. Of course, none of those are a requirement of rail systems - just how the BART is built. There are plenty of trains that go over roads (e.g. the L in Chicago) or over bridges over water.

By the way, even BART could increase throughput today without adding more lines. Not all trains are 10-car trains, because they don't have enough cars in the fleet. Adding more cars to their trains is a significantly cheaper prospect than adding a new lane to the Bay Bridge (which was also basically fully maxed out on throughput during peak traffic times, pre-COVID). And BART carries substantially more people across the Bay than the Bay Bridge does.

So, certainly the BART needs more capacity, both now and in the future - but so do the highways.

The way that public transit scales to meet higher demand is different than roads. Whereas roads require more lanes, public transit such as trains can scale by either adding more train cars to existing trains or adding more frequent service. More frequent service, in addition to improving throughput, also helps everyone else using the system by making it more convenient. And, if it "induces" people to move from roads to trains, that also reduces congestion on the roads. So induced demand for rail lines is a good thing.

If induced demand is high enough even that, too, may not be enough - but then building a new rail line is at least no harder than adding a new highway lane (in most cases), and can support substantially more throughput with equal or lower travel times.

It depends what your success criteria is. It's true, you've successfully increased the throughput of the transit network, but you haven't done anything to improve transit times - you just have more people stuck in traffic now. There are other ways you could have spent that same amount of money (public transit) that both increase the throughput of the network _and_ improve transit times.

No comments on emergency situations, but wanted to call out one thing:

You need additional highways (aka: additional offramps) to truly scale day-to-day traffic

Additional highways are at-best a stop-gap for day-to-day traffic, never a solution, due to induced demand [1]. You really need large-scale investments in public transportation for this.

[1] https://en.wikipedia.org/wiki/Induced_demand#Effect_in_trans...

It really depends on the company. Companies like Google and Facebook are very unlikely to hire people at a higher level than their previous level (though certainly it happens). That's easier at smaller companies.

Airbnb S-1 6 years ago

I'm not saying "trust the management", I'm telling you how an investor would think about it. High spend on marketing can absolutely be justified. Additionally, there's rarely enough public info to allow any investor to independently verify whether it's justified in a specific scenario or not. But if an investor thought that there was positive ROI on that spend, they're not going to fret too much about how large that amount is - as long as it's bringing in a positive return.

Airbnb S-1 6 years ago

Yes, companies have ways to do this with a decent amount of precision and accuracy based on existing user behaviors. They can often even be detailed enough to know that LTV differs depending on the channel that the customer was acquired by (e.g. organic vs. Facebook ads vs. search ads) and tailor their ad spend accordingly.

I don't know what AirBnB's numbers are, companies aren't required to disclose this and they guard it very closely :)

Airbnb S-1 6 years ago

This is a common misconception I see on HN.

To evaluate ad spend, you don't look at just short-term return. There's a reason that "lifetime value" is a critical concept for companies. It's fairly normal in large companies that, in a given year, you may spend more on ads than you gain from those ads - but you expect the customers you gain from them to continue spending over many years.

So you may spend $100 to gain a customer who spends $20 in the first year... then $40 in the second... then $80 in the third... now all of a sudden your return on that was positive, three years later.

These are the kind of ads you want to buy, even if in the short term it looks bad. These large marketing expenses should have compounding benefits over many years. The people who care about the short term like that are not the investors you want and not the people you're trying to please.

Eleven Years of Go 6 years ago

This is reflective of the adoption of dice, not the adoption of Go... there are lots companies in NYC that hire engineers to develop in Go (Google and Uber immediately come to mind).

Exactly, given a timeout you can't assume the server is clearly successful (or unsuccessful!). That was my point, we're definitely agreeing :) Usually you'd generate some kind of idempotency key (randomized token as you said) and retry with that.

You definitely can't just bubble that up to the user and assume things are fine