FBI unlocked iPhone 11 Pro via GrayKey, raising more doubts about Pensacola case - <AUTHOR> https://ww.9to5mac.com/2020/01/15/fbi-pensacola-iphone-11-pro/ <comment><USER3> For those who want to read the original journalism and not a blog's re-hash of someone else's hard work:

[https://www.forbes.com/sites/thomasbrewster/2020/01/15/the-f...](https://www.forbes.com/sites/thomasbrewster/2020/01/15/the- fbi-got-data-from-a-locked-iphone-11-pro-max--so-why-is-it-demanding-apple- unlock-older-phones/)

<comment><USER4> I'll take the blog re-hash so long as Forbes insists on trying to force me to accept their (compromised once-monthly) ad network, but the effort in digging up and reposting the link is well-spent generally, so thanks.

(to be clear: if Forbes handled their ads on their own or used ad networks that invest in the security of their platform, I'd actually probably bite the bullet, but if I visit the site on mobile and end up being redirected to another "your phone is infected!" ad exploiting their current provider... I'll keep steering clear without ublock enabled.)

<comment><USER5> [https://i.imgur.com/dmgV13H.png](https://i.imgur.com/dmgV13H.png)

Image copy of the article for the interested.

</comment></comment></comment><comment><USER6> GrayKey can't unlock long passcodes: [https://appleinsider.com/articles/18/04/16/researcher- estima...](https://appleinsider.com/articles/18/04/16/researcher-estimates- graykey-can-unlock-a-6-digit-iphone-passcode-in-11-hours-heres-how-to-protect- yourself)

<comment><USER7> Also - besides its name and the company name - there is nothing AFAIK connecting it to "black/gray market", at least initially those were offered only to LEO and only in US and Canada.

And the "long been used" is IMHO a tad bit exaggerated, it came out in the first months of 2018, and - set aside the FBI and whatever other US three or four letter government agencies, it is not likely that US$ 15,000 or US$ 30,000 is something that any police department has in a drawer and can spend instantly, more probably it has taken at least a few months for everyone to get the expense authorized:

[https://www.forbes.com/sites/thomasbrewster/2018/03/05/apple...](https://www.forbes.com/sites/thomasbrewster/2018/03/05/apple- iphone-x-graykey-hack/#3111d4ce2950)

No idea on volumes of sale or how many departments got one, in either the "online" or "offline" version, but by now - if it was "widely" used - <USER2> presume we would have a lot of evidence based on unlocked iPhones in trials.

<comment><USER8> >it is not likely that US$ 15,000 or US$ 30,000 is something that any police department has in a drawer

I wish that were true. Police in any small town in America could start at lunchtime and have that amount by nightfall. Let me introduce you to "civil asset forfeiture" ( [https://www.heritage.org/research/reports/2014/03/civil- asse...](https://www.heritage.org/research/reports/2014/03/civil-asset- forfeiture-7-things-you-should-know) )

There are state and federal version of this, and a "sharing" program to share the loot. It's pure corruption in blatant violation of the US Constitution, but it's good for government/police business (e.g. buys a lot of helicopters, tactical/swat equipment, training, etc.) so it persists.

<comment><USER9> As a non-American, it's almost unbelievable that the police can basically rob you in the so-called land of the free and home of the brave.

<comment><USER10> Worldwide problem.

"The idea that the State originated to serve any kind of social purpose is completely unhistorical. It originated in conquest and confiscation - that is to say, in crime. It originated for the purpose of maintaining the division of society into an owning-and-exploiting class and a propertyless dependent class - that is, for a criminal purpose." \-- Albert J. Nock

</comment></comment></comment></comment></comment><comment><USER11> Once again, it seems that it was an excuse to weaken the security of all iPhone users rather than getting information from a specific device. In the case of San Bernandino the FBI was able to use Cellebrite to crack the attacker iPhone without Apple creating backdoors.

<comment><USER12> In that case, Apple already had a backdoor, or they wouldn't have been able to comply in the first place: the device in question did not yet have the "secure enclave" enforcement of pin code back-off and supported firmware updates by Apple without the user's pin code. Apple spending the time to make a firmware --which incidentally anyone with Apple's private firmware signing key (the real back door) could easily have done (as we seriously already have had custom firmwares for ssh bootstrap and pin code brute force in the community)--isn't them "creating" a backdoor, it is them "using" a backdoor. Thankfully, it is my understanding that Apple decided to fix both of these issues in subsequent devices, and so while there are clearly still bugs there hopefully are no longer any obvious backdoors.

<comment><USER13> >Thankfully, it is my understanding that Apple decided to fix both of these issues in subsequent devices, and so while there are clearly still bugs there hopefully are no longer any obvious backdoors.

Does this mean. There's a new unpatched exploit out there that greykey is using?

<comment><USER14> From what I can tell, it simply tries to brute force the password (perhaps with some informed suggestion). It does appear to have access to an exploit that bypasses/disables the encryption lock that wipes data off the phone after failed attempts, but it does not appear to utilize an exploit/backdoor to gain access to the device; it gains access the "legitimate" way.

</comment></comment></comment></comment><comment><USER15> The phone was released with iOS 13 which prominently featured enhancements to USB restricted mode[1] which was supposed to defend against GrayKey/Cellebrite attacks. Seems like GrayKey can easily bypass that feature. Does not really inspire much trust in Apples security team as the USB restricted mode was already a bandaid itself.

[1] [https://blog.elcomsoft.com/2019/09/usb-restricted-mode-in- io...](https://blog.elcomsoft.com/2019/09/usb-restricted-mode-in-ios-13-apple- vs-graykey-round-two/)

<comment><USER16> Apple's security team has been given the near impossible task of defending a physical device in the hands of an attacker.

I wouldn't blame them for any lack of success. Perhaps instead blame them for suggesting to the user physical security is possible at all.

<comment><USER17> > the near impossible task of defending a physical device in the hands of an > attacker.

If you assume the device is off and the user chose a strong password, it's pretty easy to defend. You simply encrypt the data with a key which is encrypted with the user's password.

If you want to protect devices that are on, or want to protect devices with less than stellar passwords, then it becomes harder.

<comment><USER18> That is not very strong protection - it lets you perform dictionary attacks at high speed.

It is often more secure to generate a random, high-entropy key and storing it in secure storage, which is what the iPhone does.

<comment><USER17> If you assume a strong password you don't need to worry about dictionary attacks.

There are 2 ways to slow down the attacks: key stretching and secure storage. Key stretching is a good idea.

I recommend not relying fully on secure storage, because I've heard of tons of hardware vulnerabilities (side channel attacks, undervoltage, electron microscopes, buggy implementation). I trust math more than a physical object. In fact it seems impossible to me to build fully secure storage, because if someone has a delicate enough measurement tool to measure the atoms inside the storage, the data inside can be extracted. If you store the password (or hashed password) as well as the key in the secure storage, and have it only return the key if the input password is correct, you run the risk of someone finding a bug in the storage to extract the key without the password. Then you're compromised.

But you build a system so that the secure storage is no worse than regular crypto. You do the encryption using a combination of the user's password and the output of the secure storage. That way even if the secure storage is fully compromised, the password is still needed.

<comment><USER18> You can't really assume a strong password, because if you have to type in 12 characters, letters and punctuation marks every time you want to look at your phone, you're going to give up on the whole thing pretty quickly.

To be usable, phones need to allow relatively weak passwords.

<comment><USER17> I've had a password like that on my (Android) phone for ~7 years and haven't given up. I don't use punctuation though, it's not worth the extra taps to get to the punctuation keyboard for the entropy you gain. I've never had fingerprint or face ID enabled either.

12 characters gives 62 bits of entropy. That's plenty if proper key strengthening is in place.

Linus Sebastian says that when his phone got slower to open up, he got happier, because it caused him to use his phone less, cutting out the useless stuff. [https://youtu.be/WGZh-xP-q7A?t=305](https://youtu.be/WGZh- xP-q7A?t=305)

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> from the GrayKey website:

>GrayKey is not for everyone. We kindly request that you tell us a bit about yourself and your organization.

This feels like its begging for DMCA litigation, but its likely Apple already knows how and why GrayKey works. Keeping GrayKey around serves apple as law enforcement has (for now) an easy means of hacking _some_ iphones at an entry cost, while permitting Apple to continue insisting their phones are just too secure to help hack.

<comment><USER20> TMK, There are multiple independent implementations of the attack their current gen tech is based on. Any determined actor could hire a greyhat and have their own system.

</comment></comment><comment><USER21> Basically GrayKey can unlock numeric passcodes by bypassing the cumulative limits that engage when the wrong code is typed in. The process still takes a long-ish time.

It can't do anything for FaceID, TouchID or alphanumeric passcodes.

<comment><USER22> Isn't numeric passcode the default fallback to biometrics that millions of users use? Also, isn't it supposed to be safer than FaceID or TouchID?

Apparently GrayKey can't crack long passwords, since it's essentially brute- forcing, but almost everyone I know uses a four-digit code.

Also, this is troublesome because in the US, we're told that cops can force you to hand over your fingerprint but not your passcode. It's a bit problematic if those passcodes are easy to crack.

<comment><USER23> > Also, this is troublesome because in the US, we're told that cops can force > you to hand over your fingerprint but not your passcode.

It's not settled law that you can't be compelled to provide a passcode. In general, the 5th Amendment prohibits compelled testimony that is _incriminating_. Disclosing a password to your own phone is usually not per se incriminating. Contrast that with disclosing a password to a device you're accused of hacking, where showing knowledge of the password is evidence of guilt. Many (most?) courts haven't yet been prepared to defend such a fine distinction, and seem to be more comfortable with a simpler rule that prohibits compelling password disclosure, period. But that could easily change, especially at the Supreme Court.

<comment><USER24> My understanding is that it's settled law that Americans have the right to remain silent unconditionally.

<comment><USER25> It is not that straightforward. Generally you cannot be compelled to testify against yourself. But you can be legally compelled to perform certain actions, and held in contempt if you fail to do so. Whether or not disclosing a password is self incrimination, or something you are required to provide is an actively changing area of the law.

<comment><USER26> > But you can be legally compelled to perform certain actions, and held in > contempt if you fail to do so.

I anal but isn't this basically slavery/forced indenture? Could a court of law compel Apple to write some software? If so, can a court of law require George RR Martin to write a novel and send him to prison if he declines?

<comment><USER27> Once you're in the court system of most any country, what things you legally can and can't do are a lot harder to enforce. You're essentially needing to fight a well-trained opponent on their home turf with biased referees and no real downside to them for cheating.

I'd imagine neither of your examples could or would happen given the power Apple and Martin's representatives have, and how absurd forcing someone to write a book as part of a court decision would be, but I'm fairly sure you could find examples of relatively similar things. I could certainly see something like a contract-related case being resolved by essentially legally compelling someone to write a book that they said they'd write, or else be fined/imprisoned.

<comment><USER26> > I could certainly see something like a contract-related case being resolved > by essentially legally compelling someone to write a book that they said > they'd write, or else be fined/imprisoned.

Again, I anal so I don't know the law but contracts sound like a strictly civilian (not government vs not government) court case where there should be no possibility of imprisonment. If there is it sounds like a bug to me and we ought to amend the laws so that it is not possible.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER28> > So why are the FBI, President Trump, Attorney General William Barr, and > others all calling on Apple itself to break iPhone encryption? The most > obvious possibility...

The most obvious possibility is that Apple can one day succeed and iPhone will be uncrackable by these tools.

</comment><comment><USER29> The box on their website looks really similar to iphone unlock tools sold around in the unlock industry.

Can it be that Greykey is just a relabeled Chinese unlock box made to crack the lock screen?

</comment><comment><USER30> The government is just trying to establish its preferred pecking order — government, oligarchs, then Soylent Green. Expect more High Publicity cases especially those involving child victims.

</comment><comment><USER31> isn't breaking encryption like this illegal under the DMCA? Wouldn't that mean that the FBI was actively breaking the law by using it?

<comment><USER32> Breaking encryption is not illegal under the DMCA except in the cases listed in the DMCA.

Lots of things are illegal without a warrant or without some other legal requirement.

The FBI breaking encryption in a legal investigation is not illegal.

<comment><USER33> > Breaking encryption is not illegal under the DMCA except in the cases listed > in the DMCA.

isn't it the other way around?

<comment><USER32> No. DMCA makes most breaking of encryption illegal when used to circumvent copyright. "Most" because it has exemptions even for copyright circumvention. This is a very limited place to make it illegal.

I can probably think of hundreds of places you can still do it and it's not illegal. Some examples: in school classes to learn, at home for practice, researchers attacking each others new algorithms, estate clearance to get dead person assets released, for interoperability in may cases, for archiving old things in many cases, and on and on.

In fact, almost any place I can think of where I might break encryption (which I have done both as a hobby and professionally and as while a PhD student) is perfectly legal. It becomes illegal when used to do something else illegal, like violating copyright, or stealing things.

So no, breaking encryption is not illegal as a whole.

Here, break this: Lbh qvqa'g oernx gur ynj.

<comment><USER33> > "Most" because it has exemptions even for copyright circumvention.

Right that was what I meant, that the specific "list" I could think of is actually of exemptions. Irrelevant nitpick really, sorry.

</comment></comment></comment></comment></comment><comment><USER34> I suppose it's possible that in one case the device had USB Restricted Mode off, but it was on in the Pensacola case?

</comment><comment><USER35> I fear where this will end up or already ended up is in a place where Apple gets to say they are pro user privacy, doing everything they can to keep my data secure, etc. When in reality they could be purposefully not closing vulnerabilities so they have an out with the police. Until I see Apple genuinely go after these companies like Cellebrite and GrayKey in court I will remain skpetical.

</comment><comment><USER36> I always considered the "you can't get at the data of an iPhone" a marketing slogan, not really worth my trust. I am still off the opinion, once you give up/loose physical access to a device, the game is over. Also, I dont see why this is such a big deal for so many people. Is the percentage of people that have the FBI as their adversary really so high? :-)

<comment><USER37> If FBI can do it, that means any other third party is able to do it too, it is just a matter of time.

<comment><USER38> A phone thief may theoretically spend a few months to unlock your phone, but in practice they won't.

<comment><USER39> When an exploit is leaked and turned into software that can run on commodity hardware then the thief might only have to spend a few minutes.

<comment><USER40> Time also helps, because the software on the phone stops getting the fresh security fixes.

</comment></comment></comment></comment></comment><comment><USER41> Completely locking down a physical device and making it unhackable is downright impossible. If the attacker has physical access to the device and the ability to regulate network access, then it's only a matter of time before the device gets hacked.

Right now they are using USB to gain access to the device. There is nothing stopping an attacker from actually prying open the device and fitting alternative components that can bypass security. Consoles are cited as an example of an unhackable device, which is not true. Consoles were designed to be unhackable by cheap mass-market methods but a determined hacker can still do it, just that he will have to spend more to do it than the cost of a new console. The hacker in this scenario is FBI with a lot of money and resources with the physical device in their custody. I doubt if FBI is going to lose the ability to hack devices anytime soon.

<comment><USER42> Lots of iPhone decryption kits, specifically kits which reset the time or limit on unlocks worked and do work by unsoldering chips and processing them externally.

<comment><USER43> Is this true? You can buy iphone decryption kits that require desoldering chips?</comment></comment></comment>


Google,Bing and Yahoo not giving me any results for "-moz-border-radius". - <AUTHOR>

I couldn't find references for " -moz-border-radius" in Google, Bing or Yahoo. The only search engine that gives me the result is duckduckgo <comment><USER2> Because the leading minus sign indicates that you DON'T want a particular term (in this case, moz-border-radius) in your results. Since that's your only term entered, no search happens.

Try searching moz-border-radius.</comment>


Poll: Are you a suit or geek? ( I am not a geek ) - <AUTHOR>

The latest poll http://news.ycombinator.com/item?id=41685 showed some interesting results regarding startup location. Now it would be nice to know what is the difference in percentage between the numbers of suits and  geeks contributing to N.YC.
<comment><USER2> Geek, usually in jeans and a t-shirt. More to the point, I'm asocial enough that it's going to be a challenge to do any face-to-face communication I need to do to make my startup work. We'll see how that works out. :)

</comment><comment><USER3> I'm a geeky suit. I'd imagine pretty much everyone here is either that, or a suity geek.

</comment><comment><USER4> geek - wear jeans to interviews, make clear that I will quit if offered management roles.

Suits, as in clothes, are ridiculous. And most of the time suits, as in people, are just as ridiculous as the clothes they wear.

</comment><comment><USER5> I'm a geek, but I actually like wearing suits when it's cool outside. However, I don't have the money for nice ones.

</comment><comment><USER6> I'm a t-shirt and jeans geek,but I wear suits on weddings ;)

</comment><comment><USER7> Geek.</comment>


U.S. teenager tortured in Kuwait and barred re-entry into the U.S. - <AUTHOR> http://www.salon.com/news/opinion/glenn_greenwald/2011/01/06/kuwait/index.html

<comment><USER2> As a Somali, this person's life is likely absolute hell in Kuwaiti prison. The Middle Eastern countries are incredibly prejudiced against people of Indian Subcontinental and African origins as many come to the peninsula in order to work on construction/menial jobs. Family friends (I am of Indian origin) have horror stories of passports being confiscated, police blackmails, and blatant racism.

Its truly sad that the U.S. has let a citizen be treated like this by a state, especially a state where the U.S. has as much influence.

</comment><comment><USER3> A very sad story. I find it interesting that Bush is still brought up without noting that the policy of rendition started under Clinton and was largely replaced under Bush with Gitmo.

Also, calling Kuwait a puppet of the U.S. is a vast over simplification of the situation. Though, the FBI agent and other officials who visited this young man should be severely disciplined if they showed the disregard that is alleged here.

</comment><comment><USER4> Very sad.

Just a practical question, if someone is on the "no fly" list, does that prevent them from flying in all countries? One would think not, so why wouldn't that person be able to fly to Mexico then present their passport at the border for reentry into the US?

<comment><USER5> You would think it works the way it is written but there have been a few instances of flights being diverted even though they would never fly through US airspace. And don't even think about flying to Canada, they are in lockstep with the US as far as the no fly list is concerned.

For example, last year a flight from London to Mexico City was turned back because a US citizen on the no fly list was onboard. Plane landed back in London, the passenger was asked to leave, no argument, and the flight resumed eight hours later. No one has been able to find out who he was and what happened to him; arrested, cleared immigration, deported (where?).

</comment></comment><comment><USER6> Isn't it true that an american citizen can not be banned from entering his country and isn't that a constitutional law? I'm not from US, but I remember a small media mess around a case, when TSA didn't want to let an american citizen out of the airport (was mentioned on HN).

<comment><USER7> Sadly, our US consitutional rights are have been severly abridged by the State "in order to keep us safe". Rather than admit we are sliding into some sort of police state, we try to rationalize that only the "bad" people are treated unconsitutionally.

While a few brave souls stand up for their rights, the majority are too afraid to. We submit to warrantless searches every time we fly (even if we know it's pure ineffective security theater) lest we miss our flight.

<comment><USER6> Thanks for your answer :). But still, I'd like to know if it is a constitutional right or if I misread it somewhere?

BTW. I heard a joke about current flight security policies in general (ie. not specific to any country) that "you can board the plane with a fish in a bowl, as long as you dispose of water before entering" ;).

<comment><USER8> (Disclaimer; I am not a lawyer, but I have studied the history of Constitutional rights).

As far as I know, there's no specific right to _international_ travel in the US Constitution, but the law and the courts have generally held that withholding a citizen's ability to enter and exit the country should not be used punitively.[0]

That being said, the First Amendment specifically protects citizens' ability to petition the government for redress of grievances, as well as publicly assemble.[1] I know that people have attempted to use that to establish a definitive right to travel, as in _Gilmore v. Gonzales_ [2]. I don't know whether they've had any success.

It's interesting that the Wikipedia page on citizens' rights doesn't have any sources for their claim that all US citizens have the right to re-enter the country [3]. However, I imagine that to deny someone right to entry would also deny them their right to due process, specifically guaranteed under the Fifth Amendment [4]. Heck, usually the government pro-actively tries to extradite criminals back to the US...

[0] [https://secure.wikimedia.org/wikipedia/en/wiki/Freedom_of_mo...](https://secure.wikimedia.org/wikipedia/en/wiki/Freedom_of_movement_under_United_States_law) [1] [https://secure.wikimedia.org/wikipedia/en/wiki/First_Amendme...](https://secure.wikimedia.org/wikipedia/en/wiki/First_Amendment_to_the_United_States_Constitution) [2] [https://secure.wikimedia.org/wikipedia/en/wiki/Gilmore_v._Go...](https://secure.wikimedia.org/wikipedia/en/wiki/Gilmore_v._Gonzales) [3] [https://secure.wikimedia.org/wikipedia/en/wiki/Citizenship_i...](https://secure.wikimedia.org/wikipedia/en/wiki/Citizenship_in_the_United_States#Rights) [4] [https://secure.wikimedia.org/wikipedia/en/wiki/Fifth_Amendme...](https://secure.wikimedia.org/wikipedia/en/wiki/Fifth_Amendment_to_the_United_States_Constitution)

</comment></comment></comment></comment><comment><USER9> Warning: the page opens a video ad that starts to play automatically. I nearly shat my pants, since I opened it in the background :)

<comment><USER10> AdBlock Plus

<comment><USER11> If you care for a different cure, then noscript. The developers of each had a spat in recent times though.

<comment><USER10> Wow I wasn't aware, but after reading this post: <http://adblockplus.org/blog/attention-noscript-users> I'm honestly concerned about using NoScript any longer.

//Edit: [http://hackademix.net/2009/05/04/dear-adblock-plus-and- noscr...](http://hackademix.net/2009/05/04/dear-adblock-plus-and-noscript- users-dear-mozilla-community/) The reply by NoScript was excellent. I feel reassured.

</comment></comment></comment></comment><comment><USER11> Shocking! But my comment is about something else: the different presentation style used by NYT and Salon.

The chances that I would have skipped over the NYT article is much higher than I would have the Salon article. A picture makes a lot of difference, so does "U.S. Teenager" versus "Detained American", and of course "torture" versus "beaten".

<comment><USER12> I think "torture" may be a little extreme. Are threats, beatings & lashings to the feet & hands considered _torture_?

I mean, definitely not desirable or anything, but I always understood torture to refer to the much more extreme. Otherwise we conclude schoolyard bullies, police, and schoolteachers regularly engage in torture, though schoolteachers have mostly ceased using canes for lashing.

<comment><USER11> Prolonged beating of the soles of the feet, or phalanga as it is sometimes called, is definitely torture. It has a _rich_ history. It is extremely painful, primarily because of the abundance of nerve endings in the sole of ones feet. It takes a long time to heal so the punishment effectively gets extended over a long period of time, possibly permanent.

Conveniently enough it leaves almost no evidence.

Edit:A study on the effects of phalanga [http://webcache.googleusercontent.com/search?q=cache:_4_CVER...](http://webcache.googleusercontent.com/search?q=cache:_4_CVER1g5YJ:www.irct.org/Admin/Public/DWSDownload.aspx?File%3D%252FFiles%252FFiler%252FTortureJournal%252F19_01_2009%252FLong- term_consequences.pdf)

<comment><AUTHOR> A friend of mine was in an orphanage in MX when he was a child. He suffered from extended beatings on his soles (among other things like cigarette burns and the like). I don't know if it's true, but he says he can't feel absolutely nothing with his soles (ie No pain).

So yes, this is definitely torture, with permanent consequences.

</comment></comment></comment></comment><comment><USER13> For every story like this, there are countless that never get told, though people in the Arab world are keenly aware of them.

</comment><comment><USER14> Sad tale, of course, but why is this front page news on HackerNews?

<comment><USER13> When just the act traveling to a certain country makes you a target for torture and imprisonment _by your own government_ , it would make one uncomfortable, particularly as a person who would like to travel.</comment></comment>


Police drones are falling from the sky when it rains, report finds - <AUTHOR> https://edition.cnn.com/2020/01/10/uk/drone-fall-sky-intl-scli-gbr/index.html <comment><USER2> So now I have a vision of Maurice Moss from the IT Crowd running out in a downfall of drones singing "It's raining drones, hallelujah, it's raining drones" and scavenging up spare electronics.

I suppose I will now have this thing in my head, never to be actualized, recurring frequently.</comment>


A few details on minecraft 1.8 - <AUTHOR> http://notch.tumblr.com/post/7009276212/trickling-information-about-the-adventure-update

<comment><AUTHOR> I like how 'npc villages' sneaks in there at the end of the post... I automatically prefixed it with 'one more thing' when reading it.</comment>


Magic Leap Alleges Workers Stole Its Secrets - <AUTHOR> http://www.ctvnews.ca/sci-tech/google-backed-magic-leap-alleges-workers-stole-its-secrets-1.2920529 <comment><USER2> "Magic Leap filed late Thursday in federal court after the two workers, Gary Bradski and Adrian Kaehler, sued the company for wrongful termination earlier this week."

Both of these guys are listed as Vice President's - Kaehler as VP Special Projects - and Bradski as VP of Advanced technology, that's no small deal.

More info of the allegations in a NY Times article (1)

(1) [http://www.nytimes.com/aponline/2016/05/27/business/ap-us- ar...](http://www.nytimes.com/aponline/2016/05/27/business/ap-us-artificial- reality-legal-tussle.html)

<comment><USER3> This is particularly interesting since Gary Bradski is also a Co-Founder of Industrial Perception Inc., a robotics company that Google acquired in 2013.

Reportedly Bradski walked away from Google right after the deal to join early Magic Leap, leaving lots of cash on the table and Google stock unvested.

<comment><USER4> Bradski is also the creator of OpenCV, an industry standard computer vision library.

<comment><USER5> Adrian Kaehler is also a major contributor to OpenCV.

<comment><USER6> That's enough for me to side with these two guys. I think Magic Leap is not that magical after all.

</comment></comment></comment></comment></comment><comment><USER7> Standard retaliatory tactic so they can tell investors the ex-employees are actually the bad apples and of course not the company.

The impression I get is that the only secret ML actually has is that they are years away from showing anything to validate their worth (by which point many competitors will have shown their cards and removed the 'magic' from the leap).

<comment><USER8> Yeah, they just can make a deal - drop the case in exchange for former employees silence about whats going on in the company...

</comment></comment><comment><USER9> The reluctance for people to be skeptical of anything to do with Magic Leap is strange to me.

How is their product not rightly described as vapor ware? I feel like I've been hearing about how amazing it is for ages and still...nothing.

Stories like this aren't helping me change my mind either.

<comment><USER10> I am not even sure what ' deep learning techniques utilizing robotics' even means.

<comment><USER11> What does that have to do with Magic Leap?

<comment><USER10> The lawsuit alleges the duo's duplicity involved "some deep learning techniques utilizing robotics."

from nytimes article

</comment></comment></comment></comment><comment><USER12> I guess "artificial reality" refers to this?

[https://vimeo.com/166807261](https://vimeo.com/166807261)

<comment><USER13> That's one of the better dystopian visions of the future I've seen.

<comment><USER10> I don't want to move my hands, legs or any other part of my body so much. I watch stuff on my phone because I am too lazy to watch on TV . This stuff seems like so much work, do you really want to move pieces of puzzle when you can just flick your thumb.

<comment><USER14> Yeah but you still need to time travel to 70s using a bus to spend your points on groceries...

</comment></comment></comment></comment><comment><USER15> [http://uploadvr.com/magic-leap-alleges-former-executives- mis...](http://uploadvr.com/magic-leap-alleges-former-executives-misused- trade-secrets/)

contains a copy of the actual filing:

[http://cdn.uploadvr.com/wp- content/uploads/2016/05/complaint...](http://cdn.uploadvr.com/wp- content/uploads/2016/05/complaintmagicleap.pdf)

</comment><comment><USER16> Big deal. Employers always allege trade secrets theft in any dispute with their serf...I mean, employees.

</comment><comment><USER17> I don't know if ML's tech is vapor or real, but I have a lot of respect for anyone who can get Larry Page to give them half a billion in cash. That right there is some seriously convincing talking.

<comment><USER18> fair point. I'd add that if a person has $10+ billion, already (or whatever his net worth is), then you can afford to risk blowing a few billion, here and there, on things which might turn into a loss. On the upside, he'd be better off and humanity would be better off. On the downside even if his bet failed and he and therefore the Page estate got reduced to a mere, say, $100 million in net wealth he and his children could still live out pretty good lives.

In other words, it might not have been as hard to convince him as one might think. "Gee, I can invest a big amount in a Theranos/MagicLeap/SpaceX or I can put it into the next random/fad-ish social/pic/buzz/RailsCRUD/BigData/leadgen/TODO/PM/cloud/viral/app startup. Hmmm, choices."

<comment><USER17> Well in this case it is the company's money, and lots of people within the company are "competing" for funding of their projects. Of course there is the reverse NIH effect which is that any technology invented outside of the company seems more impressive to leadership than technology created inside the company.

<comment><USER18> great points!

</comment></comment></comment></comment><comment><USER19> Magic Leap's main product might be more than meets the eye. According to Quartz [1], there's probably more far-fetching tech that Magic Leap is working on that involves "deep learning techniques utilizing robotics," and Bradski's and Kaehler's termination forced their hand to divulge even the least bit of information. Maybe "artificial reality" is not a misnomer and the $4.5bn valuation is not just the AR.

[1] [http://qz.com/694660/looks-like-magic-leap-is-working-on- ano...](http://qz.com/694660/looks-like-magic-leap-is-working-on-another- mysterious-buzzword-technology/)

<comment><USER20> And maybe I have the secret to cold fusion open in a text file in front of me. Are you looking for an investment opportunity?

<comment><USER21> am i allowed to say "lmao!" on hn?

<comment><USER22> I hope you've learned your lesson.

</comment></comment></comment></comment><comment><USER23> I'm curious to see if this will result in the general public getting some info to suggest that Magic Leap isn't vaporware.

<comment><USER24> It'a hard to believe they'd have $1.4 bn in funding without giving some tech demonstrations o their investors.

<comment><USER23> Theranos and whatever that ultrasonic charging one was both come to mind.

<comment><USER21> uBeam ([http://liesandstartuppr.blogspot.mx/](http://liesandstartuppr.blogspot.mx/))

</comment></comment></comment></comment><comment><USER25> Has there been some suggested Roadmap when we can expect some unveiling? It's fun to see that people can get sued over unannounced tech, but I'd really like to know what we are talking about here.

</comment><comment><USER26> The vapors are leaking.

I had some hope in them because I thought Google were not idiotic enough to acquire them. Now I don't trust Google as much.

</comment><comment><USER27> Maybe I should have done on record somewhere sooner, but this is exactly what I expected out of secretive companies like this. Raise a bunch of money, produce nothing of substance, then have some kind of lawsuit action bring in some dough. I'm not sure what the end goal is, but if we ever have a single product from this company I'll be surprised.

<comment><USER28> You really think suing two ex-employees is their plan to make money? Most of the money those employees have is the money MagicLeap paid them.

<comment><USER29> Nobody said it was a _good_ plan.

</comment></comment></comment><comment><USER30> This is the first time I've seen someone refer to this tech as "artificial reality" \-- interesting!

<comment><USER31> Old school term from the 60's. Here's a book about it.

[http://www.amazon.com/Artificial-Reality-2nd-Myron- Krueger/d...](http://www.amazon.com/Artificial-Reality-2nd-Myron- Krueger/dp/0201522608)

<comment><USER30> Yeah, I saw the history of the term from Wikipedia, but curious as to why they dug it back up.

<comment><USER32> Probably because it confuses nicely with AR while offering some neat marketing opportunities.

</comment></comment></comment></comment><comment><USER33> I interviewed with these guys and got an informal offer. I declined because of the number of hoops I'd have to jump through to see a demo of it in action. I learned my lesson about that sort of thing during the first dotcom boom.

</comment><comment><USER34> Has Magic Leap shared any public timeline for when they might launch something to market?

<comment><USER5> No

</comment></comment><comment><USER35> I see this as a defensive move to show their investors why they are late to launch.

</comment><comment><USER36> I'm interested in this but the article itself is a bit of a joke and I couldn't find any external links on it for anything more in-depth. :/

</comment><comment><USER11> Artificial Reality... I like that term. A blend of augmented reality and virtual reality. To bad it's AR though

<comment><USER37> AV? [https://blogs.intel.com/evangelists/2016/04/26/the-case- for-...](https://blogs.intel.com/evangelists/2016/04/26/the-case-for- augmented-virtuality/)

</comment></comment><comment><USER38> What's with 'Artificial Reality' ?

<comment><USER39> Trying to muck up the short hand for Virtual Reality and Augmented Reality.

</comment></comment><comment><USER40> Isn't it "augmented reality"?</comment>


How a matchmaking algorithm saved lives - <AUTHOR> https://medium.com/@UofCalifornia/how-a-matchmaking-algorithm-saved-lives-2a65ac448698#.kyn7zeqet <comment><USER2> There's also a great Freakonomics podcast about this story [http://freakonomics.com/podcast/make-me-a-match-a-new- freako...](http://freakonomics.com/podcast/make-me-a-match-a-new-freakonomics- radio-episode/)

</comment><comment><USER3> NPR RadioLab did an amazing story on this!

[http://www.npr.org/sections/health- shots/2015/06/11/41222485...](http://www.npr.org/sections/health- shots/2015/06/11/412224854/how-an-economist-helped-patients-find-the-right- kidney-donor)

</comment><comment><USER4> Isn't the donor-patient problem a vertex cycle cover? Finding a minimum one is NP-complete, how exactly is this one applied?

edit:

found a bit more information [https://www.siam.org/news/news.php?id=1474](https://www.siam.org/news/news.php?id=1474)

<comment><USER5> You are right that the general problem is intractable; a lot of the advances in these match making algorithms come from better heuristics and computing power.

</comment></comment><comment><USER6> Pretty powerful stuff. Puts paid to the notion that economics is "not real" or all handwaving, as you sometimes read here.

<comment><USER7> Not sure this particular algorithm has anything to do about economics, except its author is an economist.

<comment><USER8> Matchmaking is arguably _the_ core of economics.

</comment></comment></comment><comment><USER9> There's a great EconTalk podcast episode about Matching Markets with Alvin Roth (the Stanford economist mentioned in the article):

[http://www.econtalk.org/archives/2015/07/alvin_roth_on_m.htm...](http://www.econtalk.org/archives/2015/07/alvin_roth_on_m.html)

</comment><comment><USER10> Might be related, but I recently discovered this

[http://demonstrations.wolfram.com/SocialGolferProblem/](http://demonstrations.wolfram.com/SocialGolferProblem/)

<comment><USER11> That is actually not related, but the beginning of an entirely different field of mathematics. Design theory is the study of mathematical objects called _combinatorial designs_ [1], which are basically fancy ways of partitioning finite sets into subsets with a pre-specified structure. The thing you linked to is a specific instance that shows the existence of designs in a few specific cases.

While Kirkman essentially posed the first design theory question in the 1850's, both the authors of one of the standard textbooks[2] in the field are still alive and (IIRC) still working today!

[1] [https://en.wikipedia.org/wiki/Combinatorial_design](https://en.wikipedia.org/wiki/Combinatorial_design) . Incidentally, the field is called "design theory," but it's not a great search term outside of MathSciNet.

[2] [http://www.amazon.com/Design-Edition-Discrete-Mathematics- Ap...](http://www.amazon.com/Design-Edition-Discrete-Mathematics- Applications/dp/1420082965)

</comment></comment><comment><USER12> As someone who just certified a residency match list last night, I'm glad this system exists.

</comment><comment><USER13> Is there a patent on this?

<comment><USER14> The basic Gale-Shapley algorithm was published in 1962.

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

<comment><USER15> Is this the algorithm that was discussed in the article? I couldn't find a link.

<comment><USER14> Yes, from the article: "In the 1960s, researchers David Gale and Lloyd Shapley embarked upon research to take up an unlikely subject: matchmaking."</comment></comment></comment></comment>


The Unison language - <AUTHOR> https://www.unisonweb.org/ <comment><USER2> One thing that takes away from programming languages is not having code samples on the index. I think this lets someone know immediately if it's interesting to them or not. Show a sample of code with the console output or a screenshot of an UI from the code. I think Racket had it right ages back. They would show everything from a web server, to other things. This is what major programming languages (with some exceptions) basically do and it gives a developer more information than any amount of marketing speak.

That said, I had to dig in the documentation to find code, and it didn't seem as obvious cause the syntax is definitely different from what I'm used to and there's weak syntax highlighting.

<comment><USER3> Small code samples tell me next to nothing. How could they. I want a clear explanation of the foundational aspects.

<comment><USER4> How can you choose a language without knowing the syntax? It's not arbitrary. Some languages have elegance or gotchas in how the syntax is laid out

<comment><USER5> How can you tell the elegance or gotchas from a 6 line Hello World?

<comment><USER2> It's how I picked my favorite Python web framework, I compared all the hello world samples they all had, and wound up with CherryPy. The rest had too many decorators and it just looked silly to me.

You can also figure out if it's C-like or Lisp-like, and so on from looking at syntax.

<comment><USER6> From what you describe, sounds to me you picked your framework mostly at random, like one would pick a car for its color.

</comment></comment></comment></comment></comment></comment><comment><USER7> Reading the tour[1], I got the impression of being struck by something not that surprising, but still fundamentally groundbreaking.

Beyond just the idea of a global program store (which I hope has space for some virtualenv equivalent), the cleverness of effect handlers as a first- class language feature is very exciting.

Once the type system is more mature, this could easily be the next kind of Haskell - a language which redefines modern ideas of good programming.

1: [https://www.unisonweb.org/docs/tour](https://www.unisonweb.org/docs/tour)

<comment><USER8> Unison seems to combine ideas from Forth, Haskell, and Clojure's Datomic and stir them together into an interesting mix:

Forth ideas: a global dictionary with pre-existing and user-definable words

Haskell ideas: functional programming and type signatures of functions / words

Clojure Datomic ideas: immutable store of object definitions that append and use references to point to the latest definitions.

I am curious how I/O and error handling are done in Unison.

<comment><USER7> If you look at the other reply to my comment, someone has linked the Unison docs on their effect handlers implementation - which is what is used for IO, and with any luck, error handling as well. Haskell has several packages for effect handlers, and they're taking off in programming and category theory circles as alternatives to monads for IO.

The short summary is that you can write code with side-effects that you don't define the implementation for, and then let call sites handle those effects or defer them.

</comment></comment></comment><comment><USER9> Kudos to them for not using the buzzword, but if you believe in the notion that 'blockchain is just a fancy buzzword that gives developers the ability to get managers to agree to larger budgets to clean up tech debt', this is.. blockchain programming.

One problem I did find: Somewhat deeper into the tour, the tour makes the claim:

> a Unison codebase can be versioned and synchronized with Git or any similar > tool and will never generate a conflict in those tools.

This is pratically speaking of course not true: If you have some unison codebase, whilst under the hood it's all hashes, that doesn't change the simple fact that if 2 people both check out the exact same code, and then both people make a change to how the software operates, where that change is conflicting (say, I make the green 'OK' button now red, and you make it blue), you.. have a conflict. That is a fundamental property of this interaction; no language bells and whistles can ever change this fact.

So, what does happen in unison? Is it 'last committer' wins? That'd be a bit problematic. A conflict in your version control system, _IF_ it is representative of the fact that there was an actual conflict (as above with the button and the conflicting colours), is a good thing, not a bad thing.

<comment><USER10> " I make the green 'OK' button now red, and you make it blue"

I did not fully read the introduction yet, but in my mind, in a truly content- addressed system this is not a conflict: you have the hash of a main() function which ultimately makes the button red, and the other guy has a main() function that makes the button blue. No conflict in the physical sense. Yes, philosophycally there is a conflict, which is resolved by you deciding which main() function you find more useful.

<comment><USER11> Of course there are still conflicts everywhere.

Developer A makes the button red, developer B changes the label from "OK" to "Accept", both inside the same function.

You can't just pick one or the other, you have to combine the changes.

Or two developers add two different fields to a type. Or ...

Sadly the docs only have placeholders for "Concurrent work and resolving edit conflicts" and "Pull requests and collaboration". Would be very interesting to read the developers thoughts on this.

The system seems to support patches, forking and merging.

<comment><USER10> Hmmm, interesting. It is getting a bit philosophical: you can view it as a conflict. But you can also view it as: hm we have these nice 2 main functions. Let's create a merged one. Kind of what was previously conflict resolution becomes part of regular programming... A slight perspective change.

<comment><USER12> There's nothing philosophical about it! There will exist a conflict as far as Git (or any other) version control system is concerned. That's all he saying!

<comment><USER13> The files holding the ASTs are append-only. So you get:

PR #1: appended stuff

PR #2: appended stuff

So there is no merge conflict in the git sense.

<comment><USER14> It seems to me that if we both edit the same function then we end up with three functions in store (original + two modified). Now obviously I want the main function to call _my_ new version function and you want the main function to call your version. So in the end there is a conflict _somewhere_ \- even in the git sense.

If that conflict always shows up in one single line saying what hash of the main function is the one to use - then it doesn't seem like a huge improvement in terms of conflict handling. Conflicts bubble to the root hash. I assume they thought about this and have some sort of tooling for "traversing" conflicts from the root, choosing my function, your function, or allowing a merged function to be created.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> I find the content-addressed, name-independent, immutable (kind of blockchainy) approach to source code very interesting. On the other hand this seems to be rather orthogonal to other (semantic) aspects of the language.

I wonder what would happen if we would change one thing at a time to test the idea: create something like unison based on an existing popular programming language. (python, javascript, java, etc...) All the syntax handling, building and version control would be done the unison way, but the interpreter would be the same as today in that popular language. The benefit would be that a lot of existing code could be transferred into the initial 'blockchain', with all the current dependency hell being solved from day one. I did not think this through deeply though... Maybe some aspects of existing languages prevent them to be handled the 'unison way'?

<comment><USER15> I tried something like that in 2016 with Javascript. I parsed the source code and put every AST node on IPFS and linked it to the other node using the hashes. The problem was that this is a _lot_ of overhead...

<comment><USER16> Spent a year doing R&D into storing a "abstract syntax DAG" consisting of extremely rich syntax nodes (effectively entire programs/modules). That overhead you mentioned is why we decided that failure was a good result.

</comment></comment></comment><comment><USER17> "Unison: a new distributed programming language" by Paul Chiusano [1]

1: [https://www.youtube.com/watch?v=gCWtkvDQ2ZI](https://www.youtube.com/watch?v=gCWtkvDQ2ZI)

<comment><USER11> This talk highlights the benefits and interesting features of Unison much better than the docs.

Highly recommended.

<comment><USER18> The video is from Sep 15, 2019 and still more useful than their website? Anyone have a transcript to link?

</comment></comment></comment><comment><USER19> Algebraic effect handlers no doubt seem to be the future of getting side- effects under control in programming languages, much like in the way of what immutability has done for data.

My (admittedly little) experience with Unison though is that it's far from ready for the spotlight however. Much of the docs 404, and joining their discord mostly resulted in the advice to wait for future releases.

I wish Microsoft would invest in something like the koka language [https://github.com/koka-lang/koka](https://github.com/koka-lang/koka). Perhaps the idea of content-addressable / immutable code could find a place too, but I think it's less critical.

<comment><USER20> > I wish Microsoft would invest in something like the koka language

Given the ML-like syntax of Unison, it would be nice to see F# taking some of the key ideas.

<comment><USER21> F __*,[https://www.fstar-lang.org/](https://www.fstar-lang.org/)

</comment></comment></comment><comment><USER22> I have learned a lot from the creators Paul and Runar in that past. Their book on FP is legendary in some circles. Unison seems like a super ambitious undertaking, but I wouldn't bet against this team.

</comment><comment><USER23> I recently came across Unison through YouTube recommending me a series of videos from the "Strange Loop" channel [1]. The fundamental idea of uniquely addressing functions based on a hash of their AST is mind-blowing to me. Immediately my mind started to consider many of the possible paths such an idea could lead down, many of which are clearly tickling the minds of many of the commenters in this thread.

My first thought was the same insight from von Neumann architectures: code is data. So I thought of package repositories with URLs corresponding to hashes of function definitions. [http://unison.repo/b89eaac7e61417341b710b727768294d0e6a277b](http://unison.repo/b89eaac7e61417341b710b727768294d0e6a277b) could represent a specific function. A process/server could spin up completely dumb other than bootstrapped with the language and an ability to download necessary functions. You could seed it with a hash url pointer to the root algorithm to employ and a hash url to the data to run against and it could download all of it's dependencies then run. I imagine once such a repo was up and running you could do something like a co-routine like call and that entire process just happens in the background either on a separate thread or even scheduled to an entirely different machine in a cluster. You could then memoize that process such that the result of running repo-hash-url against data-hash-url is cached.

e.g. I have [http://unison.myorg.com/func/b89eaac](http://unison.myorg.com/func/b89eaac) run against [http://unison.myorg.com/data/c89889](http://unison.myorg.com/data/c89889) and store the result at [http://unison.myorg.com/cache/b89eaac/c89889](http://unison.myorg.com/cache/b89eaac/c89889)

1.[https://www.youtube.com/watch?v=gCWtkvDQ2ZI](https://www.youtube.com/watch?v=gCWtkvDQ2ZI)

</comment><comment><USER24> This is cool.

I've wanted to see a Merkle tree based AST for faster incremental compilation (and incremental static analysis).

I wonder if the source manager interface makes this easier to use than editing source files?

AST can still be the source of truth. To edit need to generate source text from AST, edit as text, parse to AST, save.

In other words, I think most of the benefits of this can live behind the scenes for other languages.

<comment><USER25> I don't think you can have a proper Merkle _tree_ if cycles are possible, and cycles definitely are possible in this AST representation: [https://www.unisonweb.org/docs/faq#how-does-hashing-work- for...](https://www.unisonweb.org/docs/faq#how-does-hashing-work-for-mutually- recursive-definitions)

</comment></comment><comment><USER26> I like the idea of syntax-tree rather than filesystem directories (if that's the main difference).

Seems like this could be implemented in other languages though, and don't really understand why we need yet another new language.

For instance, can I not build my JavaScript code in similar ways: I would need a compiler that stores things in trees rather than dirs.

<comment><USER27> The big issue is the presence of cyclic dependencies between parts of code. If a piece of code is identified by its content, and its identifier is the Merkle root of its parts, then you can't possibly have cycles because you can't compute the hash of a parent before computing the hash of its children (which in turn depend on the parent). You have to use DAGs or plain old trees and eliminate any cycles.

So to get it to work with other languages, you would need a way to convert their abstract syntax into a DAG compatible structure. It may be possible to do so, but I doubt there is a general approach which will work across multiple existing languages. It would require per-language hacking, if it is even possible without rewriting some parts of code.

Seems like languages like OCaml and F# might be slightly more suitable for this approach because they require compilation units to be ordered by their dependencies, and thus promote a convention of avoiding cyclic dependencies between types (although it is possible to make such dependency in the same compilation unit with `type A and B`). They also allow recursive functions, but these should be simple enough to represent with a non-cyclic syntax tree.

If you design a language from scratch, you can simplify things by requiring that no cycles exist in the language - at least at the syntax tree level. You might be able to design representations for recursion at a higher level which collapse to non-cyclic structures in the AST.

</comment></comment><comment><USER28> No mention of Smalltalk in the comments? The "codebase" that is managed by ucm sounds very similar to Smalltalk images. I am personally delighted about this.

</comment><comment><USER29> "As a result, a Unison codebase can be versioned and synchronized with Git or any similar tool and will never generate a conflict in those tools"

Conflicts are a feature, not a bug. If two developers are making divergent changes in the same piece of code, I suppose Unison would just let the divergence happen, essentially forking the code. I don't think forking code is the right default.

</comment><comment><USER30> Very cool. Glad to see someone tackling the idea I first saw brought up by Joe Armstrong[0]. When I read his post it made so much sense, I was hoping I'd get to see someone try it.

[0] [https://joearms.github.io/published/2015-03-12-The_web_of_na...](https://joearms.github.io/published/2015-03-12-The_web_of_names.html)

<comment><USER31> from the link:

> Once we have the SHA1 name of a file we can safely request this file from > any server and don't need to bother with security.

> For example, if I request a file with SHA1 > cf23df2207d99a74fbe169e3eaa035e623b65d94 from a server then I can check that > the data I got back was correct by computing its SHA1 checksum.

—-

that's crazy! i've had the same thought myself, and wondered why no one had done something like that... i hope this becomes more and more common (though not using sha-1 ^^)

<comment><USER18> There is bunch of systems implementing things like this, commonly referred to as "content-addressable storage" as the address of the content is based on the content itself. See [https://en.wikipedia.org/wiki/Content- addressable_storage](https://en.wikipedia.org/wiki/Content- addressable_storage)

<comment><USER31> that's really cool, thanks for the link

</comment></comment></comment></comment><comment><USER32> Content-addressed, immutable code? Reminds me of [https://thedailywtf.com/articles/the-inner-json- effect](https://thedailywtf.com/articles/the-inner-json-effect)

</comment><comment><USER29> At first, this sounds like a great idea. On second thought, I have two major categories of concerns:

1) If I fix a bug in a function, (thus creating a new version of an existing function) how do I propagate that fix to all that code that transitively depends on the buggy version? Doesn't that mean I need to create new versions of all the downstream dependencies? Doesn't that defeat separate compilation? Does this scale?

2) Does this closely couple interface and implementation? Is it a hash of an implementation, or a hash of an interface? Is it possible to depend only on an interface, and not on an implementation?

<comment><USER27> > 1) If I fix a bug in a function, (thus creating a new version of an existing > function) how do I propagate that fix to all that code that transitively > depends on the buggy version? Doesn't that mean I need to create new > versions of all the downstream dependencies? Doesn't that defeat separate > compilation? Does this scale?

This can vary depending on how many dependants the code you change has. If you have some fundamental type which an entire codebase depends on, then modifying it will essentially require recomputing hashes for the most of the codebase. On the other hand, if it's something close to the entry point, you would only need to recompute a few hashes and the root hash which represents your entry point. Any parts which are unchanged effectively have their hashes cached.

> 2) Does this closely couple interface and implementation? Is it a hash of an > implementation, or a hash of an interface? Is it possible to depend only on > an interface, and not on an implementation?

I don't think unison has interfaces or any similar construct yet. There's an FAQ item mentioning why type classes are not included[1] yet.

Personally I think the right approach would be to use a structural type system similar to OCaml's. You would have functors which describe the code you're calling, and call sites would use the hashes of the functor definition. You can then define concrete representations of types independently of the functor, and instantiate them against the functor afterwards. Thus, if you change some implementation detail in a type, then the only hashes that will need updating are those of your concrete type and the instantiation of the functor against your type. The functor, and any code which depends on it, will remain unchanged.

[1]:[https://www.unisonweb.org/docs/faq](https://www.unisonweb.org/docs/faq)

</comment></comment><comment><USER33> Hell yea, we can finally move forward with editors now. No more saving files with syntax errors. I imagine you could move a lot of paredit functionality into an editor like this, or have excellent voice editing.

</comment><comment><USER34> > A friendly programming language from the future.

I loathe marketing BS like this. No, you're not from the future, you pretentious twats.

If you have a good idea, let it stand on its own merit, don't dress it up with manipulative language.

</comment><comment><USER35> A TLDR for the tour[0] based on my understanding (please fix me if I'm wrong):

Unison is a functional language that treats a codebase as an content addressable database[1] where every 'content' is an definition. In Unison, the 'codebase' is a somewhat abstract concept (unlike other languages where a codebase is a set of files) where you can inject definitions, somewhat similar to a Lisp image.

One can think of a program as a graph where every node is a definition and a definition's content can refer to other definitions. Unison content-addresses each node and aliases the address to a human-readable name.

This means you can replace a name with another definition, and since Unison knows the node a human-readable name is aliased to, you can exactly find every name's use and replace them to another node. In practice I think this means very easy refactoring unlike today's programming languages where it's hard to find every use of an identifier.

I'm not sure how this can benefit in practical ways, but the concept itself is pretty interesting to see. I would like to see a better way to share a Unison codebase though, as it currently is only shareable in a format that resembles a .git folder (as git also is another CAS).

[0]: [https://www.unisonweb.org/docs/tour](https://www.unisonweb.org/docs/tour)

[1]: [https://en.wikipedia.org/wiki/Content- addressable_storage](https://en.wikipedia.org/wiki/Content- addressable_storage)

[2]: [https://github.com/unisonweb/quickstart](https://github.com/unisonweb/quickstart)

PS: The website is very well made, but I would like to comment that there should be two buttons on the top front page, the tour and installation, as I think most people want to have a glimpse of the PL before installing. I, at least was puzzled because I thought the button was a link to an introduction of the language.

</comment><comment><USER36> Wondering if Unison was designed as (or ever planned to become) a general- purpose language or it something more domain-specific, e.g. distributed computations.

</comment><comment><USER37> This is seriously impressive. I've always felt that some kind of database system is needed for code in which you store each function individually. Unison not only has that, it goes one step further to identify a function by its hash. I can't wait to see what the world of programming can become along this direction.

</comment><comment><USER38> Append only is nice, but I would think a "Garbage Collect" would be useful. Remove all the code not attached to the import tree anymore. Otherwise you will just keep collecting junk forever Honestly git has the problem too, but I expect orphaned/dead code will happen a lot more with this approach.

<comment><USER39> Git has this problem only as far as the developer's storage of the history of all files is concerned. That "junk" doesn't remain in the final program.

You can have a decades-old git repository containing hundreds of MBs of files, but output a 2kB program. Someone correct me, but it sounds like if you had the same thing with a unison project, the actual executable size can only grow?

<comment><USER40> My assumption is the content store can only grow, but any executable produced from it would only contain live code.

</comment></comment></comment><comment><USER41> Was thinking of writing this years Advent of Code in Unison but changed my mind because of its very young age and switched to Zig instead. But I'll very much consider it for next year. I really think some of its ideas are, if anything else super cool and worth learning and thinking about.

</comment><comment><USER42> Does anyone know how concurrency is handled on Unison? I couldn't find any references in the docs.

<comment><USER43> There's an example in this talk: [https://youtu.be/gCWtkvDQ2ZI?t=1903](https://youtu.be/gCWtkvDQ2ZI?t=1903)

Basically you can quote code (like in Lisp) and pass it to an executor (thread, remote server, ...).

The main difference is that thanks to the immutability, you can also have a protocol which shares efficiently all the dependencies required to execute the code (like a git pull).

It also uses an effect system, so the implementation does not need to decide which executor to use, it only uses an interface called an "ability", and the caller can choose the implementation.

</comment></comment><comment><USER44> Maybe I'm missing something, but this seems like it would get unwieldy very quickly for anything more serious than toy examples.

Even the toy examples I'm having trouble following along with.

The benefit of code-as-text is that you can navigate the text without knowing what you are looking for.

This seems to take the opposite approach of making it very easy to look things up _assuming you know ahead of time what you are looking for_.

That is something that a good usage of grep or some more sophisticated IDE integration will already take care of for you.

The only thing I could see this being potentially useful for is "notebook" style computation, where you are really only using the language to do things like structured math calculations.

What am I missing here?

<comment><USER13> > What am I missing here?

I think IDE tooling for Unison could pretty easily give you the exact same experience. Generate code from the AST, group it reasonably, and give you a view that is indistinguishable from a traditional source tree.

It might be non-trivial to structure things nicely, but I think theres a good chance your generated structure would be better organized than a traditional codebase.

</comment></comment><comment><USER45> For a good introduction, watch this talk at 1.5x speed from 2:50 to 5:40

[https://youtu.be/gCWtkvDQ2ZI?t=170](https://youtu.be/gCWtkvDQ2ZI?t=170)

</comment><comment> Avi-D-coder I really like the idea, I like the language, but the world will not be rewritten in Unison. A web assembly FFI story is needed for Unison to succeed.

<comment><USER20> Is this satire? Web assembly has no real adoption on the browser yet, is waiting for a standard I/O interface on the desktop to be useful and is itself the nth iteration of an old concept.

<comment> Avi-D-coder Web assembly is the first time a binary assembly has been adopted as an open web standard. What do you propose as an alternative safe sandbox for other languages?

Large quantities of code can already be compiled to WASM. Since Unison works best with pure functions, most system interfaces would presumably be emulated. This emulation is already possible with Browsix.

</comment></comment></comment><comment><USER46> Related from 2015: [https://news.ycombinator.com/item?id=9708405](https://news.ycombinator.com/item?id=9708405)

A larger thread, also from then: [https://news.ycombinator.com/item?id=9512955](https://news.ycombinator.com/item?id=9512955)

</comment><comment><USER47> Is the Unison codebase manager written in Unison?

What other user-facing open-source softwares have been written in Unison?

Which of those softwares has been used for months or years by at least one person?

</comment><comment><USER48> I found this rather incomprehensible.

</comment><comment><USER49> Maybe I've been out of the game or something. But I don't think saying everything is "content-addressed" can land as such of a big mic-drop moment when I've never heard the term or the concept in my life and the front page does absolutely nothing to explain it beyond that.

\</comment><comment> EDIT: My tone here is a little more antagonistic that I meant (proofread kids, don't just check for spelling and publish) but my first impression was a kind of "buzzword-y" vibe. I've looked a bit more and the authors seem genuinely passionate about shaking things up and trying something completely different, which I can respect. I'll leave it up as is because I still think my issue are legitimate, but the tone is a little off and I apologize. \</comment><comment>

Let's take my discovery path so far as an example:

> Functional language: cool cool. I know what that is. Immutable: also cool. > Content-addressable: no clue. Saying it'll simplify code bases and eliminate > dependency and "no builds" is supposed to sound amazing, but it really > doesn't land when I have no clue what the premise is.

> Alright, that's it for the front page. No code examples, nothing linking the > currently known to this new paradigm-shifting stuff. K. Let's try the docs.

> The Welcome is the state of the project without saying anything about the > language itself. Roadmap isn't gonna help Quickstart! Let's look there.

This amount of effort for discovery isn't very helpful for me. I found a selection of talks elsewhere on the site. One of them is labeled "This is a longer (40 min) introduction to the core ideas of Unison and probably the best talk to start with." That might be a nice link for the front page.

I unfortunately don't have anymore time to look at this this morning, but the first 5 or so minutes of the talk say waaaaaaaaay more than the first however long I spent. Honestly, I think all of that information (code examples, linking core ideas to what we already know, basis of comparison) could be on the front page.

The tl:dr I can glean from it is:

It's kinda like Haskell, but every definition is turned into AST and put in a hash table. Any references are secretly references to the table, so changing a definition is making a new hash and changing the reference, and renaming is changing the reference to name table.

Also, everything is append instead of rewrite, which makes all kinds of stuff cleaner, like versioning and refactoring.

Pretty neat idea, I just don't really like how long it took me to come to that knowledge. I don't know how well it would scale or be usable in a real world scenario, but I also have never used Haskell or any functional language in a "real world" scenario so I'm not the best one to ask.

<comment><USER50> Hey; Unison author here—

Definitely appreciate this honest and helpful, specific docs feedback, so thanks for taking the time to put it together. We do want the value of Unison to be straightforward given even a quick skim of the site, so: sorry about the current state, we'll try to improve it. :)

<comment><USER49> No worries. I guess it sounded a bit antagonistic, I apologize for that. I am actually interested in the idea, I was just a little frustrated that it was hard to figure out what was different about the language.

<comment><USER50> It just sounded honest. ¯\\_(ツ)_/¯

It's mainly just an issue of manpower on our end (we do accept doc contributions, but probably we should be doing it); having fresh reader eyes on it like this is still valuable though.

<comment><USER49> > It's mainly just an issue of manpower on our end (we do accept doc > contributions, but probably we should be doing it); having fresh reader eyes > on it like this is still valuable though.

That's absolutely fair, and tbh probably the problem. I've probably been thinking about the concept for so long that it doesn't occur to you that the phrase wasn't that well known.

I remember a multi-year project in college I was trying to explain about, and blew right through "potential energy surface" and lost him completely. I didn't realize it was something I'd have to explain.

</comment></comment></comment></comment></comment><comment><USER51> >>code is content-addressed and immutable.

No, as I keep insistently repeating: Code is content-immutable and addressed.

Also, Urbit is a lie, Surface detail is true and you are a lie and your code is retarted.

</comment><comment> stef-13013 The language of the month... (Can't wait february)

<comment><USER52> Looking at their GitHub [1], it's been actively developed and open source since 2013.

[1] [https://github.com/unisonweb/unison](https://github.com/unisonweb/unison)

</comment></comment><comment><USER53> The name is already pretty taken....

[https://en.wikipedia.org/wiki/Unison_(disambiguation)](https://en.wikipedia.org/wiki/Unison_\(disambiguation\))

<comment><USER54> That list looks like its very available to me? The only overlap with software are two unmaintained projects.

<comment><USER55> It's incomplete. There's at least the Unison file synchronizer as well:

[https://www.cis.upenn.edu/~bcpierce/unison/](https://www.cis.upenn.edu/~bcpierce/unison/)

<comment><USER50> And the Unison programming language:

[https://www.unisonweb.org](https://www.unisonweb.org)</comment></comment></comment></comment>


What's a Startup, Anyway? - <AUTHOR> http://www.whattofix.com/blog/archives/2010/10/whats-a-startup.php

<comment><USER2> It's a lot easier to say what's _not_ a start-up than what is a start-up.

IBM: not a start-up.

Your side project that makes $2 on adsense every month: probably not a start- up (but it might still become one).

You and your buddy working hard together on some web-app that nets you $2K per month and has your eyes locked on the 'growth' stats: most definitely a start- up.

Things like location, funding and so on have little to nothing to do with it.

<comment><AUTHOR> It amazes me how easy it is to get distracted from the basic definition.

For instance, I've read tons of articles that talk about young teams as being so great because "they don't know enough to know what is impossible." The implication is that a young team can change the world and do great things.

That's a wonderful point, and I agree with it. _But it's not a startup_. The whole reason for the big-idea, change-the-world observation is that ideas that change the world tend to scale very rapidly. And _that's_ the definition of startup.

Easy to lose track of the main goal in all the bloggery and such.

<comment><USER2> So, to clarify, by your definition someone that does not have an original idea and that won't/can't scale rapidly is not doing a start-up?

<comment><AUTHOR> I must have worded that poorly. Nope, I don't think the idea has anything to do with it. It's the scaling.

You can have old, boring, been-there-done-that ideas and have a great startup: as long as you can scale. In fact, I think it works the other way -- the more boring and mundane your idea, as long as it can scale, the easier it probably is to execute. Lots of folks want to make the next Twitter. Very few folks want to help plumbers find the right hex nut when fixing antique toilets (or something like that)

</comment></comment></comment></comment><comment><USER3> _How about working in Silicon Valley? Everybody knows that all the "real" startups are out there.

I'm calling bullshit on this, once and for all. I love SV, and I love the entire Bay Area, but it's not a requirement for startups._

He's mostly right, but he's also playing into the black-and-white fallacy. No clear-thinking person would say that being in SV is a requirement for a "real" startup. (It's not even technically true anymore, since I've been noticing that more and more startups are popping up with main offices in SF instead.)

It's just that it's more likely that you'll find startups in SV. Culture, draw, etc. It's true -- but don't mention that to the Foursquare boys in NYC.</comment>


Results of Stack Overflow survey of 20,000 developers - <AUTHOR> https://www.statwing.com/demos/dev-survey-2#workspaces/18726 <comment><USER2> Seemed like an awfully large amount of developers make less than 20 grand.

I did some analysis that I think is a little more useful.

Compensation & Job => filtered by 'US only', 'not looking for a job', and 'provided a job'. [https://www.statwing.com/demos/dev- survey-2#workspaces/18770](https://www.statwing.com/demos/dev- survey-2#workspaces/18770)

<comment><USER3> Well, the mytho that a developer get a lot of money only fly in USA, maybe?.

Outside it? Well, at least in latin america US 5000/Year is _normal_.

A lot of good developers I know are clearly below the hour rate one in USA get. We do it because we love to programming, but here is well know that is very hard to be "rich" as a developer.

In fact, that is why I quit my job then do my own projects, consulting and freelance: I still not get a lot of money -however, I charge more than a lot of my peers (us 30-40/h), but certainly can work with things I like more.

<comment><USER4> I'm from Argentina, and used to work (a long time ago though) with developers from Venezuela an Brazil.

Not even an entry level developer makes U$d5000 a year, unless he is not working full time and even that would be stretching it. Entry level jobs in shitty places get you arround u$d7500/8000 a year. First job in a big company after you graduate gets you arround u$d11000/year, and with 2 or 3 years of experience you can get u$d15000/year easily if you are worth the investment. Upper tier jobs (manager, project leader or research for a big corporation, working remotely for someone in the US/Europe, consulting) start in u$d20000/year and can easily get to u$d30000/year.

That is using Argentina's and Venezuela's black market exchange rate, or Brazil's official one.

In Argentina even a PhD candidate gets more than u$d5000 a year from his publicly funded University. No idea about Brazil/Venezuela on this.

<comment><USER5> I have the stats from the Uruguayan Chamber of Software (CUTI), for the average salaries here in Uruguay (which is admittedly one of the better paying countries in South America) based on 330 companies (most are small, low-paying shops), and from my experience, they're what people are actually getting (in the IT industry, service companies pay more):

Monthly salary before taxes (take home pay is between 80% to 60% for the highest salaries)

Junior Dev (0 to 3 years): U$ 1000/month - U$ 12.000 year before taxes (but almost untaxed, maybe 10% in taxes)

Intermediate (3 to 7 years): U$ 1250/month - U$ 15.000 year before taxes

Senior (> 7 years or exceptional): U$ 1850/month - U$ 22.000 a year before taxes

Tech Lead/Super Senior: average U$ 2500/month (before taxes) so U$ 30.000 a year before taxes

Project Manager (Dev Lead or actual manager, not PM role): average U$ 2500/month (before taxes) so U$ 30.000 a year before taxes

Many of the better and smarter developers either open up their own consulting shops (making a lot more than those averages), or work remotely.

The best developers I know of make about U$ 40.000/year before taxes.

I'm currently stuck at the "senior" level, the thing is the cost of living isn't that much cheaper than in other countries so I really want to make more, so I must start working remotely if I want to break the salary barriers here.

<comment><USER6> You can get 40% taxes on high income? thats nuts.

The cost of living in SF is crazy, 40k in Argentina , in terms of nominal value, after taxes are probably around 32k/y, 2600 net dollars per month. Rent of a 1 bedroom place in a decent neightborgood=> 400 U$S a month. Grocieries, living costs, going out,etc,say..250 U$S? Lets make you a party animal and big spender at 400 U$S a month for that.

So after takes and expenses, 40k a year in argentina yields you 1800U$S a month.

In san francisco, a 1br for yourself is 2k a month at least. Work often provides food, but if it doesnt, at 10 dollars a meal avg you get 10 x 30 x 2 = 600U$S in food alone. Restaurants, shows, going out, drinks, add 200 U$S a month, if you go out weekly.

That ends up being about 2800 U$S per month only on rent+food. To be able to nominally save 1800U$S a month, you have to make 4600U$S pre-tax, which at 28% taxes, ends up being about 70k annual income.

The point of this exercise is to measure the impact of cost of living on salary: it definitely makes a dent(you need 30k a year more in San Francisco for the cost of living difference). However, its very easy to make 100k+ in the bay area working for a startup (and more if you work for facebook or google), which means you will always make way more money working in a startup in the us,than any income bracket in uruguay.

(assumption: cost of living in Uruguay ~= Argentina)

<comment><USER5> Cost of living in Uruguay is higher than in Argentina at the moment, mostly due to rent being close to twice as much.

I pay U$ 700 in rent+expenses and it's not uncommon in a "good" neighbourhood (I was paying close to U$ 1000 before, including very high apartment expenses, in one of the better neighbourhoods called Punta Carretas, think Palermo, before I had to downsize).

If you own your own home, living becomes much cheaper, but I don't :( and they're incredibly expensive right now (the housing bubble never burst here, though it has slowed down).

Food is more expensive here as well, but not as much as housing.

I pay U$ 700 for food and going out for 2 people (We do eat takeaway and go out a lot, so it's definitely not normal. But I get paid U$ 300 in meal vouchers which suck).

So I have U$ 400 for the rest (including gas, insurance, medicine, any extra expenses...), so I basically can't save (I could if I cut down on the eating and going out part).

"Real" salaries are higher I think, so it makes up for a bit of the difference between Uruguay and Argentina.

But still, I'll never be able to afford a house unless the housing bubble bursts or I start working abroad.

I'm including social security and healthcare in the "taxes" part (that's why I said take home pay could be 60%), I get deducted 17.5% of my nominal salary for social security, 20% for taxes, and 5% for healthcare. To make it worse, I actually get paid a part of the remainder in "meal vouchers" called Tickets Alimentación.

[http://en.wikipedia.org/wiki/Meal_voucher](http://en.wikipedia.org/wiki/Meal_voucher)

<comment><USER6> I see, thanks for the data.

Rent in Argentina is crazy low in proportion to property pricing. As rent grows 20% year over year on contract, and inflation is higher, rent is lagging behind. I remember my absolute dollar value rent going down from 400U$S to 350U$S, in a 1 br 82m2-next to subway-first occupant appt.

Inflation really does a number on the economy.

And Im glad meal vouchers dissapeared in argentina, we had all sorts of them 8 years ago.

Regarding property prices in Uruguay, don't you have a reliable mortgage industry? Ours is ridiculously small, and inflation makes it risky and unreliable for both lenders and borrowers.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> The data itself is really interesting! But the UI, gee, lots of frustration with tiny scrollbars, things not fitting on my large monitor, mal-aligned tables if scrolled right, gigantic help screen appearing everytime you close something, ">" and "$" of the values used in alphabetical sorting, ... I'd prefer oldschool HTML tables over this...

<comment><AUTHOR> Hey, can you shoot me an email at contact @ statwing? I'd love to hop on a screenshare for 10 minutes.

Agreed that the gigantic help screen thing upon close is dumb. But a couple of the things you mention sound more like browser-related issues/bugs, we'd love to see them live for a second.

<comment><USER7> Hello,

Thanks for seeing the feedback! I'm sorry, screenshare will not work out, but the platform I used is Firefox on Linux. The misaligned tables happen when the data is wide, so there is a thin horizontal scrollbar at the bottom that only appears on hover (which my personal taste doesn't like, sorry about that). When using that scrollbar to go all the way to the right, the top labels of the table are misaligned.

The thing is, the data would be easier to view if it would simply be wider and the browser could arrange the scrolling of the whole screen(e.g. left/right arrow keys would do it).

<comment><AUTHOR> Point taken about the scrollbar only showing on hover, definitely an issue.

For context, there's some tricky issues that come up in building a way to view tables that can scale to 10,000s by 10,000s (e.g., you can't just plop down the html, even though that would suit this particular dataset well). Definitely still got some kinks to work out.

And thanks for reporting the misaligned tables on Firefox/Linux thing.

Cheers, and thanks for the feedback.

</comment></comment></comment></comment><comment><USER8> Some things I noticed:

\- 55% of programmers surveyed are making less than $20k/yr, which is ridiculous.

\- 4.9% of programmers surveyed are women

\- 2.7% of programmers surveyed are 51+

\- 17.5% of programmers earning less than $20k/yr live in California.

That last fact caught my eye, so I did some math:

This article ([http://www.wired.com/2014/04/no- exit/](http://www.wired.com/2014/04/no-exit/)) says that the author pays $1250/mo "for a mattress on the floor, behind a panel of imbricated torn shower curtains, in an unheated rabbit warren of 20 bunk beds under a low converted-warehouse ceiling." Assuming they all live in the same space that the author lived in, they spend $15000/yr on rent alone. Assuming that they have health insurance, a cell phone plan, and pay $3/day for transportation, they have (and I swear I'm not making this up) about $3.50 per day to spend on food.

<comment><USER9> I'm a full time developer Java/SQL, finishing a MBA... and I still make < $20k/year. It's ridiculous in USA, but in LATAM it's sad reality.

<comment><USER10> In which city do you work? If you go to a big IT center in Brazil such as São Paulo or Campinas, $20k/year is just a little over the starting salary for a new grad from a top school. There's LOTS of worse positions, but this is not really that hard to find, considering that HN crowd is probably more qualified than the average developer...

<comment><USER11> That's true in Mexico too, if you work for small or local companies in a small/middle city, <$20,000 is almost the rule, but if you go to bigger cities, having enough English skills, with international companies, then salaries are incremented at least 100% (but still far from salaries in the US). That according to my experience, coming from an 800,000 citizens city to Guadalajara second biggest city in Mexico.

</comment></comment></comment></comment><comment><USER12> Aaaargh. This really frustrates me. I would rather have a bunch of text files and a link to the R manual.

Really, this is Stack Overflows annual "OK Cupid" moment and instead of a really linkable blog post with two gee-whiz insights I get "here you go, find an insight by spending two hours learning a UI you will never need again"

Did I miss the blog where they had already looked at the data themselves?

<comment><AUTHOR> Pre-analyzed results are available here, also downloadable: [http://blog.stackoverflow.com/2014/02/2013-stack-overflow- us...](http://blog.stackoverflow.com/2014/02/2013-stack-overflow-user-survey- results/) [http://blog.stackoverflow.com/2013/01/2012-stack-overflow- us...](http://blog.stackoverflow.com/2013/01/2012-stack-overflow-user-survey- results/)

This was just us at Statwing grabbing their data (with permission) and sticking it into our software with the goals of making it easy to explore and exposing folks to Statwing.

<comment><USER12> Thank you.

</comment></comment></comment><comment><USER13> After 6-10 years of experience, some bunch of people wind up self-reporting as 'full stack'.

After 10 years, this declines and they become 'Manager / Team Leader' or 'Other', categories which previously did not self-report very much.

Not super fascinating, but it confirms my own path (15 years commercially and counting).

</comment><comment><USER14> This is really cool - I found it interesting relating the "job satisfaction" statistic with various other things like "hours per week: fixing bugs" or "hours per week: meetings." It goes pretty much as you would expect except that the two extremes seem to have the highest satisfaction. The only one that was exactly like I would have expected was "hours per week: technical support"

</comment><comment><USER15> Did they do some filtering of their users or just raw data? In that case they asked 20000 _stackoverflow users_ , and their results will not be representative of developers as a whole.

</comment><comment><USER16> I wanted to make fun of it too but started playing with the data and found it to be really easy and actually a lot of fun.

How dare they ruin a good cynical take.

<comment><AUTHOR> Ha. We apologize. Oversight on our part, we're normally more loyal to our good friend cynicism.

For what it's worth, this demo is a bit less fun than typical because all the data is categorical (i.e., almost all of it stems from multiple choice questions).

Our more typical demo dataset--every project run on the DonorsChoose, like KickStarter for teachers--includes numbers and times, such that you get a lot more variety in output: [https://www.statwing.com/demo](https://www.statwing.com/demo)

<comment><USER17> I think 80% of the software developers never find a job in it and 90% never write a single line of useful code.

This is what the survey says.

<comment><USER18> Yes how many of the respondents where actual working professionals as opposed to students and so on.

</comment></comment></comment></comment><comment><USER19> Full time remote workers have the highest average salary. That's an interesting data point. Correlation is not causation obviously, but it's interesting that the more time you spend out of the office, the more money you make. (Compensation plus bonus)

<comment><USER20> The reason could simply be that the pool of jobs available when you work remotely is larger/of better quality than the pool of jobs available within a reasonable distance of where you live.

Buying a house is also negatively correlated with salary [1] for a similar reason: you are less likely to relocate for a better job (whatever your definition of better is) when you own a house...

[1] can't find the source for that claim, sorry.

<comment><USER19> Could be. Could also be that people who work from home are more likely to ask for what they want. Working from home would be one indicator of that.

</comment></comment></comment><comment><USER21> Compare OS and compensation. Apparently all the highest paid developers use Windows 7.

<comment><USER22> Enterprise?

<comment><USER23> What is "enterprise" in this context? Do they work for an enterprise SaaS/vendor or for an actual enterprise, aka big businesses that use software? I don't think either of those are particularly better paid than the other groups.

I think it's more likely that the best paid programmers are working in a field with specialized software that only runs on Windows. For example, EEs use Windows almost universally for Altium/Cadence/Mentor Graphics software which means that the majority of commercial firmware compilers and IDEs are Windows only too (even though many are forks of cross platform tools). The same is pretty much true of biotech too: a majority of the software that interfaces with hardware, especially lab automation, is on Windows so anyone dealing with those specialized fields would be start with Windows and run VMs for everything else.

Another explanation would be hardware support. My workstation has a high end but not a server mobo (with funky features like Marvell's weird simulated RAID) and dual SLI K-series GPUs (professional/super computing). Getting Ubuntu 14.04 to even boot up, let alone properly deal with monitors and peripherals like a 3D mouse coming and going, takes at best an entire work day. Windows 7 with NVIDIA's drivers and VMWare leave much to be desired if you're a fan of Linux but they just work, especially if you have to do anything with CUDA at the same time as your main line of work.

Also: Visual Studio.

<comment><USER24> It was a joke.

</comment></comment></comment></comment><comment><USER25> I enjoyed 'hours surfing the internet' for those 'currently looking for a job.' If you have enough time to stay employed and surf the internet: you probably just feel like you're employed to receive a paycheck. Not challenged at all and seeking adventure in a new shiny grass field. Let's read about those greener fields (or burn time) instead of acting on it.

<comment><USER26> As someone with debt and family and school obligations... It can be _very_ hard to act on something like that. I feel trapped.

</comment></comment><comment><USER27> Would love to see some analysis of the data. Too lazy to do it myself.

<comment><USER28> There is a subtle but statistically significant relationship between effort and reward.

<comment><USER29> There is a significant relationship between willingness to invest effort and potential payoff. Spending ten minutes playing with what is essentially an online pivottable to _possibly_ find learn an interesting but ultimately useless factoid counts for me as a large investment for a low payoff.

<comment><USER30> The video helped tremendously. Without it I was completely lost.

<comment><USER31> what video?

<comment><USER30> Analyzing data in Statwing

Select variables

Analyze

Video Tutorial

[ VIDEO TUTORIAL HERE ]

</comment></comment></comment></comment></comment></comment><comment><USER32> Only ~13k of the 20k reported a StackOverflow reputation, and none of them had more than 10k rep? That seems odd.

<comment><USER33> No, that makes perfect sense. The ones with the high SO rep are the ones that have the most time on their hands, the others are clocking up paid hours.

<comment><USER32> Joking aside, I'm genuinely confused as to how you survey that many of the site's users and get no one with rep above 10k. Especially considering that high rep users are much more engaged and invested in the site, and so I would expect a much higher response rate from them.

<comment><USER33> What's my rep?

</comment></comment></comment></comment><comment><USER34> It's a fun data set to explore, but without the ability to compare interaction effects the UI doesn't allow you to get very deep into the data. Also, it'd be nice to be able to filter out the highly correlated tables.

Otherwise a cool presentation, I particularly like the little arrows for significance p-vals and CI tooltips.

<comment><AUTHOR> Thanks.

For now, the best way to deal with confounds and interactions is to run an analysis a couple times, filtering for a third variable in various ways to see how that affects the analysis.

Obviously it'd also be nice to also have multivariate regression, or at least views that integrate 3 different variables.

</comment></comment><comment><USER35> A bit off-topic but the page looks really heavy and responds slowly on a rather powerful machine that I have. Any idea if we can get a csv or raw data of this?

</comment><comment><USER36> I was surprised more developers used Linux than OS X.

<comment><USER37> E.g. Ryan Dahl uses Linux and has objections towards OSX. I trust him (and others) and I use Ubuntu on a MBPR (Linus likes 13inch screens with high res & low weight... he actually has a Mac Book Air). Now Ubuntu is maybe okay but for a professional SW-developer/hacker there are a couple of more roads to go down with (BSD, myriad of Linux distros / devices). There is a Mac standing in our living room and if you are an iOS dev ofc. Better than Windows in my opinion.

</comment></comment><comment><USER38> I find it interesting that developers at small companies (1-25) are apparently the happiest, but also spend the most time surfing the web.

</comment><comment><USER39> Can someone give interesting stats out of this mess ?

</comment><comment><USER40> statwing rocks...</comment>


Ruby, Rails Give Twitter Its Tweet - <AUTHOR> http://www.eweek.com/c/a/Application-Development/Ruby-Rails-Give-Twitter-its-Tweet/ <comment><USER2> They totally just missed today's story about Twitter perhaps dropping RoR...

<comment><USER3> read the further down, it's mentioned.</comment></comment>


Show HN: Honestmarketer.com, where ethical marketers learn to sell - <AUTHOR> https://honestmarketer.com <comment><AUTHOR> hi folks, stoked to launch this today. it's a 100% free resource, powered by our team at Fomo.com.

marketers are getting a bad rep (for good reason) and we want to start shifting the paradigm that "marketing == lying."

<comment><USER2> cool effort. One of the things I disliked when I worked in sales/marketing was how often people were willing to behave dishonestly.

Also your site fomo.com has such a nice color scheme to read.</comment></comment>