Hacker News new | past | comments | ask | show | jobs | submit | LargeWu's comments login

"because work is being delivered"

This is debatable.

My company now mandates all contractors sourced via one specific firm, and more recently that 70% of contractors are located "offshore", which in practice means India. Of the 5 contractors they have placed, I've let 4 go for performance reasons. Even at the rates they're getting paid (about 25% what a domestic resource would get) they're net-negative value.


redhat openshift is partly developed by this work. I know its not great. the "engineers" working there are afraid to touch the code even beyond whats asked of them.

> This is debatable

work is being delivered is relative, not talking about good work or great work. its average at best. The debate you want to do maybe is if this is better than call center scams


There are great developers in India, but they get a lot more than 25% of US salaries. Great developers in Germany are cheaper than India - but labor rules in Germany are weird.


This implies it's intentional, that there's some sort of master plan. I don't think that's it. I think he's just intoxicated by the prospect of basically unlimited power and is unable to think rationally about the entire situation.


I don't think it implies that it's intentional.


Jeff Bezos himself could be considered a mega-corporation.

We're at the point where the personal wealth of oligarchs such as him has begun eclipsing the wealth of all but the very largest corporations. His own personal wealth would rank him somewhere around 60th on the Fortune 500.


It puts him in the top half of countries, just below Croatia, by national net wealth.


Scaling with GDP, rather than population, implies that government spending is scaling with the country's ability to provide services commensurate with prosperity.


Who said the problem is solely deficits? I don't think spending should just "scale" with anything and there is empirical evidence that that is a horrible way to run an economy.

You are literally just suggesting we spend more no matter what. Obviously, there is a massive difference in types of spending right? And we have an incredible amount of bad spending. In fact, in places like public education and health, we continue to spend more to get worse outcomes.

You're making large, sweeping generalizations and most of the positions espoused are more political than scientific.


"Bad spending", according to who?

Conservatively, 20% of the nation's wealth goes to the top 1%. The people who need it the least.

I can buy the argument that we could be more effective with spending, but not with the idea that we need less wealth transfer from rich to poor.


The entire premise is to cut wasteful, corrupt, and ineffective spending. I’m sure nobody will agree with every single line item cut, but generally throwing money away on ineffective and fraudulent spend isn’t contributing to wealth transfer. Putting “bad spending” in quotes like none of the spend being cut is actually bad is disingenuous. If you tax the wealthy and get $100, but 95 of them end up in landing in other wealthy people’s pockets along the way, the people who need it aren’t winning. if you can remove $90 of waste, give the people who need it $20 instead of $5 and spend $5 to grease the wheels, you’ve cut spending 3 fold while transferring more wealth.


Then why are we talking about personnel at all? That's like 3% of spending. The only way to achieve actual savings is to reduce program spending, which isn't even an executive power.


They aren’t just talking about personnel. And I disagree that 3% isn’t meaningful. And cutting workforce isn’t just about saving money on headcount.


What else does it do?

You understand that firing a program manager doesn't de-obligate the spending of the program he managed, right? Because I'm seeing a lot of people online who don't seem to grasp that.


I believe the expectation is that congress will officially deallocate spending that was deemed wasteful. We shall see.


Congress will be lucky if they can patch together a CR and not default on the national debt. Have you seen these guys?


> Scaling with GDP, rather than population, implies that government spending is scaling with the country's ability to provide services commensurate with prosperity.

This is only true if the value of government services increases over time and not just their cost. If GDP doubles and the government then spends twice as many real dollars to provide the same level of services as before, all you've done is cut efficiency in half.


Yes, certainly Elon Musk, who owns SpaceX, has no conflicting interest in privatizing America's space operations...


Why the assumption that an API endpoint should be a 1:1 mapping to a database table? There is no reason we need to force that constraint. It's perfectly legitimate to consider your resource to encompass the business logic for that use case. For example, updating a user profile can involve a single API call that updates multiple data objects - Profile, Address, Email, Phone. The UI should be concerned with "Update Profile" and let the API controller orchestrate all the underlying data relationships and updates.


You seem to be in agreement with the parent, who argues 1 model (aka database row) = 1 rest entity (aka /widgets/123) is a bad paradigm.

Different widget related front-end views will need different fields and relations (like widget prices, widget categories, user widget history and so on).

There are lots of different solutions:

- Over fetching. /widgets/123 returns not only all the fields for a widget, but more or less every possible relation. So a single API call can support any view, but with the downside that the payload contains far more data than is used by any given view. This not only increases bandwidth but usually also load on the database.

- Lots of API calls. API endpoints are tightly scoped and the front-end picks whichever endpoints are needed for a given view. One view calls /widgets/123 , /widgets/123/prices and /widgets/123/full-description. Another calls /widgets/123 and /widgets/123/categories. And so on. Every view only gets the data it needs, so no over fetching, but now we're making far more HTTP requests and more database queries.

- Tack a little "query language" onto your RESTful endpoints. Now endpoints can do something like: /widgets/123?include=categories,prices,full-description . Everyone gets what they want, but a lot of complexity is added to support this on the backend. Trying to automate this on the backend by having code that parses the parameters and automatically generates queries with the needed fields and joins is a minefield of security and performance issues.

- Ditch REST and go with something like GraphQL. This more or less has the same tradeoffs as the option above on the backend, with some additional tradeoffs from switching out the REST paradigm for the GraphQL one.

- Ditch REST and go RPC. Now, endpoints don't correspond to "Resources" (the R in rest), they are just functions that take arguments. So you do stuff like `/get-widget-with-categories-and-prices?id=123`, `/get-widget?id=123&include=categories,prices`, `/fetch?model=widget&id=123&include=categories,prices` or whatever. Ultimate flexibility, but you lose the well understood conventions and organization of a RESTful API.

After many years of doing this lots of time, I pretty much dislike all the options.


Lots of API calls scales pretty well, as long as those APIs aren't all hitting the same database. You can do them in parallel. If you really need to you can build a view specific service on the backend to do them in parallel but with shorter round-trips and perhaps shared caches, and then deliver a more curated response to the frontend.

If you just have one single monolithic database, anything clever you do on the other levels just lets you survive until the single monolithic database becomes the bottle-neck, where unexpected load in one endpoint breaks several others.


"you can do them in parallel" - not in Rails.


Well, you could do them in parallel from the client to independent endpoints.

But yeah, rails might be a bad match


Webapps are going back to multiple requests because of http2 / quic multiplexing.


This solves the problem of slow transport between your frontend and your backend, but it will still incur a lot of unnecessary load on the database as well as compute on your backend (which isn't normally a problem unless you're using something really slow like Rails).


Why? Queries would still have to be done. Yes, a few things would be duplicated (authentication), but on the other hand, queries can be cached at a more fine grained level. It's easier to cache 3 separate queries of which one can be re-used later, than to cache one monster query. s/query/response


So what do you do instead?


I do one or some combination of the options above. I've also tried some more exotic variations of things on the list like Hasura or following jsonapi.org style specs. I haven't found "the one true way" to structure APIs.

When a project is new and small, whatever approach I take feels amazing and destined to work well forever. On big legacy projects or whenever a new project gets big and popular, whatever approach I took starts to feel like a horrible mess.


Rails began that trend by auto-generating "REST" routes for 1:1 table mapping to API resource. By making that so easy, they tricked people into idealizing it

Rails' initial rise in popularity coincided with the rise of REST so these patterns spread widely and outlasted Rails' mindshare


No, it's an API Entity can be composed of sub-entities which may or may not exposed directly via API.

That's what https://guides.rubyonrails.org/association_basics.html is for.

However, Rails scaffolding is heavily geared towards that 1:1 mapping - you can make all CRUD endpoints, model and migration with a single command.


If you lean into more 1:1 mappings (not that a model can't hold FKs to submodels), then everything gets stupid easy. Not that what you're saying is hard... just if you lean into 1:1 it's _very easy_. At least for Django that's the vibe.


"It's just an OTA software update"

The way the fix is applied is irrelevant. The important thing is that their vehicles have a safety issue and it needs to be fixed and documented for each vehicle.


It's completely relevant.

The term shouldn't be overloaded.

When you see a recall you shouldn't have to wonder if it's a download or if you need to take the car in.


A recall means “PAY ATTENTION! Something may still be broken!”

The recall will mention how to get it fixed, regardless of a OTA update or service visit.

The lack of a mere download could mean the difference between life and death.


I take "fast" here to mean "written to delivery business value as soon as possible"


This is what fascism looks like.


The idea that most people just have an extra $7k a year sitting around to put into a retirement account they won't be able to access for decades seems pretty out of touch. A lot of people are just getting by. Additionally, if you live in a high CoL area, you might be prevented from contributing to a Roth even though most of your income goes to living expenses.


Some of the advice thrown around in this thread is so out of touch.

    "Just get a high paying job". 
    "I never worry about healthcare because of my employer". 
    "Just put $7,000 away into a retirement account and $10,000 into a 529 every year.  What's the problem?"
And even if I'm in a position to do that, the problem is that there are millions of fellow Americans (the majority) that don't have these "luxuries".


Your on hackernews, maybe you confused this place with Reddit?

This site's guidelines include "On-Topic: Anything that good hackers would find interesting. "

Generally speaking, that points to software devs, which points to a high paying job.

So when op said they don't know how their kids will save money, most commenters are replying with the assumption they're talking to a software dev.

Also please by all means toss out your own solutions.


I like a quote from Stephen Dubner when he closes his episodes of Freakonomics podcast:

    > "Take care of yourself, and if you can, someone else, too."
I'm on HN. I work at a Series-C YC startup. I previously worked at another VC-back SV startup. I've even tried numerous startups of my own. But I'm also a part of a broader community of Americans and I want all Americans (and all people, if possible) to do well.

It's really simple; I'm human first.


> It's really simple; I'm human first.

Thanks for that. It seems as if over the past 5 years or so, the tech industry in particular has completely lost the thread on this.


That's probably why he suggested a roth. $7k might be too much, but you can withdraw your own contributions from a roth without penalty. This makes it a great way to save for people early in their career, especially if they are in lower tax brackets that wouldn't benefit greatly from traditional ira deductions anyway.


Not only that, but even if you could put $7K every year into an IRA, and even if the investment returned a steady 7% per year risk free (HAHA!), in 30 years, it's grown to ~$660K, which, sure, is a nice chunk of change, but at a 3% draw down rate, you'll need to live on less than $20K/year. You'll need to be really frugal. Move to a super low cost of living area and go back to eating ramen. And don't get seriously sick or injured. And don't have dependents to house, feed, and educate...


That's probably why he suggested a roth. $7k might be too much, but you can withdraw your own contributions from a roth without penalty. This makes it a great way to save for people early in their career, especially if they are in lower tax brackets that wouldn't benefit greatly from traditional ira deductions anyway.

TB


The person you're replying to wasn't making a general point, but was specifically replying to someone who said their income was in the top percentiles. So probably not someone just getting by.


Also the "buy another property".

Like, this is part of the damn problem.


Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: