EU opens Apple antitrust investigations into App Store and Apple Pay practices - <AUTHOR> https://www.theverge.com/2020/6/16/21292651/apple-eu-antitrust-investigation-app-store-apple-pay <comment><USER2> I know I'm probably in the minority, but I really like things as they are and I'm just not interested in change here. The iOS and App Store ecosystem work extremely well for me, including changes like forcing developers to allow users to sign in with Apple anonymously versus email, Google, or Facebook.

I understand Spotify's complaint about competing with Apple Music, and that does have merit, but at the same time I kind of just don't really care. Spotify is also in the process of ruining podcasts by making them exclusive to their platform, so no real love lost here for me.

W.r.t Apple Pay and NFC - for the love of god don't fuck with this. It's a perfect implementation as it currently is.

<comment><USER3> Imagine an alternate reality where Windows is like the iOS ecosystem.

* No more downloadable exes or installers, or stores like Steam. The only way to install software is via the Windows App Store. If something is not on there for whatever reason: though luck.

* Microsoft can delete all programs from your PC remotely if they feel like it.

* You have to pay Microsoft every year for the privilege of developing on their platform.

* If you charge for your app, Microsoft takes 30% of your revenue. You don't have any other option, except to only provide your app on Linux, losing a large market.

* If you want to support payments inside your application, you _have_ to use the Microsoft Pay service, which also takes a hefty cut, or you have to inconvenience users with side channels like ordering via a website. Which might still get you banned.

* Your app may be rejected or removed from the store at any time. Maybe because you broke some arbitrary rules, because it is politically inconvenient, or because you compete too closely with Microsoft software. Oh, and Microsoft also may mandate to see your source.

* The only way to use private/internal apps is to pay Microsoft for the privilege of using their distribution mechanism.

Ask yourself: in this world, would you happily use Windows as a developer? Would you welcome these restrictions as a consumer?

This is increasingly important as phones and tablets become the primary device for many.

I appreciate that a curated ecosystem has many advantages for users, but most of the above concerns are orthogonal to a well-maintained app store.

Apple makes crazy amounts of money off the backs of developers - on top of being paid for their devices and software by consumers. They are highly incentivized to keep it that way.

(Android has some similar issues, and shows that even with a somewhat more open system there is still plenty of monopolistic potential, but that's a longer topic)

<comment><USER4> I'd argue that the reason Apple devices are so popular is because of the restrictions that ensure quality. Would your app have any potential to make money on the App Store if there wasn't a huge customer base?

> No more downloadable exes or installers

So it's harder for a user to get a virus or some malicious App? Great. If Apple allows a service, it means they back it in a sense and people trust Apple. Would you really back a bunch of different stores with content you can't verify?

> Microsoft can delete all programs from your PC remotely if they feel like it

And lose their customer base? Sure? That's so unrealistic.

> You have to pay Microsoft every year for the privilege of developing on > their platform

Grocery chains charge for shelf space. Also the fee is $99. There's also some fee waivers available.

> If you charge for your app, Microsoft takes 30% of your revenue

So you don't want to pay to be on the store and you don't want to pay to make money off their platform. They're just supposed to maintain a curated and near seamless platform for free? Are you suggesting users just pay more?

Also, I'm seeing 30% thrown around a lot. It's 30% for a year and 15% after that, let's be clear about that.

> Your app may be rejected or removed from the store at any time

If theres a random app on my phone discovered to be malicious, PLEASE delete it.

> Apple makes crazy amounts of money off the backs of developers

Ok then how much money would YOU be ok with them making? What's the cutoff? Would you be ok with your app being capped in how much money it could make? I don't think so.

> ..being paid for their devices and software by consumers Consumers pay > directly for devices, not software. The only software they indirectly pay > for is the 30%/15% fee that devs have to take into consideration.

Let's stop pretending that 95% of users have any degree of technical literacy and that there's no value in what an App Store provides. I'm glad my non- technical friends and family don't have to worry about viruses or phishing as much after switching to Apple.

If you really don't like these things as a user, then jailbreak or use Android or the Ubuntu phone or something. There's alternatives.

Also, if using iOS/OSX was like using Windows, I wouldn't use it.

<comment><USER5> Somehow google manages to have a store without fully locking your out of alternatives. Their position certainly makes it so they can and do behave as a monopsony in ways but certainly not to the same extent as apple.

> If theres a random app on my phone discovered to be malicious, PLEASE delete > it.

Yet they also do it if the app competes with them or their functionality. Both google and Microsoft have gone to court for way less.

>Grocery chains charge for shelf space.

Grocery chains buy the product for resale. A notable difference. Grocery stores also have plenty of competition that can offer the same product. Consumers aren't locked into choosing one grocery store to buy from after purchasing a membership or some shit. Grocery stores aren't one of 2 viable options and generally can't dictate pricing of the seller and their cut. Grocery stores don't often pull anticompetitive shit like this: [https://www.justice.gov/opa/pr/justice-department- requires-s...](https://www.justice.gov/opa/pr/justice-department-requires-six- high-tech-companies-stop-entering-anticompetitive-employee)

>Ok then how much money would YOU be ok with them making? What's the cutoff? Would you be ok with your app being capped in how much money it could make? I don't think so.

Perhaps they could make money of value of the service they provide that being the hosting of apps and curating a nice app-store rather than you know being a monopsony.

<comment><USER6> > Somehow google manages to have a store without fully locking your out of > alternatives. Their position certainly makes it so they can and do behave as > a monopsony in ways but certainly not to the same extent as apple.

Arguably they accomplish that by bundling (i.e. the problem that Microsoft in trouble with Explorer). [https://www.theverge.com/2018/10/19/17999366/google- eu-andro...](https://www.theverge.com/2018/10/19/17999366/google-eu-android- licensing-terms)

You have to pay $40 to be able to launch your phone with GMS (Play store, Maps, other 1p Google apps not part of AOSP) and where until recently it looks like waiving that fee if you also preinstalled Chrome as the default browser. That's literally the bullshit Intel & Microsoft did that got them in trouble as monopolies. Google & Apple have pointed to each other as reasons neither is a monopoly so that their BS practices don't get them into trouble. The EU has been taking a harder stance than the US. In general I think we should be banning these kinds of practices once the company size exceeds some point (revenue, # of customers, something). It doesn't matter if you're a monopoly. You're throwing your weight with dominance in once area to artificially improve your reach in another (i.e. the customer isn't getting to make that choice).

</comment></comment></comment></comment></comment><comment><USER7> Dare I dream that iOS will finally get an alternative browser rendering engine? Or more precisely, would Mozilla and Google _finally_ be allowed to release their browsers on iOS?

<comment><USER8> What you really want is the ability to sideload apps without the App Store. Then you'd get your alternative browser rendering engine as well as tons of other useful apps that will never be available. Apple can do their best to make it difficult and warn users of the risks but it should be possible.

<comment><USER9> > _What you really want is the ability to sideload apps without the App Store_

Not really. The curation and verification of the App Store is a feature. I don't want to have to download a must-have sideloaded Google app for work that snuzzles up all my data to Mountain View.

<comment><USER10> We wouldn't have had the insane progress when it comes to software and hardware if everything was locked down from the beginning as it is with Apple.

There are multiple ways to allow sideloading without your grandpa getting infected.

<comment><USER9> > _if everything was locked down from the beginning as it is with Apple_

Everything isn't. Just one device among many.

</comment></comment></comment></comment></comment><comment><USER11> Was waiting for app stores to be tried on anti competition law. App stores is basically a form of App monopoly On devices where the Device operating system vendor decides which apps get go no go. It can block competing apps such as Spotify/Apple Music for example. One could argue the same for YouTube music vs Spotify.

Also vendor decides kickback commission fees which may also be anti competitive.

Same for payment services nfc access.

Also sometime vendor makes similar function from an app IOS battery health. Blocks Native Battery api access, makes it hard to sell battery analytical apps.

<comment><USER12> People shouldn't be tricked into paying for an app reports the IOS battery health since it's already available in settings. This is a net positive for users.

<comment><USER13> Users also shouldn't be tricked into paying for the python interpreter, but the one apple recommends and integrates into their apps costs $10.

<comment><USER14> Are you talking about Pythonista? It's a whole IDE with GUI designer that includes a bunch of custom libraries for iOS functionality. It's not just an interpreter, and it's not even the top App Store search result for "Python". It is the best Python app on iOS by a wide margin though, which is how it made one of Apple's "featured" lists on the App Store.

Apple doesn't integrate Pythonista into their apps, as far as I know.

</comment></comment></comment></comment><comment><USER15> I cannot write applications for the Xbox, Playstation or Switch without going through their manufacturers and paying them a part of my revenue. In the mean time, Sony and Microsoft and Nintendo have their own studios as well. Their stores are also curated and gated.

If I want an open gaming device I take a PC. If I want a more open phone, I take an Android.

Is this different than the situation with iPhone? (Sidenote: I can put whatever I want on my iPhone using Xcode)

<comment><USER16> I think it is different because gaming consoles are single purpose devices. Whereas smartphones are marketed as general purpose.

I am all for forcing the manufacturers of the gaming consoles to allow running of arbitrary unsigned code in a different sandbox than their DRM.

Also I believe in the right to have root on all devices you have.

<comment><USER17> Interesting how being allowed to run your own software is now a downvotable opinion here on HN.

<comment><USER18> I can't understand why that comment is being downvoted. It's a constructive comment, featuring an opinion that I would have genuinely thought would be well supported on HN.

</comment></comment></comment></comment><comment><USER19> This may not happen if Spotify didn't speak up. [https://timetoplayfair.com/](https://timetoplayfair.com/)

<comment><USER20> Eh...says the company that buys up formerly free shows, and makes them an exclusive for their paid service.

Spotify buys intellectual property (a podcast) and proceeds to sell access to that for a profit.

Apple invents intellectual property (the iOS ecosystem, App Store) and proceeds to sell access to that for a profit.

<comment><USER21> Spotify is also complaining that "Apple won't let us share awesome deals and promotions" [1].

I love you Spotify but I don't want your ads, I don't want ads on my phone period.

I'm currently using Android, and it's just ridiculous how much my phone is demanding my attention with notifications of "Rate us!" or "Look at this emergency news! Joke, it was just an ad". They even have "let me upload all of your contacts or I wont start"-apps. Android really lets the users decide, and the app-companies sure tries every foul play they can get away with, and to be frank, giving those app-companies a smack on the back of their head from time to time as Apple is doing can be a good thing.

That said, 30% is... hefty especially when some companies don't have too.

"Does Uber pay it? No. Deliveroo? No." [1].

[1]: [https://timetoplayfair.com/facts/](https://timetoplayfair.com/facts/)

<comment><USER22> The difference in amount of notifications is really one of the reasons I ended up with an iPhone. That's sad

</comment></comment></comment></comment><comment><USER23> I'm an Apple user and as a user, I'm pretty happy with the walled garden approach and the stores on iOS.

However, I also hold the EU's atttude to anti-trust in fairly high regard, so I'm happy to see them scrutinise this.

<comment><USER24> The curation and walled garden rules can work and have a lot of upsides for a lot of users. The problem is the inconsistent application of those rules that ultimately hurt independent and small time developers. A lot of whom are making the most interesting software for the platform rather than churning out a client to support some existing service.

</comment></comment><comment><USER25> Here is my anecdata on Apple Pay and why I stopped using it altogether:

Once I used Apple Pay from my phone to pay on a third-party website, it showed a nice popover on Safari and it automagically used my address from my info as the SHIPPING address. Neat but the address was my old address, so I edited and changed the SHIPPING address to my new address. I press OK. Then Checkout.

I see that order was shipped to my old/incorrect address. The vendor said this is the address they received. I remember changing and updating the address on the APPLE PAY popover.

I called Apple as I had entered the correct address on APPLE PAY popover, they said may be the website vendor implemented it incorrectly, there are _millions_ of websites using Apple Pay and they CANNOT/DO NOT check those integrations. This was a breach of trust. I entered my information on a pop- over shown on Apple iPhone by Apple iOS and not the third-party website.

Bottomline: Either Apple takes full responsibility of the data entry or leave it to third-party. Else consumers are stuck in limbo

<comment><USER26> Why haven't you updated your billing address to match your new shipping address? Doesn't that mean your potential statements are getting sent to your old address?

<comment><USER25> It is not necessary that my billing and shipping be same. I might order to ship elsewhere

</comment></comment></comment><comment><USER27> Pretty much I figure the percentage has to change at least in categories where Apple has its own products.

As for the NFC chips, I am facing a quandary here. I am leery of apps getting this access unless all such usage is challenged and very obvious who is attempting to use them

<comment><USER17> > As for the NFC chips, I am facing a quandary here. I am leery of apps > getting this access unless all such usage is challenged and very obvious who > is attempting to use them

On Android the NFC can be either used by current foreground app (so you're looking at it), or by the default payment provider (which you set globally and more importantly - you have to set it yourself).

Seems like a good tradeoff.

<comment><USER28> What I'm wary of is having to install a shit app from each bank that I have a card from. I'm pretty sure that will be the outcome if they're forced to allow alternative payment apps.

And please don't tell me they won't be shit, I know how their web sites work :)

On the other hand, it's annoying from a "hey that's an evil monopoly" point of view that Apple makes money on every payment I make.

Cannot win i guess.

<comment><USER29> How much would hit the fan if Microsoft changed Windows, even just on Surface hardware, to ensure that any time you bought something from Amazon it had to go through their payment gateway and they got a percentage?

<comment><USER30> Well. That doesn't happen with Apple now. Amazon can and does sell _physical_ goods through its app and pays Apple nothing.

<comment><USER31> Yes but I can't buy Prime Videos through the app, I have to do that from my android phone or desktop

<comment><USER30> Yes you can.

[https://www.theverge.com/2020/4/1/21203294/amazon-prime- vide...](https://www.theverge.com/2020/4/1/21203294/amazon-prime-video-ios-in- app-purchases-iphone-ipad-apple-tv-change)

</comment></comment></comment></comment></comment></comment></comment><comment><USER32> I am a former App-dev. I hope Apple burn in hell for that 30% scam. Daylight robbery, should be ordered to pay back atleast 5 years back.

<comment><USER33> An argument I've heard is that - looking back to the 1990s when software was sold in boxes in retail stores - was that the publisher, packager, retailer, credit-card processor, et al. combined would take 60%+ - so Apple's 30% means we're getting a good deal...

I suppose I'd be okay with a 30% fee if Apple _didn 't_ charge us $99 to maintain a developer account... I thought the $99 was meant to cover the costs of curating the Apple App Store, so what __added-value __does the 30% cover then?

<comment><USER7> >I suppose I'd be okay with a 30% fee if Apple didn't charge us $99 to maintain a developer account

Those two things aren't remotely equivalent. $100 for a dev account is peanuts. It's there to support the iOS dev ecosystem and isn't unreasonable. It should be a non-issue. 30% of app revenue, on the other hand, equates to thousands or millions of dollars depending on how popular your app is. That actually makes a material difference.

<comment> t-writescode But isn't 30% approximately the same you'll see portioned out from you if you put your game on Steam?

<comment><USER34> But Valve let's all developers generate as much free keys as they want to sell on other platforms and doesn't require devs to route all in-game transactions through Steam.

</comment></comment></comment></comment></comment><comment><USER35> What really needs to be done, without "planning the market": Require browser engine competition. This can be legally valid considering that the web itself is an essential utility, since a lot of government functions go through it. App stores are not essential (and i hope they ll never be). Therefore, access to the web should be high priority and high quality, therefore browser engine freedom is sine qua non. This could lead to a virtuous cycle of finally making web apps work well on iOS, which will also break the chains of many developers.

The web is our common , open platform that nobody owns. We should be protecting it in the mobile market

Let apple own their app store, but not to the detriment of the web

</comment><comment><USER36> Personally I'm happy to pay 30% higher prices for better integration, comfort and security. But at the same time this shouldn't be forced on everyone. There's tons of people that prefer worse experience to save money.

<comment><USER37> How is having a choice a worst experience? Can you even use Firefox on iOS? I don't know how Apple gets away with so much... maybe because of all the politicians that they are legally allowed to buy?

</comment></comment><comment><USER38> I think this is a very good start. The iOS ecosystem is a lot more monopolistic compared to android. And before someone says iOS is not a majority of the market, it easily is in several countries. In iOS, you can't even make your own browser, and neither set your webkit wrapper as default.

</comment><comment><USER39> This continues to be a complete embarrassment for the United States. We should've regulated Google, and we should've regulated Apple. But our federal government is so corrupt that an outside entity is having to do it for us.

Epic Games has already stated they'd like to be able to launch an app store on iOS just as they intend to do on Android, so competitors will be lining up if Apple is forced to tear down the walls.

And after switching from other platforms, I always found it a bit of a shock when I'd be on an app like Vudu, and find myself unable to buy things, unless I popped over to the website.

<comment><USER15> The Epic Games that gives free distribution when you use their other product, UE4? The Epic Games that buys exclusives away from other markets by pushing a boatload of money into some games, money they got from a third product: Fortnite.

Sounds they will do great as a phone app distributor.

<comment><USER39> Every single avenue is open: Developers can decide whether or not to use Unreal Engine, and still use the Epic Store. Developers can decide whether or not to use the Epic Store, and still release on any other platform. They also let you use any payment provider you want. You can take Unreal games and sell them on Steam. You can take Unreal games and pile Steam's services layer into them.

I get that Epic has earned a bunch of butthurt from gamers because they... offered developers money... but this is fundamentally opposite to the behaviors of Apple and Google, where their 30% app tax is compulsory, and use of their services is mandatory.

</comment></comment></comment><comment><USER40> I only want Apple to stop forcing IAP down my throat as a developer of an app the has zero benefit from the app store.

</comment><comment><USER41> As a European I just feel "finally". It's time for this kind of monopolistic behaviors to stop.

</comment><comment><USER42> Finally!

</comment><comment><USER43> finally!

</comment><comment><USER44> Nice to see EU going corporations errands instead of the looming homelessness, bombings and income inequality.

Maybe Spotify could spend of their billions to make their own device and platform instead of going through a "criminal" organization pretending to care about people but just caring about business interests because their consumer tech startup just amount to tiny square but slightly rounded cornered icons on devices made in Japan, Korea, China and the U.S.</comment>


Finding good bets in the lottery, and why you shouldn't take them - <AUTHOR> http://www.mathcs.emory.edu/~skip/lottery/lottery.html

<comment><AUTHOR> I heard Aaron interviewed yesterday about tonight's $450M lottery drawing. He wrote this article for American Mathematical Monthly (3 yrs ago)...</comment>


Policing the power of tech giants - <AUTHOR> https://www.axios.com/the-growing-antitrust-concerns-about-u-s-tech-giants-2433870013.html <comment><USER2> There was a time when Microsoft was deemed too powerful, with incessant calls from pundits for antitrust authorities to step in and break up the company. I believe it is widely accepted now that the pundits/regulators were dead wrong then as they are wrong now. We should trust that the markets will work their magic.

<comment> wu-ikkyu >trust that the markets will work their magic.

Mythologies aside, this statement falsely assumes that the big tech giants aren't already propped up by the enacted laws of the government.

<comment><USER3> Net neutrality. copyright. DMCA. software patents. EU tax laws. sales tax exemptions. capital gains tax laws.

</comment></comment></comment><comment><USER4> I'm sorry but this anti-trust saber rattling smacks of blatant jealousy. While it is important to vigilantly protect consumer rights and the ability for smaller companies to compete with larger ones, the primary transgressions I'm hearing about are the fact that these companies are worth too much money and the people that work there get paid way more than I do. Traditional East Coast power centers can't stand the rising financial and political power of the West Coast. Europe is essentially trying to weaken the power base of Silicon Valley so they can have a bigger piece of the pie. And non tech workers that hear only about the glitz and glamour of 20 something silicon valley millionaires while struggling to make ends meet think to themselves "that's not fair, they shouldn't make all that money - I want some too!"

Obviously we should watch these companies (and any other company) for anti- competitive behavior and consumer rights abuses. But just because your business model and ability to execute are wildly successful doesn't mean you are breaking the law. Nobody is going to out compete these large companies at their own game, it's up to startups to shift the paradigm and introduce a brand new game the big boys don't know how to play. And remember, we as consumers signed up for the "free" internet and willingly use services in exchange for our personal data. I don't like that deal myself but I don't think the solution will come in the form of government regulators.</comment>


Show HN: Excel Price Feed – Live and Streaming Financial Prices in Excel - <AUTHOR> https://www.excelpricefeed.com <comment><AUTHOR> Developer here: I've built an Excel Add-In which feeds live financial data to cells via simple formulas. It currently sources data from Yahoo Finance and IG Index, I am working on other data providers.

For example to populate a cell with the latest Apple stock price: =EPF.Yahoo.Price("AAPL")

For brokers, such as IG Index you can download historical data for analysis, submit trades and stream real-time prices to cells.

I have some users using it to automatically keep track of the value of their portfolio across different brokers and I'm also helping one guy working on an automated trading system in Excel.

Here's a tutorial on using it to build a realtime investment portfolio. [https://www.excelpricefeed.com/tutorials/excel-realtime- stoc...](https://www.excelpricefeed.com/tutorials/excel-realtime-stock-fund- portfolio)

You can try it free for 10 days at [https://www.excelpricefeed.com](https://www.excelpricefeed.com)

Would love to get some feedback!</comment>


Charter Makes $61.3 Billion Offer to Acquire Time Warner Cable - <AUTHOR> http://www.bloomberg.com/news/2014-01-13/charter-makes-61-3-billion-offer-to-acquire-time-warner-cable.html

<comment><USER2> But will this get me BBC America in HD?</comment>


Pitfalls of Callback-Based APIs - <AUTHOR> http://thelig.ht/callbacks/

<comment><USER2> I think not just callbacks, which are currently a focus due to promise love, have many balancing ranges that programmers have to operate in to prevent technical debt and spaghetti code.

That is why programming is hard. Programming takes thought, design, planning, and why programmers aren't a factory line where you can just add a bunch in. Programming is solving tough problems and making them easier using good balance for time, budget, maintenance, integration and more.

Careful nuances, balances, structures, flow and many other things can be disrupted if programming is treated incorrectly or with lack of care from too many cooks, too much pressure, or not enough prototyping. This problem will always exist, good individuals and teams will always know there is no all encompassing fix from some new tech, there will always be the balance that determines success using all advancements at your disposal that help you and consistently improving that. The design has to continually keep up with the evolution of the project.

</comment><comment><USER3> This article reads like a mind dump lacking a cohesive narrative... I mean look at how the author closes the article:

> This article isn't really about callbacks and it isn't even really about > APIs.

Well then, perhaps you should have named the article something else...?

<comment><USER4> I thought it was a good narrative, stepping through the problem, the ending with the realization that there was no solution.

The essential problem is that any program which can incorporate arbitrary recursion is subject to the halting problem. The seemingly simple initial fixes, like a lock or asynchronous callback queue, can improve things. The author proposes third-party code analysis tools to help; I'm less sure of that. The Gödel dragon is not easily pushed back, and we often accidentally create Turing machines.

I think the title's fine. It's better than "Callbacks and the Halting Problem", since most of the essay covers, after all, "Pitfalls of Callback- Based APIs".

<comment> peter-fogg In this case, the dragon is slain without much trouble. In LVish ([https://github.com/iu-parfunc/lvars](https://github.com/iu-parfunc/lvars)) we've got an effect-tracking system that allows us to ensure determinism (read more here: [http://www.cs.indiana.edu/~lkuper/papers/dissertation- draft-...](http://www.cs.indiana.edu/~lkuper/papers/dissertation-draft- latest.pdf)). This would be pretty easily extended to only allow computations that are safe to log. And this is all in GHC Haskell! No external static analysis is necessary; the compiler can do it for us.

<comment><USER4> The dragon cannot be slain, only pushed back. It is the halting problem.

Yes, further automated analysis can find some of these problem. That's what the author of the essay proposes, and it's good to know that there are some solutions.

Let's go down the road further and expand the system so there are multiple loggers, and where subsystem logger configuration via an external configuration file occurs at run-time. Some configurations are acyclic, others are not.

This could be prohibited by edict - if a program cannot be analyzed then it's not valid. As the essay points out, there are also formal verification techniques - and that very few people use them. As I pointed out, it's surprisingly easy to make a Turing machine by accident. (See [http://beza1e1.tuxen.de/articles/accidentally_turing_complet...](http://beza1e1.tuxen.de/articles/accidentally_turing_complete.html) and its HN comments [https://news.ycombinator.com/item?id=6577671](https://news.ycombinator.com/item?id=6577671) .)

In practice then, it's very unlikely that most complex software will be able to use these tools, because it's hard to restrict the solution space to what those tools can analyze.

Here there be dragons.

</comment></comment></comment></comment><comment><USER5> I find it impossible to take seriously any argument that claims to be true in general, but where the only example given is logging.

Logging is weird and special, running at unusual times in unusual states, and therefore has unusual requirements.

So, yeah, having a pile of arbitrary functions that your logger can call is not really going to work. But if this were a "notify when a comment is posted" example, the author would really struggle to find problems with that same approach, because that's a much safer operation that happens in a more predictable way than logging is.

The only real takeaway from this article is "be careful with your logging implementation," but hopefully you already knew that.

</comment><comment><USER6> Not a very convincing example. A component provides a callback, and then the callback ends up using the same DB access mechanism that the component is using? Or the same lock? I mean, is it providing a callback to itself? Layering the code, or isolating the component from those who subscribe these unpredictable callbacks seem kind of obvious to me, and would prevent all of this. The author is right, though - there is something to take away from this, but I think it's simply the importance of clean separation of concerns. Or, the importance of good factoring, if I'm using the word correctly? Other than that, we're entering the realm of the eternal programmers' dream: programs that write themselves...

</comment><comment><USER7> Mark S. Miller wrote his dissertation [http://www.erights.org/talks/thesis/](http://www.erights.org/talks/thesis/) in large part on expanding the "deferred callback" pattern this article recommends, including explaining how to make it applicable when it doesn't seem to be applicable. His solution is based on a sort of ultra-fundamentalist object-orientation approach, even though (as I pointed out in another thread) normal object-orientation makes these problems worse rather than better.

I don't think the "Pure Solution" mentioned in the article works. The only effect of a pure function is to compute its return value, so not only is it safe to invoke pure functions as callbacks, it's also perfectly useless — you can't tell whether it even got invoked or not. (Rian in another thread argues that qsort's comparison function is a "callback", but I don't think that's what people usually mean by "callbacks".)

<comment><AUTHOR> Just curious, how would you describe what most people usually mean by "callbacks"?

I've always considered function arguments to functions like qsort() as callbacks, and from my interpretation of Wikipedia it seems to agree. Now I wonder if my interpretation has been overly general or if a more specific interpretation has become more commonplace.

<comment><USER8> While my impulse was to agree with you, I think there might be a worthwhile distinction to be made here. If so, we all need to be a bit clearer on it.

If qsort's comparison function is a callback, is that true of any function argument to any higher-order function? If so, why the additional term? If not, what makes a function passed as argument a "callback"?

<comment><USER7> When I read "callback", I interpret it as "function argument to be invoked to deliver a notification to a user-specified place". For example, to tell you that your transaction has completed, that your network connection was broken, that your write failed, that a log message is available, etc. Typically a callback returns no useful result and takes one argument, but sometimes takes no arguments, and in systems that don't have closures (like C) it typically takes an additional argument supplied along with the function pointer.

<comment><USER8> I think that's pretty reasonable.

</comment></comment></comment></comment></comment><comment><USER9> Except that this is not a callback issue. It's an issue of circular dependencies - callbacks are merely the chosen dependency injection vehicle for this particular item.

The message pumping example the author gives has the exact same issue. The core here is that two items (database & logger) are mutually dependant. That will always be an issue. It doesn't matter if your promises are circularly dependant, your context objects, your callbacks, or your globals.

Static analysis won't help - fully resolving circular dependencies is equivalent to solving the halting problem, IIRC.

And so the only way to prevent those dependencies is to constrain the design in a way that prevents circular dependencies. That's where the ad-hoc rules mentioned in the article stem from. They artificially restrain the problem space to prevent (classes of) circular dependencies.

<comment><AUTHOR> Yes, the core issue in the database logger example is that it's a circular dependency.

The point of the article is that callback-based APIs like this obscure the actual problems (like circular dependencies).

You're right that constrained designs prevents issues like these but callback- based APIs aren't inherently constrained. They allow anything to happen, which is why they conversely _encourage_ errors like these (and are subject to pitfalls).

<comment><USER9> What would be an inherently constrained API, then? I've successfully managed to create circular dependencies in quite a few different styles, so I'd love to find one that saves me from myself ;)

<comment><AUTHOR> Maybe inherently was the wrong word. Though you can imagine a logger API that was like this:

        typedef enum {
            CONSOLE_LOGGER,
            DATABASE_LOGGER,
            /* etc. */
        } LoggerType;

        void add_logger(LoggerType);

In this API you're constrained by what loggers you can add. It's not the totally unchecked free-for-all that a callback-based API provides. The user is strictly unable to shoot themselves in the foot.

But this limits the expressive power that callbacks provide. Sorry I don't have any other API recommendations. The only way I can think of to stay expressive while safeguarding against unintended abuse is to include code analysis.

</comment></comment></comment></comment><comment><USER10> Note that the queue doesn't fix the original database logging problem. The original form is still an infinite loop, the queue just makes it slightly less noticeable.

<comment><USER4> To make it noticeable, have the database's save_document() log a "saved element to database" message.

</comment></comment><comment><USER11> I find that promises are an elegant dependency resolution mechanism when requesting a resource asynchronously from disparate parts of an application. Promises still rely on callbacks, so the initial pitfall of calling `log()` in `get_database_handle()` could still happen. The main failure I see is that `log()` is called before the function has a chance to change the state of the application to reflect the fact that the resource is already being requested. Instead of creating a new variable to store the state of the request before logging, store a new promise, log, then resolve the promise.

</comment><comment><USER12> > Time passes and your application becomes multi-threaded.

Is it realistic to think that any app starting with a bunch of assumptions about being single-threaded can ever just "become multi-threaded" without bloodshed?

<comment><USER13> Sure. E.g., AppKit on OS X is in general not thread-safe (still), and for many years apps were almost exclusively single-threaded. But apps and frameworks could occasionally spin up threads as long as they were guaranteed to do work in some bounded set of functions (i.e., as long as they were sure not to call into AppKit to update the UI...). So while the author's example is a bit contrived, I can see where it came from.

</comment></comment><comment><USER14> "Pure functions have no impact on any runtime state and that makes them always safe to invoke as a callback."

It also makes them UNIVERSALLY USELESS. Think about it: a function that definitionally has no side-effects is being called _solely_ for its side- effects.

The article using that to wrap up makes it the equivalent of a complicated category theory proof that successfully proves that the empty set has TONS of amazing properties...

<comment><AUTHOR> Pure callbacks aren't universally useless. For instance, the qsort() API can use pure synchronous callbacks effectively: [http://linux.die.net/man/3/qsort](http://linux.die.net/man/3/qsort)

The article doesn't advocate always requiring pure callbacks. It's just offered as one possible way to make it easy to reason about the correctness of using an callback API.

</comment></comment><comment><USER15> I don't see how you can ever pin problems with mutexes to callbacks. The author seems to confuse multi threading with callbacks. His example seems more like a mistake in recursion and improper structuring than something that went wrong because of callbacks. It's not the callbacks fault that you try to acquire the same lock twice.

<comment><AUTHOR> Yeah problems with mutexes are ultimately the fault of the programmer.

The point that the article is trying to make is that because callback APIs don't expose their correctness requirements and because their correctness requirements are externally defined, they _encourage_ programming error like this.

</comment></comment><comment><USER16> This article feels like it is talking about the pitfalls of not using OO principles (e.g. types, encapsulation).

I won't shed a tear if callback-hells are replaced by proper async APIs (like in Stream and Future-based dart:async, or the Thenable in the new JS standards), but this article seems to be misalinged.

Downvoters: care to elaborate?

<comment><USER4> I'll take a stab at elaborating.

The essay is about callback-based APIs, so types and encapsulation are out of scope from the start. It then expands the scope and observes that OO principles don't address the points covered. For example, it says that one of the "magic" requirements would be a way to state: "Do not add a callback that calls log() or acquires any locks held while log() is called." There is no type for that.

Other than pure functional code, there's no way to do that.

The essential equivalent for a multi-actor system is deadlock prevention. OO principles don't help there either.

You can get the problem with a stream. Consider a logger stream, where the listener opens a database connection to save the value then closes it, and the database adds 'open' and 'close' events to the logger stream. This will lead to an geometric explosion of events on the stream, because nothing at the API level says you shouldn't put those pieces together that way, other than the documentation.

I could go into the OO details of how this stream might be implemented in Dart, but really the OO nature of the stream API obscures the essential self- referential nature of the problem.

You can propose an equivalent counter-example if you want to demonstrate that those APIs really do solve the problem. I happen to agree with the well- written essay, and OO principles or "proper async APIs" solve nothing.

<comment><USER17> Promises are single assignment, so they solve the problem. As soon as they resolve, they're safe. Calls to them don't happen until they resolve. If you want to change the logger, you use streams, which will handle safe replacement for you (flatmap).

We do some crazy async HPC code, and during on-boarding, new members invariably get some initialization / error handling wrong with raw callbacks, and convert pretty quick to FRP after that. Unstructured async is crazy.

<comment><USER4> Yes, the example problem doesn't match to promises.

I don't understand the "change the logger" comment. The example was the logger sends a message to the listener, which opens a database handle, which sends a message to the logger, and repeat. There's nothing to changing. I don't see how FRP helps eliminate that cycle.

<comment><USER17> This might be what's happening, which would surface as no sensible declaration ordering:

//try making the logger first

var logger = require('myLogger')(backends);

var listener1 = require('mySync')(logger);

var backends = Rx.Observable.fromArray([listener1, listener2]);

//try making the backends first

var listener1 = require('mySync')(logger);

var backends = Rx.Observable.fromArray([listener1, listener2]);

var logger = require('myLogger')(backends);

From there, you'd switch to unsafe FRP methods (imperatively injecting into event streams, e.g., Subjects in Rx), which is the warning sign of weird cyclic behavior.</comment></comment></comment></comment></comment>


Why I only work remotely - <AUTHOR> https://medium.com/@yanismydj/why-i-only-work-remotely-2e5eb07ae28f#.485pp6c0d <comment><USER2> Previous discussion (from 6 days ago): [https://news.ycombinator.com/item?id=13230508](https://news.ycombinator.com/item?id=13230508)

</comment><comment><USER3> The most damning condemnation of the open office is its exclusively for trendy paid corporate work. Nobody ever told a student to work on a term paper at a singles bar. No open source guidelines book ever claimed open source software can't be written unless the author sits at a table in the middle of a wild day care center. No one teaching themselves anything ever heard they'll never learn in a quiet room, they need to try and learn at a Katy Perry concert.

Another topic often missed is megacorporations work remotely all the time. In fact I've never met most of the people I work with because they live all over the country, and I work with hardware all over the country, in fact I'm working on a (private) cloud image later today and I'm not even sure what state its physically located in. If the corporation says you're going to work remotely because that outside contractor is 1000 miles away or that director lives 1000 miles the other way, its obviously inherently correct because the corporation said it. But if a mere human being says something similar about his work environment, its obviously wrong because only corporations can be correct. If my boss says she's going to be 100 miles away thats great, if I say my boss is going to be 100 miles away thats inherently evil and must be suppressed.

<comment><USER4> > Nobody ever told a student to work on a term paper at a singles bar.

Counterexample: In college I did most of my work in our library, which was of course an open layout.

<comment><USER5> Libraries have slightly different rules to the average open plan office: in particular, there's a fairly strong expectation of silence and if you _can_ hear people talking in the distance, it's relatively unlikely that the conversation directly affects your project -- so less of an urge to tune in.

There are often (although, I know, not always) some kind of alcoves to hide if you don't like open-back visibility, too.

(Some of the "positive" reports I've heard about open offices at, e.g., Facebook make it sound like they come with expectations of quiet that are as strong as a typical library. ...)

</comment></comment></comment><comment><USER6> An article with sources!!! Love it.

I have been remote for about 7 years now. Was in the office for 2 weeks when I moved for new hire training, that is it. Entertained a few positions at other companies that paid about the same but wanted me to drive 10-15 miles one way (about 30-45 minutes due to rush hour). No thanks! Surprised author did not say anything about that lost productivity, not to mention I have always viewed driving to/from work as a business expense yet Big Corp doesn't agree.

Glad author talked about how some people like the office, some people are good at it, while others are best at home. Just like everything else, everyone is different.

I will view the rest of my career as successful if:

1) I don't have to go to an office everyday

2) I never have to be on-call

</comment><comment><USER7> I agree with much of what the author says, but think it's worth mentioning:

1\. There are people who work better in an office than at home, I am one of them, my home is a place to relax and not think about work, and my workplace is a place to concentrate and not relax, the boundary helps me keep the right work life balance.

2\. Open offices can be good. We have an open office for space reasons (not enough space to have cubicles or separate rooms), but design it for software engineers so it's very quiet for the majority of the time.

<comment><USER3> Why is it good to make them sit in a quiet library as long as its a silent quiet library not of their choice?

Cost of space is penny wise and pound foolish. If you're paying $200K all up with bennies vs the dev is generating maybe $1M of revenue, if a better working environment makes them 1% more productive or 1% less unproductive, that means it makes sense financially as long as it costs less than $1K/month for the extra space. Treating employees better than prisoners or factory farmed meat is more expensive, but not $1K/month/employee expensive.

Its like "saving money" by giving employees flipped over 5 gallon buckets to sit on instead of chairs, or forcing them to use 00s decade laptops instead of new ones. Or an even better analogy is its like saving on labor costs by hiring the absolute bottom of the barrel instead of the top rockstars. If you thought you were saving money by providing an inadequate work environment, wait until you're saving money by hiring people who can't fizzbuzz or even helloworld. You'll really be rolling in the savings then.

</comment></comment><comment><USER8> After reading the article, one word comes in mind: flexibility. It's really about you and your employer/fellow employees coming together to find out what works and what doesn't. Everyone is different and everyone has different needs.

The author talks a lot of "I". "I am this...", "I cannot this..." etc. While these articles are interesting, I would love to hear the counter-side.

Is the overall efficiency of the team lacking because some people are full- time remotely? How do the people who go to the office feel about working with the remote engineers?

<comment><USER9> author here: totally agree with flexibility, that's really what I'm advocating. That being said, I'm speaking (publicly) about a change I've decided to make in my career (only working remotely) and the reasons I came to that conclusion.

I am definitely not advocating everyone be forced to work remotely. I just think people should have the freedom to work the way they see best for themselves and organizations should be open minded about that.

</comment></comment><comment><USER10> Reminds me of this Kunth quote about why he stopped checking email... "Email is a wonderful thing for people whose role in life is to be on top of things. But not for me; my role is to be on the bottom of things. What I do takes long hours of studying and uninterruptible concentration."

        http://www-cs-faculty.stanford.edu/~uno/email.html

Open offices (loud, busy, chaotic) should be used for people who need to be on-top of things. They are not for developers or IT/Network technologists who need time to think, solve problems and collaborate quietly.

</comment><comment><USER11> My home office has a $3000 computer, $600 chair, high end keyboard and mouse, a huge 4k screen. My office temperature is at the optimal for my body and my setup is positioned according to the sun coming in the window.

At work it usually* is a $600 computer, a $60 chair, low end dirty keyboard and mouse, small low quality screen. The office is cold, I have glare in my screens... and I share a room with 60 persons.

It's hilarious how my personal setup outclass my professional one.

* I am lucky enough to have found an employer which value his employees and that's not the case right now for me.

</comment><comment><USER12> By the way, when exactly did this hate for open offices started? I remember everyone hating on cubicles and preaching open offices, now it flipped back?

<comment><USER13> IMO the best office are old houses even if it is not remote.

I'm from New England and I hate "open concept" design.

I like cozy pockets, wood floors, oriental rugs, steam heating, and in general old designs.

I like mazes of interconnecting rooms with low yellow light coming out of sconces.

None of this overhead white sunlight crap.

Despite that I prefer the new bamboo floor open offices any day to the office- space-ugly-color-wall-to-wall-carpet-florescent-overhead-cubicle-fest of yesteryear.

<comment><USER14> Lighting actually makes a very significant difference in my opinion. I absolutely hate overhead fluorescent lighting, and really most forms of direct lighting. Actual daylight from outside is okay, as is soft lighting reflected from walls/ceiling. At work we have never turned on the overhead lights, just used floor and desk lamps.

It seems like many of the people planning offices don't even consider lighting.. they just by default put in a drop ceiling with 4x2 flourescent light banks. It's not like it even costs much more to do, well, nearly anything else and it makes a significant improvement to the office environment.

<comment><USER13> Totally agree. Just to clarify when I was referring to sunlight I meant the crappy overhead lights that try to "imitate" sunlight and not the actual sunlight.

However while I generally like sunlight I find it a little too variable for my liking particularly if your region has seasons. On a cloudy winter day in New England sunlight can have a white dreary look that is sort of depressing.

</comment></comment></comment></comment><comment><USER15> Exactly this. I've been doing this for over a decade now for all the same reasons.

When I chose to work 'on the internet' back in about '94, I did it so I could work for "anyone, anywhere, anywhen".

I've also done my fair share of open plan offices and they're just far too distracting.

Gaining your employer's trust is the main thing. And you can do that simply by getting the job done on time - or sooner. Also, they can see your commits, if you use Gitlab or similar, so it's clear you're being productive, whatever the hour or location.

</comment><comment><USER16> I work from home now and love it. I'm not saying I won't ever go back to an office, but I absolutely never will work in open office again.

</comment><comment><USER17> I've found that the best argument for working remotely is simple: "because I can."

</comment><comment><USER18> If you're stuck in an open-office situation, investing in a good pair of wireless noise-cancelling headphones like the Sennheiser Momentum 2 or equivalent might help cut out all the 'collaboration'-related noise so that you can actually get some work done.

You don't have to listen to music or whatever - just turn them on for the noise-cancelling functionality.

</comment><comment><USER19> Disclaimer: Only splitting hairs here with my bare hand. But, as far as broken semantic concepts go, "the least optimal" is somewhat entertaining. Two opposite superlatives plugged together — is the sum total of that supposed to be "mediocre"? Otherwise, "the worst" would have been much clearer.</comment>


Ask HN: Hosted email alternatives to Gmail for Domains? - <AUTHOR> We've been having a lot of issues lately with Gmail, related to their connection and data transfer limits.  We're too small to have the resources to maintain our own mail server even if we had the know-how in house.  What alternatives are people using for hosted email? <comment><USER2> I've used both fastmail.com and pobox.com (who are now actually one company, although their systems remain separate).

They're both good.

</comment><comment><USER3> office365 is the primary alternative. There are other smaller hosted exchange environments that are either resellers, or that have their own model. It really depends on what you need.

<comment><USER4> Link to tutorial: [http://business.tutsplus.com/articles/setting-up-a-hosted- em...](http://business.tutsplus.com/articles/setting-up-a-hosted-email- solution-with-microsoft-office-365--fsw-40400)

</comment></comment><comment><USER5> Office365, Zoho, Fastmail</comment>


Show HN: Fion – A personal finance search engine - <AUTHOR> https://www.fion.co/ <comment><USER2> Be careful when launching in France as "fion" means "ass" there -literally.

You could rename it "filon" which is a french word that figuratively translates to a wealthy source of information.

Cheer up and keep going !

</comment><comment><AUTHOR> Hi everyone.

We noticed it's surprisingly hard to answer some simple questions about our finances. Although personal finance and budgeting tools exist, we wanted an easy way to search our transactions that didn't involve creating and maintaining a budget.

Fion is a new personal finance app that lets you search your spending, across all your cards.

We're still in early access, but we're excited to show the HN community a preview of what's to come.

-The Fion Team</comment>


"What Do You Consider the Most Interesting Recent [Scientific] News?" - <AUTHOR> https://edge.org/responses/what-do-you-consider-the-most-interesting-recent-scientific-news-what-makes-it <comment><USER2> This has been posted many times ([https://hn.algolia.com/?query=%22What%20Do%20You%20Consider%...](https://hn.algolia.com/?query=%22What%20Do%20You%20Consider%20the%20Most%20Interesting%20Recent%20%5BScientific%5D%20News%3F%22&sort=byDate&dateRange=all&type=story&storyText=false&prefix&page=0)) and there have been several major threads about articles in the set ([https://hn.algolia.com/?query=edge.org%20points%3E10&sort=by...](https://hn.algolia.com/?query=edge.org%20points%3E10&sort=byDate&dateRange=all&type=story&storyText=false&prefix&page=0)).

It's a good idea to check for recent submissions before posting from a domain: [https://news.ycombinator.com/from?site=edge.org](https://news.ycombinator.com/from?site=edge.org).</comment>


"Devil Girl from Mars": Why I Write Science Fiction (1998) - <AUTHOR> http://web.mit.edu/m-i-t/articles/butler_talk_index.html <comment><USER2> This page is surprisingly belligerent to modern reader apps even if you navigate past Frame issues. Pocket, Instapaper, Safari, Firefox reader view, none of them can parse this correctly.

If you look past it all and actually read it, you'll find this gem of a passage.

 _Beware! All too often, we say what we hear others say. We see what we are permitted to see. Much worse, we see what we 're told that we see. Repetition and pride are the keys to this. To hear or to see even an obvious lie again and again and again, is to say it, almost by reflex, and then to defend it because we have said it, and to embrace what we've defended. Thus without thought or intent, we make mere echoes of ourselves and we say what we hear others say._

<comment><USER3> Your opening comment is an interesting viewpoint, and, in particular, you have made an interesting choice of adjective, as it is one that ascribes intent. If I am understanding the Wayback Machine correctly, this page has been essentially like this at least since February 2002, yet it would seem that its author was acting in a hostile manner by not anticipating the limitations of modern reader apps - or perhaps the site administrator is at fault, for leaving it out there as a trap for an unsuspecting modern app user?

looking past this, I see that the passage you quote is indeed insightful.

<comment><USER2> Hmmm re-reading my comment, it does seem to put blame on the page. However, I wouldn't expect relic of the past to be changed or maintained (cost obviously). It just came as a surprise that big wall of text couldn't be parsed by modern apps.

I expected modern parsers to be more clever. This article is a table like many webpages were in the first decade. Wondering how we can improve readability of such pages? May be the size of raw text ratio or something clever that considers how the page is _rendered_ and extract key information.

Edit: Instapaper parsed it very well in the end!

<comment><USER4> I didn't have issues with it and by no means is it the most egregious of the 90s - it was just designed for more or less fixed CRT assumptions. It would be say 800x600 or so as a screen.

While smaller in resolution the screens were at least about a standard sheet of printer paper and almost square.

I have gotten into a masochistic retrogames on Linux with minimal support and you see a lot of things that need emulation because design assumptions that were no brainers didn't hold long term back when Moore's law also applied to clock speeds and multicore was really niche.

</comment></comment></comment></comment><comment><USER5> Lots of interesting bits in here, and some parts very prescient. The more interesting thoughts to me were near the end: "throw-away workers", and the last quote on "truth".

<comment><USER6> As a developer who does not need to seek work, due to well known previous work, I am dismayed as my friends are unable to acquire staff positions and are all "disposable workers" \- long term freelance with no benefits.

That last quote on Truth is quite damning.</comment></comment>


Why Tech Philanthropy Doesn't Help Silicon Valley - <AUTHOR> https://www.theatlantic.com/technology/archive/2018/05/silicon-valley-community-foundation-philanthropy/560216/?single_page=true <comment><USER2> "Philanthropy", heavy emphasis on the air-quotes.</comment>


Psychic Healing at the End of History - <AUTHOR> https://thebaffler.com/latest/psychic-healing-at-the-end-of-history-gais <comment><USER2> See also, "lenin was a mushroom": [https://en.wikipedia.org/wiki/Lenin_was_a_mushroom](https://en.wikipedia.org/wiki/Lenin_was_a_mushroom)

<comment><USER3> Or the resurgence of Evangelical Christian mysticism as a political force in America...

<comment><USER4> Jesus was a mushroom[1]

[https://en.wikipedia.org/wiki/The_Sacred_Mushroom_and_the_Cr...](https://en.wikipedia.org/wiki/The_Sacred_Mushroom_and_the_Cross)</comment></comment></comment>


Thingd is building a structured database of every object in the world - <AUTHOR> http://erlebacher.org/2010/10/08/the-next-big-thingd/

<comment><USER2> >[signing in]: _It's easy: just connect your Facebook or Twitter account_ [and no other means]

So "easy" is not allowing me to make a login _not_ tied to everything else.

Anyone with an account care to inform me / us what you can do with an account? Just like / want it, or add thingds, or...? I'm interested, but the site contains no info _about_ the site aside from the TOS and privacy policy.

I should really make a throw-away set of accounts on a handful of social sites, just to get around crap like this. If they allowed straight OAuth or OpenID instead of _Twitter_ -hosted OAuth, maybe I'd use it. But nobody does that.

<comment><USER3> Plus they ask for an email address/password during registration which nullifies any possible gain of a quick registration.

You can unlink any both Facebook and Twitter after registration.

<comment> mike-cardwell After they've gathered whatever information they can from you by having access to your Facebook profile or Twitter stream.

</comment></comment></comment><comment><USER4> Joel Spolsky predicted this project 10 years ago :)

"When you go too far up, abstraction-wise, you run out of oxygen. Sometimes smart thinkers just don't know when to stop, and they create these absurd, all-encompassing, high-level pictures of the universe that are all good and fine, but don't actually mean anything at all."

<http://www.joelonsoftware.com/articles/fog0000000018.html>

</comment><comment><USER5> Any website or web service with a database of "things" (with attributes) is a competitor to Thingd: WorldCat, IMDB, gdgt, Google Merchant Center, Zappos, CNET reviews, Etsy...

Good luck Thingd --- you'll need it!

</comment><comment><USER6> It's one of those ideas that seem so obvious and that has the potential to change the world, but it is _highly_ dependent of having critical mass. Technologically, it is very simple to implement it. One doesn't need much more than something like CouchDB, and you could have users changing things even from the admin interface.

With job4dev (shameless plug), we have something very similar, applied to job listings and company info. We created a "wikipedia for jobs", but lots of the curating needs to be done by hand. We are automating as much as we can, using as many APIs as possible, but there's still the need for human involvement.

The problem is, you need to have people _wanting_ to use this. It's the ultimate chicken-and-egg problem. I could see this working if there is some sort of incentive, or even if it ties itself to Mechanical Turk. Without that, it is no different than Freebase, dbpedia, or Aaron's Infogami.

</comment><comment><USER7> How's this better than Freebase or dbpedia?

<comment><USER8> freebase and dbpedia are tied to wikipedia wiki articles about concepts and they seem to be trying to do products.. different data domain I don't know which one is "better" but this seems to have commercial tie-ins where wikipedia might not.

<comment><USER9> Freebase was seeded with Wikipedia, but we're always loading data from new license compatible sources. We've got books from Stanford Library, music from MusicBrainz, films from Netflix, and a lot more.

We don't have good coverage of product data right now though.

</comment></comment></comment><comment><USER10> Thinglink ( <http://thinglink.com> ) has tried several approaches in this space. Originally they offered this very abstract kind of "URL for things" service, then they pivoted to be more a social network around things, then they pivoted to be a social network for designers and people who like designer clothes and other designer objects.

Now, their final pivot was in my opinion marvelous, as it went to very basics and offered a super-simple service to tag things in photographs. It's still operating in a same space "to URLify real world objects", but it offers an immediately useful service, for example for fashion bloggers.

</comment><comment><USER11> This reminds me of Bruce Sterling's "Internet of Things."

<http://en.wikipedia.org/wiki/Internet_of_Things>

[http://video.google.com/videoplay?docid=-3857739359956666768...](http://video.google.com/videoplay?docid=-3857739359956666768#)

</comment><comment><USER12> At the very heart of it, it could map every object to its BOM including carbon based lifeforms. Imagine if every object were a class, including humans. The atom could be a basic super class, and you could map out various dependencies and object superclasses (e.g, Oxygen < Atom < Base). And it might even work with non physical things (Capitalism < EconomicTheories).

<comment><USER13> Does it support multiple inheritance? For example, water is made up of two elements.

<comment><USER14> Water is _composed_ of two elements, nature, like good programmers, prefers composition to inheritance.

<comment><USER15> I have both a Mother and a Father.

Obviously nature has a bit left to learn.

<comment><USER14> No, there's a time and place for inheritance, just not as often as composition.

</comment></comment></comment></comment></comment><comment><USER16> All these tags mean the same thing to me.

3.75 inches 3.75 inches tall 3.75 x 3.75 x 5.75 inches 3.75 x 4.5 x 7 inches

The problem with human entered / non moderated data is that these lists will become longer and longer over time and the database will not understand that they all mean the same thing. Joins will be impossible and its relevance fades.

</comment><comment><USER17> Isn't this what semantic web is about?

<comment><USER18> And equally impossible to do in a way that is globally useful.

<comment><USER19> I still believed (or hope) that semantic web is the future of Internet.

If a very particular industry willing to open up their data in standard and extensible format (may be RDF or a simpler standard), like film theater listing their showtimes or governments release their statistical data in RDF rather than Excel only, many useful application could be developed on it and it is a big step towards semantic web already. And I think it is not too hard to do.

<comment><USER7> If RDF's got a problem it's that it's too simple, at least in terms of the functionality it's offered.

It's complicated as hell to do simple things in RDF, but that's a different issue, not the one I struggle with every day.

</comment></comment></comment></comment><comment><USER20> If they don't stop at just describing the _semantic_ knowledge that a person would derive from the experience of objects, but instead also include the _process_ knowledge—in a rigorous, possibly _algorithmic_ form—then it would be the world's biggest MOO.

</comment><comment><USER21> This is very similar to FluidDB (Fluidinfo, the creators of FluidDB have recently closed series A funding with some great backers).

</comment><comment><USER22> How does this compare to Freebase?

<comment><USER8> freebase is structured wikipedia (concepts) this thingd looks more like structured ebay (objects)

</comment></comment><comment><USER23> If only 5th Cell released Objectnaut, they'd have a great start!</comment>


Twitter could be the next Mozilla - <AUTHOR> https://medium.com/swlh/twitter-could-be-the-next-mozilla-e788e3bfd841#.q8lx2go28 <comment><AUTHOR> I wrote this Medium post yesterday after the news broke that Salesforce has walked away from Twitter acquisition talks.

Today I learned that David Levine already had very much the same idea as the one I presented in my post a couple of weeks ago: [https://medium.com/we- progress-by-sharing-ideas/bill-gates-s...](https://medium.com/we-progress-by- sharing-ideas/bill-gates-should-buy-twitter-and-make-it-a-public- utility-f1ddff93144c#.3ll3l3oyy)

</comment><comment><USER2> Yes, let's make this happen! I don't tweet but I use twitter every single day and it's obvious that it has become fundamental to the net. It's worth fighting for, worth donating money to.

More on this:

* [https://www.theguardian.com/commentisfree/2016/sep/29/save-t...](https://www.theguardian.com/commentisfree/2016/sep/29/save-twitter-buy-platform-shared-ownership)

* #buytwitter: [http://internetofownership.net/2016/10/04/a-guide-to-buytwit...](http://internetofownership.net/2016/10/04/a-guide-to-buytwitter/)

</comment><comment><USER3> The way I look at it is this - if Twitter vanished off the internet tomorrow, I might not really care. I'd see fewer articles using (foul|racist|sexist|whatever) tweets as their data set.

But Mozilla? I'd miss them. I use both Firefox and Thunderbird for various things all the time. Mozilla puts out products that I want to use. Twitter just puts out a lot of noise and angry people.

</comment><comment><USER4> The big difference is the Mozilla was driven into the ground by better competition, hence validating the market for a better browser.

Twitter has been so far mostly ignored by tech giants, letting it do its own thing. Nobody else is fighting for that particular market niche.

<comment><USER5> > Mozilla was driven into the ground by better competition

I thought it was Microsoft's anti-competitive strategy? (bundling IE, changing the API's to break netscape, etc.)

<comment><USER6> > > Mozilla was driven into the ground by better competition

> I thought it was Microsoft's anti-competitive strategy? (bundling IE, > changing the API's to break netscape, etc.)

I thought it was Mozilla's utter lack of regard for the their userbase.

<comment><USER5> That came later, after they decided that they preferred politics to market share. (sometime around 2008-09, judging from the TIFF support bug: [https://bugzilla.mozilla.org/show_bug.cgi?id=160261#c39](https://bugzilla.mozilla.org/show_bug.cgi?id=160261#c39))

<comment><USER6> TIFF. It might have been handy in certain instances, but IMHO, it was never been a big deal except in the page-layout world. And even then, having an eps was better.

I missed that cluster of madness for firefox, I guess. Had I known that Mozilla would turn out this way, I would never have donated money. My name is on their full-page NYT ad and poster.

I wonder if they'd give me a refund?</comment></comment></comment></comment></comment>


Ultimate Guide to PostgreSQL Constraints - <AUTHOR> https://begriffs.com/posts/2017-10-21-sql-domain-integrity.html <comment><USER2> From the article: "engineers mistook acceleration readings measured in English units of pound-seconds for a metric measure of force called newton-seconds."

Yikes. Acceleration is change in velocity per unit time, and would be measured in feet/second^2 or meters/second^2. Both pound seconds and newton seconds are measures of momentum (mass times velocity). He then goes on to define a custom domain called "acceleration" but gives it units of "1 m*kg/s".

Seems to know his stuff when it comes to PostgreSQL, but evidently it's been too long since he took a high school physics class.

</comment><comment><USER3> Article title: "PostgreSQL Domain Integrity In Depth"</comment>


App Friday: Why Apple should Gamify the iPhone and the App Store - <AUTHOR> http://recombu.com/apps/app-friday-why-apple-should-gamify-iphone-and-the-app-store_M12227.html

<comment><USER3> I think 'infantilisation' is probably a better term than 'gamification' - <USER2> someone who doesn't play computer games, Epic Win and its ilk look like so many automated Primary School teachers handing out gold stars for listening quietly at story time.

</comment><comment><USER4> I know this probably adds little to the discussion, but I can't get past the word "Gamify".

</comment><comment><USER5> Awesome:)</comment>


A Chinese Company Reshaping the World Leaves a Troubled Trail - <AUTHOR> https://www.bloomberg.com/news/features/2018-09-19/a-chinese-company-reshaping-the-world-leaves-a-troubled-trail <comment><USER2> When I went to visit a friend in Zambia you could see all the infrastructure being built by the Chinese, however much to my friends disappointment they have completely bypassed the local economy.

He says they setup work camps and have facilities so they can be isolated from the locals. A Chinese worker won't spend a single Yuan in Zambia.

He joked that it's colonisation 2.0

<comment> wu-ikkyu >He joked that it's colonisation 2.0

[https://en.m.wikipedia.org/wiki/Neocolonialism](https://en.m.wikipedia.org/wiki/Neocolonialism)

</comment></comment><comment><USER3> Here is Texaco-Chevron completely destroying the water supply in lago agrio in Ecuador and refusing to pay even after multiple judgements against them in a court they agreed to. [1]

Given this story you would think Bloomberg would be equally 'concerned'. But they are defending Chevron in that case which means they do not really care about the issues discussed. [2]

And this is not new. This has been happening for decades and there is a long culture of exploitation and decimation by any country that can get away with it perpetuated under cover of this kind of fake concern and selective outrage. Needless to say these problems won't be solved without a more sincere and serious global effort.

[1] [https://therealnews.com/stories/chevron-arbitration- ruling-a...](https://therealnews.com/stories/chevron-arbitration-ruling- against-ecuador-completely-off-base)

[2] [https://www.bloomberg.com/view/articles/2018-07-12/chevron-n...](https://www.bloomberg.com/view/articles/2018-07-12/chevron- nemesis-steven-donziger-pays-a-price-for-ecuador-lawsuit)

</comment><comment><USER4> Worth remembering that you'll find similar complaints about construction projects within Chinese borders -- this isn't necessarily reflective of China being cruel to the developing world. Instead, it is a consequence of a country where things are done differently going abroad.

<comment><USER5> I'd say construction overall -- construction is one of the ripest industries for graft all over the world.

<comment><USER6> It's not just graft, though. The article also talks about environmental damage.

Now, construction can also cause environmental damage worldwide. (By definition, it has to cause environmental change in some way.) But some may do better at limiting the environmental damage than this company does.

<comment><USER5> I'd argue it's more a function of operating in states with poor oversight mechanisms.

</comment></comment></comment></comment><comment><USER7> This article does use a standard unit of size, the American football field, but introduced me to a new unit for weight, the Toyota Camry.

In all seriousness, I don't mind weird units when they are a small multiple of what is being discussed. Like 2 Olympic swimming pools of beer or the weight of a fully loaded 747. But the point is that people don't readily understand large numbers. Saying the sand "weighs as much as 70 million Toyota Camrys" is no better for people than saying it weighs 250 billion pounds. How about 20 Great Pyramids? Someone who has seen the Pyramids will have some idea of the magnitude then.

</comment><comment><USER8> This Chinese belt&road thing is a bit weird, as a project: it's unpopular at home, it's controversial in the target countries, it's had no real benefit so far, and also it's tremendously expensive while the Chinese economy is slowing down. It's like the Chinese gov thinks building new roads will expand the economy, but these things take time to get a ROI -- if they succeed at all.

It really feels like a soviet 5 year plan. Bureaucratic delusion.

<comment><USER9> It has a lot of benefits for China.

But as often China is capable of drawing a plan over 50 years and to execute it over that time frame.

What they are doing is developing and reshaping global trade routes around China.

That's a strategic, long term plan.

And yes, building roads and railways will expand the economy. Let's remember how the US developed the West.

<comment><USER8> The US developed organically, here it looks a bit more like a forced march. Not saying it cant work, but it looks more like a bet than a plan.

Also, the only "50 year plan" I can think of is Den Xiaopin opening the economy, and it went through because he was still powerful and alive until a few years ago. And it was more like a 30 year plan. Do you know many great long-term successes from them? Because they're more famous for things like the great leap forward.

<comment><USER10> After Workd War 2 the US was in the unique situation of not being completely decimated by the war. They used this leverage to craft trade policies to benefit the US economy by relying on their weight. To say that the US growth was purely organic is not quite hitting the mark. By all intents, it was forced to a large degree and perhaps with even more bloodshed than we'd like to admit. With that being said, the US growth model is not the only model that exists, it just so happens it was the most recent and most successful to date. But I would say that the rate of growth in a China is unparalleled, especially in the last 30 years. Going from one of the poorest countries in the world to what they are today is mind boggling. The growth itself is unsustainable unless they take forced measures of building the infrastructure out to allow the growth to spread out. It's going to be interesting to see how this all plays out and even more so with the current political climate in the west. I imagine the US isn't just going to roll over and let it's dominant position be taken from it so easily but we have to remember, there hasn't been a single empire in history that has stood the test of time. The way China is approaching things might not be the best way to do it but we won't know the true cost of today for another 30 years down the line.

<comment><USER8> Ha, I missed the mark here. The comment I was replying to mentioned 'railways' and 'the west' so I was thinking of the American West. Older use-case, and for national/internal development. You are right that the Marshall Plan is a good equivalent example. But I think its thinking was more obvious: it's either us or the soviet, and also rebuilt economies had only one major economy to trade with. These gave the USA major leverage. I don't see it here, leverage is a lot lower.

<comment><USER9> Yes, I meant the American West, which was opened by the railways.</comment></comment></comment></comment></comment></comment>


Ask HN: How relevant is The Mythical Man-Month outside the software industry? - <AUTHOR> Or, what are the equivalent lessons from managing engineering projects, outside the software domain? <comment><USER2> I'm a little confused by the question. I don't see it applied _within_ the software industry.

Software teams still measure in man-months. We just call them something else, like "story points". I've never seen any estimate or schedule which included team communications costs.

Second-system effect is still just as common as it ever was. We still fix bugs, and in doing so, create other bugs. Many or most systems lack conceptual integrity. We still hire implementors before the architecture is finalized.

I've seen pilot systems only very rarely. I've never seen an architect produce a manual of specifications. I've never seen a surgical team, or anything even vaguely resembling it. I've never seen tool-maker as a dedicated position, even when my manager agreed it would be useful to the team (on the basis that "nobody would want to take that job" even though I volunteered).

The only piece of TMMM that I've ever seen or heard any team try to apply is "No Silver Bullet", and that only as a catch-phrase used to mean "we're fucked either way so don't try". Nobody quoting Brooks has bothered to read that chapter (or that paper) and find out Brooks's criteria for what would constitute a "silver bullet", or try to make one. I can think of a couple examples of partial attempts, but always by UI/PL researchers, never by software engineers quoting Brooks.

Are you looking for "the book everybody knows they should read but nobody actually does"?

<comment><USER3> As a Brooks reader, I've idly daydreamed about repackaging it as buzzwordy management advice and making a fortune. The issue is that there may not be a market for good management advice, whether down-to-earth or buzzwordy.

I tried to suggest a surgical team at one job, but it didn't really compute for anyone else besides me. (I would not have been the surgeon.)

If you're reading this comment and haven't read Brooks, consider it - not too much of a time investment for the perspective.

</comment></comment><comment><USER4> This is the best book on software engineering and project management.

1\. Need standards for process, coding style, change control, documentation. Must be easy to move people between projects without massive retraining. Implies use only one programming language.

2\. Change control is essential.

3\. Some projects cannot be completed faster: Nine women will not produce a baby in one month.

4\. Forced schedules will impact quality.

5\. There is No Silver Bullet. There is implicit difficulty that cannot be changed by tools, process, training.

Just read the book!

<comment><AUTHOR> I am reading the book :)

I just wanted to know, given that someone outside the software engineering has read the book or that someone inside the software engineering, can shed some light on - "the techniques proven and routine in other engineering discipline are considered radical innovations in software engineering".

<comment><USER5> Remember that the book was written in the 80s, so some things have been adopted since then. One example is version control, which wasn't standard until the mid-2000s. A different example is that most other engineering disciplines require formal diagrams to be created and approved (houses require blueprints, and those typically need to be filed with the local city government) whereas most software companies often wing it with a quick description of what to build. FYI, in Sweden there's actually a museum dedicated to a ship that sank 1000 yards on its maiden voyage during a time when shipbuilders didn't use diagrams but were overseen by a master architect

<comment><USER6> > FYI, in Sweden there's actually a museum dedicated to a ship that sank 1000 > yards on its maiden voyage during a time when shipbuilders didn't use > diagrams but were overseen by a master architect

In case anyone got curious, that's [https://en.wikipedia.org/wiki/Vasa_(ship)](https://en.wikipedia.org/wiki/Vasa_\(ship\))

<comment><USER7> That is a great story on so many levels (ha). Scope creep, letting non- technical decision override technical ones.

</comment></comment></comment></comment></comment><comment><USER8> The Mythical Man-Month is one of my favorite books about managing engineering projects, and I've found it to be useful beyond just software development. The surgical team principle is one that I pushed for heavily when leading a competitive robotics team in college and found to work quite well. I think that organizing an actual software development team to work in this manner would be difficult, but the limited ability to have many people working on the physical robot at once made the surgical team approach worthwhile.

The book typically referenced the scarce resource of compile time, which is not a concern today. I can't really think of a good parallel to that scarcity in software development today, but in a situation like the robotics team where there was a truly scarce resource to be shared amongst the group (the robot) the surgical team approach worked excellently.

</comment><comment><USER9> It isn't.

Classical engineering is still following the classical planning principles, with all its pitfalls.

An equivalent lesson would be the widely cited Kanban principle, Toyota. But still rarely implemented, only in crazy experiments. Managers still want to be in control, and still throw money and people on a problem.

But wait, I found a good TMMM case in the film business. There often film projects tend to get over budget. It is explicitly advised not to prolongue the upcoming desaster by throwing more money at it, or wait a few months. You rather fire the director, and finish fast and cheap. [https://www.forbes.com/sites/schuylermoore/2019/08/16/busine...](https://www.forbes.com/sites/schuylermoore/2019/08/16/business- issues-under-film-licenses/)

</comment><comment><USER10> I think the core point about adding more people to a team still holds true. You have to deal with more communication issues.

</comment><comment><USER7> The book is really about human structures to construct large scale complex technical systems. It can be broadly applied.

</comment><comment><USER11> The book is still on my todo list... perhaps you could give examples from the book?

<comment><AUTHOR> "other people set one's objectives, provides one's resources and furnish one's information. One rarely controls the circumstances of his work, or even its goals. In management terms, one's authority is not sufficient for his responsibility. It all seems that on all fields, however, the jobs where things get done never have formal authority commensurate with the responsibility. In practice, actual (as opposed to formal) authority is acquired from the very momentum of accomplishment"

</comment></comment><comment><USER12> All deep work.</comment>


Why Australia must embrace the digital age - <AUTHOR> http://coderfactory.co/posts/why-australia-must-embrace-digital-age#.VMnwOqy28C4.hackernews <comment><USER2> We're hearing the same narrative in this piece that we do in the US. I graduated last year (in Australia) with a degree in software engineering with first class honors and a year of employment already under my belt thanks to a nifty government opportunity that I mixed into my honors. I thought I was a scoop.

It has taken me 12 months to find a job, and that job is not in Australia.

Of the 7 friends I went through uni with (including myself) that completed, three found local jobs in their field, three founds jobs overseas and one took a PhD to duck and cover from the economy.

When it's as difficult to find jobs in the country as it is to get them overseas, you can hardly froth over how it's a problem that Australian IT demand isn't being met because students aren't interested.

Not our fault arseholes, maybe if you hired someone occasionally, people would consider it more of a career option.

The reality is that the Australian IT industry is dead, dead, dead. There is no startup culture anywhere, almost every games company abandoned ship during the GFC, and big companies like Microsoft ship Australian graduates to the US rather then employing them here. The jobs that stay in Australia are two- faced. One of the guys I mentioned got a local job with HP, and a few months later he was handing out fliers at the job faire for the next years graduates.

HP sure must value his technical expertise, and they aren't the only ones. Cisco was advertising for engineers (electrical, software, computer) for their graduate program. Upon further inspection, the first 6 months of their graduate program involved coursework in sales.

COME ON. I did not do 4 years of university to hawk routers.

Why is this shit happening? I don't know for sure, but it's clear something about the Australian environment is very hostile to IT business.</comment>


Scientific Computing on the Erlang VM - <AUTHOR> http://blog.lfe.io/tutorials/2015/01/01/1215-scientific-computing-on-the-erlang-vm/

<comment><USER2> I ask this with the presumption that there is an answer, but the linked web page does not provide it: Why create this library?

I won't deny I'm also asking this because I do not personally see a reason... after all, I wouldn't ask if it were obvious to me. But I really don't understand what this is good for; it seems like binding Erlang to a Python library bound to underlying C and assembler code is doing nothing but bringing you disadvantage to accessing the Python with no corresponding advantage I can see; for instance, it isn't obvious to me that you can get any utility from Erlang's multiprocessor capabilities. It seems like, even on Erlang's terms, you'd be better off writing a Python program that does your task with numpy or scipy and having Erlang pipe whatever data it may be in possession of to a Python process in some more conventional fashion.

But I'm interested in whatever answer there may be. (Seriously.)

<comment><USER3> from: [http://blog.lfe.io/tutorials/2014/11/21/1508-erlport- using-p...](http://blog.lfe.io/tutorials/2014/11/21/1508-erlport-using-python- from-erlang-lfe/)

But then, you may be thinking: I like supervision trees. I have long-running processes that I want to be managed per the rules I establish. I want to run lots of jobs in parallel on my 64-core box. I want to run jobs in parallel over the network on 64 of my 64-core boxes. Python's the right tool for the jobs, but I wish I could manage them with Erlang.

<comment><USER4> Bingo.

</comment></comment></comment><comment><USER5> This is pretty much the idea I had about replacing MPI for my HPC projects - I'll certainly check this out once I have python bindings for my Fortran code (yes I'm serious ;-) ). Are there any benchmarks available that compare this to pure Fortran+MPI or C/C++ + MPI (with the lsci version using wrapped versions of the same code)? I think this could have great benefits for stability regarding Erlang's respawning of processes if you implement proper checkpointing facilities that can be passed through to the python code as well as C/Fortran code wrapped with python. Stability is the big thing to solve for Exascale applications - but performance kind of needs to be proven first when it comes to HPC.

<comment><USER6> You can use similar methods for interfacing C as well, if this is a better way for you to interface fortran.

<comment><USER5> C bindings are compatible with Fortran, you mainly have to think about two issues:

* depending on the compiler / setting, the Fortran function names have one or two underlines as well as their module name prepended.

* index order for multidimensional arrays are reversed in Fortran.

Other than that the datatypes basically just work. So as long as you have C bindings this is not what I'm worried about, it's rather the overhead of the Erlang VM when compared to MPI (although for usual HPC loads this probably wouldn't even be an issue as long as it's not an order of magnitude slower, since most of them are not network bound if done right).

</comment></comment></comment><comment><USER7> Will be interesting to see this project down the line. Erlang is a great platform to scale up scientific data analysis. This need is only growing because of the LSST and other big data generating tools

</comment><comment><USER8> I wonder if anyone thought about reusing panda implementation as BIFs in Erlang. That would've eliminate one abstraction layer.

</comment><comment><USER9> A LISP-wrapper around Erlang which calls Python code which wraps C/FORTRAN code..

.. now someone needs to compile this to JavaScript!

I am just glad that I do not have to work with it. I mean, what if there is a bug? Debugging this would be a nightmare.

Sorry, but so many wrappers / so much indirection is not good design.

<comment><USER10> LFE is not a "LISP-wrapper around Erlang", it's a LISP that compiles to BEAM bytecode, just like Erlang compiles to BEAM bytecode.</comment></comment>


Upgradeable smart contracts in Ethereum - <AUTHOR> https://zohaib.me/upgradeable-smart-contracts-in-ethereum/ <comment><USER2> Contracts with terms that can be changed retroactively by one party. What could possibly go wrong? The whole point of this smart contract stuff is supposed to eliminate the need for trusting a party.

The article has full details on how to create a contract changeable by one party, then hand waving about "writing a contract that uses tokens and voting mechanism to allow the community to decide whether to update or not." No details on how that's supposed to work. Who's "the community", anyway? The parties to the agreement are the ones involved.

A mechanism where all parties to a contract could agree to replace it with a new contract would be useful. That's a normal contract activity. You do that whenever you renew a lease.

The Etherium promoters want this because they botched the design. Smart contracts as byte coded programs are too error prone. The DAO debacle, and this latest demand for a "state change" because someone botched a big contract, indicate that. Smart contracts should have been in some declarative form like decision logic tables, not Turing-complete programs with race conditions.

<comment><USER3> > Smart contracts as byte coded programs are too error prone

That's perhaps a too strong statement. Bitcoin's smart contracts are byte coded programs too, and have had none of these problems. Perhaps partly because a lot of the instructions were pruned early on, and only those deemed absolutely necessary for the kind of contracts that made sense were kept.

<comment><USER4> I don't think that's a fair comparison. Would you say that something turing complete is more error prone than something that isn't?

<comment><USER3> Turing completeness isn't really an interesting aspect of the VM. Ethereum could probably remove the loop instruction without affecting any contracts of importance, but the DAO would have happened anyway.

</comment></comment></comment></comment><comment><USER5> Injecting a delegate into an otherwise vanilla smart contract doesn't seem like the hard part of creating an upgradeable contract. The hard part is coming up with a consensus model for agreeing to the change. Bilateral agreement doesn't seem strong enough, let alone unilateral agreement.

<comment><USER6> > _Bilateral agreement doesn 't seem strong enough_

Why not? If you and I agree on something, and then agree to amend it, that's valid.

</comment></comment><comment><USER7> Is immutability of a contract not the entire point? What security does a decentralized smart contract offer if its implementation can be totally swapped out?

<comment><USER8> I think the point isn't so much immutability for the sake of immutability but rather immutability for the sake of keeping power out of a centralized entity. With the scheme proposed in this article, you could do things like have contract changes only be authorized by, say a 2/3 vote of token holders, or any other complex logic you want to implement in a smart contract. Of course if there is some contract that has a single individual with the power to make arbitrary modifications, it likely won't be successful, but with decentralized ownership I think it could work.

<comment><USER9> Yes, that sounds reasonable. It's kinda worrying that some popular smart contracts implement "Pause" functions, callable only by one address (usually the creator of the contract).

<comment><USER10> You, as the user, can see those functions and choose not to use those contracts. With a closed source or black box api you don't have that power as an individual

<comment><USER11> So in this wonderful future we're building anyone who wants to safely execute a transaction should be a specifically skilled programmer? Sounds more dystopian than other possibilities

<comment><USER10> You mean how in the current world we live in to do pretty much anything you need to know how to boot up a computer, login, open up a web browser, connect to a remote server over a tcp protocol, navigate through a series of special documents rendered by the browser, access a separate protocol called email, reopen a hyperlink from the email in a new instance of a web browser, and then finally you can actually do something?

The reason all those things are so easy to do is down to years of work optimising the UI and handling errors well- we'll get there with smart contracts too one day

<comment><USER11> I get what you mean, I feel like transparency should never be a "if you're in the know you're protected, if not you're taking a gamble".

This is probably a good case for natural language as a program. If smart contracts can be immutable natural language contracts that can be proven to compile to code in a repeatable manner then we're making progress.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> I heard that story behind this is that one of close friends of ETH developers lost a few $M in smart-contracts, so they want to be able to update its source code to access the ETH, is that true? How would that work?

<comment><USER13> Yes, that is true: [https://github.com/ethereum/EIPs/pull/999](https://github.com/ethereum/EIPs/pull/999)

<comment><USER14> It's true, but it's not related to OP's article.

</comment></comment></comment><comment><USER15> Upgradable infers that the underlying contract address has a new chunk of code. That is not what this is proposing. This is simply making resolving contracts, which is best practise today.

<comment><USER10> It achieves the same thing though, you call a contract at address A, which is usually proxies to contract at address B. The owner of A can shift the proxy point to address B or any other address.

The danger here is that the user calling the contract is not aware of the proxy and the new contract does something unexpected.

<comment><USER16> The way I see it, if you are using a contract and you don't know that there is a sole owner that has the ability to upgrade the underlying contract to something else, which could be nefarious, then that is in the same wheel house as using a contract with a bug in it anyways.

It should be standard practice to have some governance model around the upgradeability (IE Multisig, Liquid Democracy, Aragon, etc...). Any contract that doesn't use some governance should be considered insecure and not used for financial transactions on the chain.

</comment></comment></comment><comment><USER17> Maybe consensus should only be reached on certain invariants, with the underlying implementation being far more mutable.

</comment><comment><USER18> Very cool! Not applicable to all use cases, but where it is applicable it is a great tool.</comment>


Ask HN: What OS do you use on your home server? - <AUTHOR> <comment><USER2> I use Alpine Linux.

A minimalistic and stable distro with up-to-date packages. I only regret the lack of SystemD, replaced by a system that I don't fully understand yet, but hey, learning.

</comment><comment><USER3> Slackware Linux

</comment><comment><USER4> Ubuntu 16.04

</comment><comment><USER5> rasp pi</comment>