655 karma · joined November 14, 2013
How they managed to massage white supremacy and sexism into this is...well...wow.
In Apple's case there are no reasonable alternatives and no practical way to say "no" to the service if you want any business at all. That and that alone should be the issue at hand. What Apple is doing should not be legal on that ground. Either they allow third party stores, or they adjust their cut to a level that can reasonably argued is aligned with the value they're adding to the publisher of that app or service. Now they're in "we can charge whatever because we're the only route to getting your product on Apple products" land, and that's just not where we want to be.
But that's not the topic at hand, and strawmanning one problem by pulling in another is just lazy. Ruling on this will not just affect Apple but any company with a similar modus operandi in the future, including smaller more ethical companies. Why people have trouble keeping legislative challenges (what you can do) and moral challenges (what you should do) apart is beyond me. You can have more than one opinion in your head at the same time.
None of what you said matters. It does not matter how much money a company makes or if you personally think they're charging too much for a service. They're allowed to. The open question is if they're in a position where there's no reasonable alternative for developers and/or consumers which you can make a strong case for. That line of argument would not be affected at all by how much money Apple makes, their cut or if they're spending their money in a socially productive way.
The fact that this is the second highest upvoted comment is a rather sad datapoint on issues related to internet based conversation where opinions consistently trump fact or reason.
There are very few real world scenarios where "just make it work" is a good approach to tackle engineering problems that require senior developers (read; developers with extensive experience in the related problem domain) in the first place.
My approach, which is I suspect it similar to what you're describing, is to define functional contracts first. Making them work is actually pretty low on the priority list, since that's consistently also the easiest thing to get right.
The hard part is correctly defining expected behaviour, interfaces and so on. In your example the hard part is constructing an interface/API for a payment processor that satisfies your business needs on the consuming side and is reasonably implementable for the relevant major payment providers. Actually implementing one, the making it work bit, is just not where the senior expertise adds value.
Unless, of course, you enjoy shipping glorified POCs to your customers because your stakeholders "saw it work" and blissfully ignored the metric tons of tech debts you just introduced, not to mention a skewed perception of the amount of effort needed for a that deliverable.
Also had a quick look at the codebase and was positively surpised by it being Golang. Oh and just in case the author has a peek at this thread; the only source file I opened had this interesting typo :D "NewProcesser() *Processor"
The reason developers gravitate towards subscription/rx based paradigms is because it results in very clean architecture and code. Unfortunately it comes at a cost which increases rather than decreases per client/user when volume increases. Some companies or projects can absorb that cost but not all, and typically less so when the project or its userbase grows.
A subscription based model will do work whenever data changes for each subscriber whereas more traditional pull based architectures only do work when a client specifically needs the data. This can be mitigated to some extent by being micromanaging subscriptions but that kills most of the value of the model.
There are also plenty of issues with this model if multiple clients are allowed to write to the same data which every single example project seems to try and do. There's a reason master-master updates, consensus algorithms and CRDTs all come at significant cost. It's usually hard. And when it's easy you probably don't need it subscribe-on-update in the first place.
Even the offline first paradigm is fundamentally flawed in general and certainly when it comes to offline data manipulation. Either you can afford to mutate your data on the local device and sync it when possible, in which case you clearly don't need subscriptions to real-time mutations of remote data because within that scope you are the source of truth. Or, you're interested in mutations of real-time data from multiple clients in which case you need to deal with conflict resolution (mutually exclusive changes of data) which is not reliably possible with this model and scalability (linear increase in pub/sub * increasing query cost = exponential scaling).
Are there any large projects or companies that currently have this in production?