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.
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.
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.
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.
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.
> 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.
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.
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
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
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.
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.
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".
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.
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.
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.
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.