HN user

krschultz

13,469 karma

Software Engineer & Mechanical Engineer

@kevinrschultz on Twitter

[ my public key: https://keybase.io/kevinrschultz; my proof: https://keybase.io/kevinrschultz/sigs/k_lxivVNv1dGoldx9bUPJ3nVxNnH-ULgOlVj8L-OX08 ]

Posts49
Comments2,550
View on HN
zoox.com 10mo ago

Zoox robotaxi launches in Las Vegas

krschultz
184pts233
www.axios.com 9y ago

Instacart is both very and not really important to Whole Foods

krschultz
2pts0
pando.com 10y ago

Birchbox lays off 15% of staff

krschultz
4pts0
a16z.com 10y ago

CAD Emerges from the Stone Age to Finally Join the Mobile Era

krschultz
1pts0
www.theverge.com 10y ago

Moto G 2015 Review

krschultz
1pts0
www.spaceflight101.com 11y ago

LightSail-A runs into Trouble

krschultz
3pts2
fusion.net 11y ago

A DEA agent investigating Silk Road was allegedly posing as a hitman

krschultz
4pts0
www.google.com 11y ago

Google Makani – Wind Energy Kites

krschultz
495pts161
stratechery.com 11y ago

Dear Zoe Keating: Tell YouTube to Take a Hike

krschultz
2pts0
www.washingtonpost.com 11y ago

5 confounding questions that hold the key to the future of driverless cars

krschultz
1pts0
www.planetary.org 11y ago

How NASA Plans to Land Humans on Mars

krschultz
1pts0
tech.gilt.com 11y ago

Betting on China: Gilt’s Relaunch into the Largest Luxury Market in the World

krschultz
3pts0
www.washingtonpost.com 11y ago

What’s at stake in San Francisco’s fight over how to legalize Airbnb

krschultz
2pts0
hbr.org 11y ago

Profits Without Prosperity

krschultz
1pts0
money.cnn.com 11y ago

SpaceX sued for labor violations

krschultz
5pts0
tools.android.com 12y ago

Navigation Editor for Android

krschultz
2pts0
vinnymac.github.io 12y ago

Promises and More

krschultz
1pts0
blog.grandst.com 12y ago

Etsy acquires Grand St.

krschultz
88pts22
techcrunch.com 12y ago

Splunk Acquires BugSense

krschultz
1pts0
www.doubleencore.com 12y ago

Corroborating the Android Platform Dashboards

krschultz
1pts1
www.fastcodesign.com 13y ago

How The Future Of Google Search Is Leaving iPhone Users Behind

krschultz
2pts0
invertedarchitect.blogspot.com 13y ago

Android + Erlang for Great Good: An Introduction

krschultz
2pts0
www.wired.com 13y ago

FAA Grounds Boeing’s Dreamliners

krschultz
1pts0
terg.is 13y ago

Apartment Radiator Temperature

krschultz
70pts21
www.slate.com 13y ago

Beyond Meat: Fake Meat So Good It Will Freak You Out

krschultz
88pts178
www.slate.com 14y ago

Kids should be building rockets and robots, not taking standardized tests

krschultz
526pts196
www.slate.com 14y ago

How Space-Age Nostalgia Hobbles Our Future

krschultz
1pts0
www.slate.com 14y ago

The Thermostat Wars: How Honeywell could beat popular upstart Nest.

krschultz
2pts0
www.slate.com 14y ago

Why Should We Stop Online Piracy?

krschultz
6pts0
www.washingtonpost.com 14y ago

Everything you need to know about patent reform in one post

krschultz
1pts0

You don't make breaking changes. You provide the new API and the old API at the same time, and absorb the additional complexity as the library owner. Best case scenario everyone migrates to the new API and eventually remove the old one. This sounds onerous, but keep in mind at a certain scale there is no one commit in production at any given time. You could never roll out an atomic breaking change anyway, so going through this process is a reflection of the actual complexity involved.

Because they make more money using their servers for their own products than they would renting them to other people. Meta has an operating margin of 41% AFTER they burn a ton on Reality Labs, while AWS has a 21% margin with more disciplined spending. Social media is a more profitable business than infrastructure.

Huh? You have to pay property taxes now and those could end up being too high for subsequent generations to afford. That happens all the time and is a common reason why property gets subdivided. This is simply a question of whether the value of structures on that land should be included.

If anything a pure land value tax should be more predictable than a property tax, I got hit with a major property tax increase and looked into it, the town had calculated the new property tax based on an incorrect square footage and number of bedrooms for my house. After filing an appeal and going to court I got it fixed, but that was a more capricious process than if it was simply based on the value of the land under the house.

I would heavily consider this type of system once build times become a major pain point. That often happens somewhere around 20-50 people working in one codebase. So I think this is a problem space for medium sized companies. Truly small companies probably don't need this and should use the standard ecosystem tools, BUT if your team knows how to use it there's little downside in started from a Buck / Bazel. Especially since you get most of the benefit if you have a nice clean DAG of your modules, and that's easy to build at the beginning and hard to refactor into later.

IMO one of the nice things about Buck or Bazel is that once you learn it, switching languages doesn't require you to learn a completely new tool. Obviously the cost of learning it the first time is high and if you are used to one ecosystem may not be worth it. But I'm now on my 3rd different ecosystem that uses Buck/Bazel (Android, iOS, C++) and it's nice to not worry at all about the underlying tools.

It's honestly hard to measure at the scale of Meta. Just making everything compatible with Bazel would be a non-trivial undertaking.

Also that seems an interesting thing an independent person could write about, but whatever claims Meta made on a topic like that would be heavily scrutinized. Benchmarking is notoriously hard to get right and always involves compromises. It's probably not worth making a claim vis a vis a "competitor" and triggering backlash. If it's significantly faster than Bazel that will get figured out eventually. If not the tool really is aimed at Buck1 users upgrading to Buck2 so that is the relevant comparison.

At the time that FB started writing Buck, Bazel was not open source. I believe it did exist as Blaze internally at Google before FB started writing Buck. Facebook open sourced Buck before Google open sourced Blaze as Bazel.

Over time Facebook has been working to align Buck with Bazel, e.g. the conversion to Starlark syntax so tools such as Buildozer work on both systems. I believe Buck2 also now uses the same remote execution APIs as Bazel, but don't quote me on that.

At Meta many engineers tried management and then went back to being an individual contributor. I'm not sure of the exact numbers but it was a very common career path. It did build up empathy for management on the senior IC side and meant that teams didn't get stuck with managers that didn't actually want to be a manager. If the company is not growing headcount this move makes perfect sense.

A question to answer: is the enjoyment coming from actually being the machinist, or is it coming from assembling something you designed? The answer could be either. But if you just want to bring something you designed to physical fruition and you are limited on space then I would recommend finding machine shops that will make what you design for you. This is what Protolabs, Shapeways, Xometry, etc do. You don't need to actually have a 3D printer or laser cutter or CNC mill to get things built. You can probably find a local fabricator too. I found a guy that made handrails and would do random welding jobs, I used to go to his shop for all sorts of different things. Even if you get the money and space to build out a shop, there's a lot of skill to these crafts and people dedicate their whole career to becoming experts in them.

I do not think the outcome is only Uber / Lyft but with AI, but if that is the outcome I still think it would be a win. Today supply of Uber / Lyft in my area at off hours is spotty, and that makes it unreliable. I have gotten stuck walking home 2+ miles multiple times in the last year because I couldn't get a ride at any price. That's not a problem in Manhattan, but not everywhere is Manhattan. Driverless cars would be on 24/7/365 so wouldn't have that problem. The more reliable these taxi services are, the more viable it is for people to get rid of their cars.

I also expect long term self driving cars will be safer than humans, and as a person that primarily walks around instead of driving that's a benefit to me even if I'm not in the car.

Big Problems 4 years ago

How many software engineering projects are CRUD apps or yet another ETL pipeline?

Big Problems 4 years ago

For many years my "big question" has been "why do software engineering projects fail at a disproportionally higher rate than other engineering fields?"

Though I have to say the other engineering fields are not doing so hot lately either, so I might have the wrong question.

I'm not at all interested in finance / stock picking but found this to be one of the best walkthroughs of an ML system end-to-end that I've ever read. I'm not in the field of ML but I'm interested in learning more and this was fantastic, thank you.

As an owner of a vacation home and a large donor to homeless charities: this is completely divorced from the reality on the ground. It's a false dichotomy proposed as a way to block solving the problem of limited housing where it's acutely needed.

My ski house in Vermont does absolutely nothing for the homeless people in my neighborhood in New York. If you put someone in that ski house what would it do? Sure it would put a roof over their head, but there are no jobs, no soup kitchens, no homeless resources. They would need a car whereas in New York they can walk and use mass transit. The town in VT is already strapped supporting many in their community (I do charity there as well, and let me tell you it's more dire than much of the New York area).

The solution is to house them here in the New York area where they are (and in fact New York does a better than average job of this).

As for it being a misallocation, I own a $1M apartment in NYC and a $300K house in Vermont. If I just owned a $1.3M apartment in NYC my bills would be exactly the same, there would be 1 fewer "vacant house", and the homeless would still be unhoused. The real misallocation is how much I get paid as a software engineer relative to other professions of similar difficulty. I happen to spend my fun money on a ski house instead of a boat or a bunch of vacations, but there's no moral difference between a vacation home and other leisure spending. So really you are arguing that some people shouldn't have such a surplus when there are homeless people. Maybe that's true, but it's one of the most unpopular positions in American politics and if you are an ally of the homeless it's not a fruitful argument to make.

FB is pretty much on V1 of its GraphQL API with tens of thousands of engineers editing it for over a decade. Every single query is its own version, that's the point. If you want to change the semantics of a field, make a new field and leave the old one for the existing clients. What else would you have to version?

It shifts the complexity to the server side. The additional logic you are describing currently lives on the client, where it's harder to update and likely duplicative across platforms.

Every company I've worked for in the last 10 years had multiple apps across several platforms, each with many versions, all running in production at once. Even if you only care about the next version you are shipping and a handful in production that's a dozen variations.

In a REST paradigm you over fetch because not all of these variations need the same data, or you send less but then the clients thicker because they merge API calls and have divergent presentation logic, or you have a bajillion API versions.

There's often a lot of back and forth between the various teams for each rev of the API.

GraphQL lets the clients drive the definition of the data fetching. That's it.

95% of the criticism of GraphQL is people complaining that GraphQL doesn't solve the problem of preparing the API response for these different requests. While that's true, that's not what it's supposed to provide. Whether you have a REST API with 26 versions or a GraphQL API with 26 variations of query you're going to have to write a backend-for-frontend style service that resolves the results.

GraphQL just standardizes this process.

- It shifts the complexity where it belongs - out of native apps deployed to user's phones and onto the backend that you control. It doesn't eliminate any complexity.

- There's really no need for API versioning in GraphQL. Just keep iterating on the fields.

We use the same principle on some of the frameworks I have worked on, it pushes you to make the API more explicit and keep the context localized. That makes codemods easier. This can sometimes lead to a more verbose / less magical API, but IMO at scale the tradeoff is worth it.

FWIW this was ~2015ish, I'm not sure what the state of OpenAPI was at the time.

Was it simply aggregating results of multiple requests?

Pretty much. The company I was at was an early proponent of microservices so we had to have a service that operated as our entry point to all of it. Thats easy enough, but layering on versioning of the APIs for native apps on different platforms added complexity that definitely didn't seem worth dealing with in our at the time REST paradigm. We did have frameworks that generated clients for different platforms against that API so I'm not even talking about the boilerplate of sending and parsing JSON.

The backend for frontend pattern is exactly why I got sold on GraphQL. We had a pile of relatively low value server code that could be replaced a GraphQL resolver and the client got all of the advantages of that pattern. The move to GraphQL genuinely freed up a lot of our time to work on more important problems. This was on a smallish team so that time mattered.