John Carmack is suing ZeniMax - <AUTHOR> https://techcrunch.com/2017/03/09/oculus-cto-john-carmack-is-suing-zenimax-for-22-5-million/ <comment><USER2> These types of things really irritate me. Corporate NDA agreements are total shams.

We couldn't hire a P/T contractor because the engineer signed an NDA agreement with his company that pretty much said everything he developed, verbalized, or put to paper -- during work or after -- was IP of that company, irrespective of whether it had anything to do with its products. Even as an employer, I find this an absolute outrage.

<comment><USER3> Engineers are the worst at this part of the game. They'll sign anything you put in front of them. At several of the places I've worked, I've been given crap boilerplate forms like that to sign. HR/hiring people will look at you like you're some kind of weirdo if you balk at any of it. Here are the reactions to my reluctance as I recall them.

* One company wouldn't budge. Later, I got a better deal, but it was risky the way I went about it. * At another company, I just didn't sign it. They didn't stop me from starting work but when the omission was noticed they had an HR person pester me about it a few times. They eventually gave up. * At yet another place, I crossed out the parts I didn't like. They just kind of shrugged and said okay.

At no time did I ever want anything unreasonable. I just didn't want all the things that I or my descendants designed/built/invented/helped-whatever to be assigned to ['company'] in perpetuity, etc. And I didn't want a contractual responsibility to come and defend patents in courts, or give depositions at my expense.

<comment><USER4> > _Engineers are the worst at this part of the game. They 'll sign anything > you put in front of them._

The smart ones absolutely will not. Smart _people_ absolutely will not do this, regardless of their profession.

<comment><USER5> But that's the ultimate cop-out. By sheer _definition_ smart people will not do _anything_ stupid. They are utterly incapable of doing stupid things, because then they wouldn't be _smart_. This is a wonderful tautology and a beautiful way of saying absolutely nothing.

<comment><USER6> It's just a way of saying "doing X is stupid" without being blunt.

</comment></comment></comment></comment></comment><comment><USER7> I feel like there needs to be a sequel or at least epilogue to masters of doom when the dust finally settles on all this.

<comment><USER8> If you're looking for something in the iterim, noclip produced a documentary on the making of Doom (2016) that's pretty engaging. It briefly discusses the Zenimax lawsuit but doesn't go deep into it.

<comment><USER9> DOOM Resurrected, Part 1 - To Hell & Back (DOOM Documentary) - [https://www.youtube.com/watch?v=PS6SBnccxMA](https://www.youtube.com/watch?v=PS6SBnccxMA)

DOOM Resurrected, Part 2 - Designing a First Impression (Doom Documentary) - [https://www.youtube.com/watch?v=vsoVQWnSOfM](https://www.youtube.com/watch?v=vsoVQWnSOfM)

DOOM Resurrected, Part 3 - Guns, Guitars & Chess on Mars (Doom Documentary) - [https://www.youtube.com/watch?v=r0nOsuaPDeg](https://www.youtube.com/watch?v=r0nOsuaPDeg)

I too recommend these.

Noclip also has a bunch of extended interviews that you can find on their channel or in related videos but I haven't seen those so can't comment on whether or not they are worth looking at.

<comment><USER10> The interview with Hugo Martin, the creative director of DOOM, is great - [https://www.youtube.com/watch?v=LVLecokaRv4](https://www.youtube.com/watch?v=LVLecokaRv4)

</comment></comment></comment></comment><comment><USER11> Original article which contains a copy of the complaint is available here [0].

Direct link to the complaint here [1].

[0] [http://www.dallasnews.com/business/technology/2017/03/09/leg...](http://www.dallasnews.com/business/technology/2017/03/09/legal- feud-over-facebook-owned-oculus-has-another-dallas-chapter)

[1] [https://www.scribd.com/document/341420632/John-Carmack-vs- Ze...](https://www.scribd.com/document/341420632/John-Carmack-vs-ZeniMax- Media#from_embed)

</comment><comment><USER12> I thought this was about the Oculus / NDA issue and it very much is not in the legal sense, and I'm not really surprised to find out what the real situation is in this case.

As Carmack's musing on Facebook pointed out, he didn't like the outcome but he didn't have any grounding to factually dispute the NDA. So, tough as it may be, they lost.

This is about getting what is owed in contracts. Essentially the opposite side of the coin to an NDA (Can vs. Can't Do) and I hope he wins if he is truly being ripped off.

</comment><comment><USER13> I find it interesting that ZeniMax wins 500M from Facebook where Carmack works, and then Carmack sues Zenimax and if he wins gets $22M which one would presume they would use some of the $500M for. It is kind of like getting $22M from your own employer the long way around.

</comment><comment><USER14> I bet that Zenimax will claim that due to the issues surrounding the Oculus case Carmack failed the covenants required to collect his 50% earn out mentioned in Carmack's complaint.

EDIT - Another commentor posted the original complaint and this is exactly why Zenimax is not paying "ZeniMax's stated basis for its failure to comply with the Convertible Promissory Note is a series of allegations regarding claimed violations of Mr. Carmack's Employment Agreement and ZeniMax's alleged intellectual property rights."(1)

A jury of "peers" found Oculus at fault in several key areas in Zenimax's last complaint, and Carmack was central in that story.

When Zenimax sued Oculus - the VR community responded with overwhelming support for Oculus, casting Zenimax as the greedy corporation trying to get a slice.

Zenimax's original complaint - of which a Jury saw enough truth in to award $500m to Zenimax - is more or less as follows:

\- Zenimax bought ID software for >$100m on June 24, 2009.

\- Carmack signed up with Zenimax for an earn-out / golden-handcuffs agreement that ended in June of 2013.

\- Carmack was enthralled with VR.

\- Carmack found Palmer via an internet forum, reached out to get a rift to try.

\- Carmack tinkered with the Rift, adding sensors, building calibration, etc. while on the clock / using hardware from zenimax.

\- Carmack brought a prototype of the Rift working on Doom 3 to E3 with him providing Oculus with their early press.

\- Zenimax realized the extent to which Carmack was enabling Oculus and worked to negotiate equity with Brendan Iribe.

\- Oculus sent Zenimax a proposal to discuss a partnership Sept 21, 2012 but never followed up / followed through.

\- Carmack quit Zenimax the day his contract was up in June 2013, joined Oculus as CTO a few months later and took his 5 best guys with him.

\- FB bought Oculus March 2014, Zenmix got pissed and sued.

When Zenimax responds to this new complaint from Carmack it's a foregone conclusion that they will re-raise this "bad behavior" and likely point to non-competitive clauses attached to the "earn out" as non-performing.

I love Carmack and his contributions to our world, I am concerned that Zenimax may out lawyer him.

PS - Fun fact - two of Zenimax's board members are Cal Ripken, Jr. (hall of fame baseball player) and Robert S. Trump - brother to our current president.

EDIT - Changed first sentence for clarity of my point.

(1) [https://www.scribd.com/document/341420632/John-Carmack-vs- Ze...](https://www.scribd.com/document/341420632/John-Carmack-vs-ZeniMax- Media#from_embed)

<comment><USER15> I never got to Carmack level of technical seniority but in recent past I got hired (this was my first experience in America) in a level-2 engineering permanent position (assuming level-1 is for fresh BS graduates) and the contract essentially stated that, unless I declare any prior obligations (I didn't), all my creative work while I'm employed (including that on evenings and weekends, related or unrelated to my job) is copyrighted (or owned, or something similar, I don't remember the exact words) by my employer. I was seriously taken aback but I didn't know what to do.

A few questions:

\- Is this standard practice?

\- How can you enjoy your weekend creative activities, and/or, use them for your potential future startups, copyrights, patents, whatever, if you work full-time under such a stringent condition? (can you even write a novel and sell it, while you work full-time as a software engineer? or should you always ask permission first?)

\- Is it likely that Carmack had similar obligations while he was at Zenimax? In which case he very carelessly ignored them when he indulged in Oculus work. (but then he also has his rocket hobby going on so I don't know how that panned out in relationship to his employers, Zenimax, or FB).

\- This raises an important concern. As a typical employed engineer, we don't pay much attention to the legal repurcussions of our employment. May be we (or I) should not carry out any undertaking without consulting a lawyer (specializing in these matters) first?

<comment><USER16> I highly recommend you read Joel Spolsky recent post on why exactly US based companies do this.

[https://www.joelonsoftware.com/2016/12/09/developers-side- pr...](https://www.joelonsoftware.com/2016/12/09/developers-side-projects/)

It's highly informative.

<comment><USER17> I respect Joel immensely. That said, I found his post strange in what it leaves out. So much so that I wrote my own follow up.

[https://medium.com/@wwalser/re-developers-side- projects-3ee3...](https://medium.com/@wwalser/re-developers-side- projects-3ee3274f39fe#.vzp6lcp1r)

Basically, yes, it's standard practice but in every company that I've worked for there have been escape hatches that were relatively easy to utilize. HR usually has paperwork that both parties sign saying something along the lines of "[developer] is going to build [thing] in their own time using their own hardware. We grant [developer] the legal right to maintain ownership of [thing]".

I pay a lot of attention to what I'm signing. My side projects are important to me. They're a part of my lifestyle. I think most devs could very comfortably sign without a second thought. On the whole, state and contract law in the US combine to create a fairly good safety net for avoiding truly abhorrent contracts.

<comment><USER18> A third perspective:

After living and working in California for 6 years, I was considering a job as third engineer at a startup in another state. I was a bit anxious about side projects, and asked about them after receiving the offer. The response was basically what you said, a pleasant surprise, not scary like Joel warned. But for piece of mind, if I took the job, I would still want to find a lawyer in the new state to review the paperwork, which is a drag.

In the end I chose to remain in CA, and it's nice. It's nice to completely not ever have to worry about this issue at all. So I get why Joel is resentful after working for years in states where unreasonable invention assignment clauses _are_ enforceable.

</comment></comment></comment></comment></comment><comment><USER19> [https://twitter.com/ID_AA_Carmack/status/840231319082754049](https://twitter.com/ID_AA_Carmack/status/840231319082754049)

</comment><comment><USER20> At least Carmack won't be sued by Jordan Mechner, he dodged a bullet there: [https://twitter.com/ID_AA_Carmack/status/837127224675328000](https://twitter.com/ID_AA_Carmack/status/837127224675328000)

</comment><comment><USER21> _Instead Carmack is suing Zenimax Media for $22.5 million that he says has not been paid to him for the 2009 sale of his game studio, id Software, known for such pioneering video game classics as Doom and Quake._

 _The lawsuit reveals that ZeniMax Media paid $150 million for the game studio behind such pioneering video gaming classics as Doom and Quake._

Off topic, but I'm disappointed in the quality of writing: why repeating "such pioneering video gaming classics as Doom and Quake"? I get the impression that the article was either written in a rush or just mixed up (in a rush) from other sources.

</comment><comment><USER22> off topic: I had no idea John Carmack was so fit!

</comment><comment><USER23> wow that's interesting.

</comment><comment><USER24> Does the author even read the article after copying and pasting the press release?

> Instead Carmack is suing Zenimax Media for $22.5 million that he says has > not been paid to him for the 2009 sale of his game studio, id Software, > known for _such pioneering video game classics as Doom and Quake_.

> The lawsuit reveals that ZeniMax Media paid $150 million for the game studio > behind _such pioneering video gaming classics as Doom and Quake_.

Subsequent sentences. FFS.

<comment><USER25> Have you ever shipped a product with bugs before?

<comment><USER2> Nice.

</comment></comment></comment><comment><USER26> "serious injury" hah, what a joke

<comment><USER27> It's not a joke, it's standard legal verbiage.

</comment></comment><comment><USER28> He seems like a stand-up guy to me (not that that implies innocence), so this is of course mostly a misunderstanding from what I can tell (since two well- meaning people can still end up in a lawsuit over misunderstandings)

<comment><USER29> I find it hard to believe that someone as smart and well versed in copyright and patent law as Carmack would not be able to understand the terms of his employment contract.

<comment><USER30> Why do you say he is well-versed in copyright and patent law? He has always been vocally against patents and even threatened to leave id Software back in the day if they started patenting. He is a known proponent for open source and have released a lot of source code for their games. I do not think he is well- versed in this at all, because he basically wants nothing to do with it.

<comment><USER29> Because he ran a bloody rocket company and a software company and that means that you have to understand the basics.

Or did you feel that 'being a nice guy' should protect you from legalities or the responsibilities that go with the job title?</comment></comment></comment></comment>


World Philosophy Day: 70 Philosophy Books Everyone Should Read - <AUTHOR> https://iainews.iai.tv/articles/70-philosophy-books-everyone-should-read-auid-1168? <comment><USER2> A good list, I liked especially the non-western-philosophy-canon sections, the books I hadn't heard of.

A bit more explaining _why everyone should read them_ would be nice - I'm not convinced in many/most cases that everyone should. "Buridan's monumental work is the best introduction to late-medieval Ockhamist nominalism" doesn't go very far in that direction. I don't think most people will get much at all from attempting Spinoza, Hegel, Kant, Sartre, Popper, Frege, Wittgenstein's _Tractatus_ etc. But then, offhand I can't think of a book I'd say "everyone should read".

There's a welcome inclusion of some non-western traditions, but the odd omission of the Chinese classics. I guess those guys - Confucius, Mencius, Lao Tzu, Chuang Tzu etc - wrote well, so they have readers, not academic interpreters so much. I feel very lucky to have discovered them as a teenager, before getting into western philosophy. And come to think of it, I'd say they're worth reading by 'everyone' much more than almost everything[0] on this list, and are much more enjoyable to read.

[0]The ones I'd heard of, anyway. I look forward to checking out the ones I hadn't.

</comment><comment><USER3> "The Second Sex" by Simone De Beauvoir is on here twice. I'd recommend if you're looking to read an existentialist book by the same author - check out "The Ethics of Ambiguity" which is an attempt to form an existentialist ethics, and is short, and good. Tbqh "The Second Sex" is a bit dry for modern tastes - even though it is important. I'd recommend reading something like Judith Butler's "Gender Trouble" if you want a better feel for modern feminism.

</comment><comment><USER4> I would like to add few more books to the list:

1\. Siddhartha is a novel by Hermann Hesse

2\. On shortness of life by Seneca

3\. Letters to stoic by Seneca

<comment><USER5> Letters by Seneca is in the Ancient Roman section if I'm not mistaken.

<comment><USER4> This is the goodreads link: [https://www.goodreads.com/book/show/97411.Letters_from_a_Sto...](https://www.goodreads.com/book/show/97411.Letters_from_a_Stoic)

</comment></comment></comment><comment><USER6> It would be good if everyone read any 70 books, but 70 philosophy books look excessive

<comment><AUTHOR> I mean, you've got a whole life to do it in, right? Or you could be like my college professors and say the deadline is tomorrow ;)</comment></comment>


Share your startup – March 2019 - <AUTHOR> I'm trying to make this a habit, so feel free to join in posting your startup :)
Please do a succinct post, to make this clear. Please include these details.
Love to know your plan(s) this month for your awesome project :)
* Name
* URL
* Small description (< 10/15 words)
* Current stage
* Your plan for this month
Thank you! <comment><AUTHOR> Name: PDFShift

URL: [https://pdfshift.io](https://pdfshift.io)

Description: Convert any HTML documents to high fidelity PDF in a single POST request.

Plans: The re-design is almost done (said that last month ;) ). I plan to launch it next week.

You can have a preview at [https://pdfshift-dev.netlify.com](https://pdfshift- dev.netlify.com). Feel free to share your thoughts on the matter! :)

</comment><comment><USER2> Name: Pulno

URL: [https://www.pulno.com](https://www.pulno.com)

Description: On-site SEO analysis tool with human-readable reports.

Current stage: Looking for users feedback.

You can try it with a 200-page limit free plan.</comment>


Only 100 months left to avoid irreversible climate change? - <AUTHOR> http://www.guardian.co.uk/environment/2008/aug/01/climatechange.carbonemissions

<comment><USER2> I'm gonna go with a guess and say "Ummm, no."

I did, however, look up the folks who wrote this. Climatologists? Nope, some guy called Andrew Simms from some place called the New Economics Foundation. These are the same guys who made up that "Happy Planet Index" which got a bunch of press a few years ago by ranking the countries of the world from best to worst according to various bullshit criteria with carefully tuned weightings (Cuba was fifth, the US was 150th slightly behind Ethiopia and Burkina Faso). The guy is currently billing himself as "head of the climate change programme at the NEF", but as far as I can figure out he's also "director of policy" and wrote or co-wrote most of their other publications. I can't find any reference to any actual academic qualifications other than the fact that he "studied at the London School of Economics".

</comment><comment><USER3> I ditched the article after the writer failed to understand the rationale behind the naming of the common scientific behavior known as "positive feedback." Clearly alarmist BS.

<comment><USER2> I missed that on my first read-through. Yes, that's truly terrible.

But if you stopped after that you missed the bit about how great life was in Britain in the period 1938-1944, when we apparently were using less resources, but were happier, and how we need to get that feeling back.

update: Also, the article promises that if you want more then there's information available on their website. Unfortunately I can't find anything on their website except two copies of an enormous counter (yup, still 100) and an invitation to spam your friends with their monthly newsletter. Can anyone find it?

<comment><USER2> I actually found the two-page "Technical note" at:

[http://www.neweconomics.org/gen/uploads/sbfxot55p5k3kd454n14...](http://www.neweconomics.org/gen/uploads/sbfxot55p5k3kd454n14zvyy01082008141045.pdf)

and it's pretty useless. Lots of talk of parts-per-million, but absolutely no justification of the most important danger-world-in-crisis idea: that there will be a tipping point beyond which change is "irreversible".

In summary, I suggest ignoring this article, and the people who wrote it, entirely.

</comment></comment></comment><comment><USER4> Hmmmm.... if change is irreversible, then shouldn't we just start partying it up?

It will probably take few centuries before the earth start getting inhabitable, so us, our kids, and our grand-kids will be fine. They will have to put up with droughts, flood,etc, but they will be able to cope.

Ah, and earth will be fine. There have already been 3 cataclysmic events, where 90% of life died (65-70%, on the latest one), and earth just recovered from it, with new dominant species.

So, earth will recover from this too, just not with humans on it.

<comment><USER5> The problem with the "Tipping Point" is that we humans have gotten to the point where we could cool the earth if we got desperate enough. We know from studying volcanoes that injecting large amounts of sulphur particulates into the stratosphere will cool the earth quite effectively. Any number of industrialized nations could do enough of this to counteract global warming for modest fractions of their GDPs. There are other materials we could use that would persist higher than the stratosphere and reduce certain negative consequences.

Unlike other things we can do about climate change, this is also _quick_!

Of course, the problem with this, is that there are sure to be unintended consequences. Perhaps this is another sort of "Tipping Point" -- where humanity follows a spiral of ever-increasing interventions with unintended consequences that spiral out of control.

More important: the ability to manipulate the global climate will have profound geopolitical and strategic ramifications. These are perhaps just as dangerous as the CO2 tipping point.

[http://www.ted.com/index.php/talks/david_keith_s_surprising_...](http://www.ted.com/index.php/talks/david_keith_s_surprising_ideas_on_climate_change.html)

</comment></comment><comment><USER6> God I hope so. Only 8 years and change until people can start arguing about OTHER scientific/political hot potatoes.

</comment><comment><USER7> While I am all in to prevent further damage to Earth ecosystems and to fix whatever has been broken, and to switch to renewable energy, lets not forget the Russian scientist predicting an imminent new small ice age akin to that of the middle ages, related to the Sun's emission cycles. We may end up needing to pump CO2 to the atmosphere _in purpose_.</comment>


Look who Harvard Business School rejected yesterday - <AUTHOR> http://www.linkedin.com/today/post/article/20131212141229-17970806-look-who-is-being-rejected-by-harvard-business-school?trk=tod-home-art-list-large_0

<comment><USER2> this is true for most pompous institutions...</comment>


Android antivirus apps a complete waste of time - <AUTHOR> http://www.extremetech.com/computing/104827-android-antivirus-apps-are-useless-heres-what-to-do-instead <comment><USER2> I had an odd thought reading this article. I wonder if what might be considered malware could actually be a legitimate agreement between the user and the programmer?

Something like "Instead of a subscription, I'm going to SMS these 3 numbers once a month and it's going to cost you five bucks"

This actually might bypass all the headaches folks are having with merchant accounts and payment plans and work out as something both the user and developer might like a lot better. If crooks can make millions charging for bogus SMS messages, why can't legitimate programmers use the same payment mechanism for stuff the users like?

Don't know. Just throwing it out there. What caught my eye was the assumption that any program using SMS to rack up charges was malware. Is that always a true statement?

<comment><USER3> > If crooks can make millions charging for bogus SMS messages, why can't > legitimate programmers use the same payment mechanism for stuff the users > like?

This exists; you see it occasionally for web games.

It's quite expensive, though, and I suspect it's not allowed on Android if you're in the marketplace; does Google allow you to use third-party payment stuff for marketplace apps?

<comment><USER4> Some apps use a separate paypal link that avoids the market.

<comment><USER5> Yeah, Google is pretty loose with their rules, and the Market structure passes a lot of complexity (ie, sales tax responsibility) on to each developer.

I'm seriously considering using something like BMT Micro to sell upgrades to a free app. The classic shareware model, more or less. I'd really like to sidestep all the annoyances and time overhead that come with selling stuff directly. I believe the iOS App Store is set up that way already (where you're effectively licensing them to sell your software and they're paying you royalties), but unfortunately not the Android Market.

<comment><USER3> The Android market passes sales tax responsibility to the developer? I hadn't realized that; that sounds absolutely ridiculous. How do small developers cope with it at all?

Yep, the iOS app store is effectively a publisher; the only tax complexities involved are countries which practice withholding (the US and Japan, in particular; unless you register with their tax authorities they withhold a percentage, even for countries with which they have tax treaties), and special treatment of royalties in some countries.

</comment></comment></comment></comment></comment><comment><USER6> These results are unsurprising to me. But then again, my startup is building a cloud-based mobile-malware detection service to address the inherent limitations of anti-virus on mobile devices. :-)

Here's the problem: "Anti-virus" in general is limited because it relies on static signatures. Therefore it can only detect known malware and is vulnerable to evasion (polymorphism / metamorphism). On mobile devices AV is even more limited because of resource constraints (namely, limited battery and cpu).

By doing malware detection in the cloud, we have plentiful resources to do heavyweight analyses. We also get a better overall detection capability by using behavioral analyses instead of just static signatures (we actually run the apps).

If you're curious about the technical details, we presented at Black Hat in August. [https://media.blackhat.com/bh- us-11/Daswani/BH_US_11_Daswani...](https://media.blackhat.com/bh- us-11/Daswani/BH_US_11_Daswani_Mobile_Malware_WP.pdf)

P.S. We're hiring :-)

</comment><comment><USER7> This isn't exactly the conclusion of the test it's reporting. That test said that _free_ Android AV apps were poor-to-useless. But they included two commercial apps in the test, which fared pretty well (although not perfect).

</comment><comment><USER8> >...but by far the best way to avoid malware infestation is to use a little common sense...

Also, people should stop wearing seatbelts, and just start driving better.

<comment><USER9> That's a poor analogy.

It's difficult to get infected with Android malware without directly installing questionable applications on your phone, but it is pretty easy to get into an accident through no fault of your own.

<comment><USER8> I think you (and the author) give the average user too much credit. To most people on HN, it's probably pretty obvious that downloading applications directly from sketchy sources is a good way to have your device become infected by malware, but the average user might not realize this. They might not even realize that a source is sketchy.

This is anecdotal, but after about the 10th time reinstalling my parents OS, I finally discovered that the root of all their malware-related problems stemmed from the fact that they were downloading music using Limewire. It hadn't crossed their minds that perhaps this was not a very good idea.

I'm sure they genuinely believed that their computer was repeatedly being infected "through no fault of their own".

<comment><USER10> The installation from non-market sources is disabled by default. The users have to go to settings and check the checkbox allowing side-loading of applications. So they will not install it by accident, it has to be wilfully.

<comment><USER11> Some websites and applications require you to allow third party apps to run their applications; and if those websites can get a seasoned computer user to change the setting, I imagine a less legitimate site could encourage the less informed to do the same.

I'm looking at you, GrooveShark.

</comment></comment></comment></comment></comment><comment><USER12> hmm, it also mentions completely disabling 3rd party software sources, and not downloading stupid things from forums.

If you're developing for android, you're going to install your own APKs from sd card. Even if you "don't install other apps" that way, you're still "leaving the vector open" by leaving the system setting on, apparently?

Also, if you want to upgrade the OS or kernel on some of the cheaper phones, you'll need to use cyanogenmod, and usually a custom version hacked together by randomers on forums. My (cheap, spare) droid runs a bootloader and OS which is the result of collaboration between a Chinese guy, a British guy and other developers from "the internet". You do have to join the forums, talk to people a bit, and read up on the feedback these users get when they post new ROMs though, I'll admit...

Maybe I'll install one of these free AV apps and see if they can find anything! :)

</comment><comment><USER13> Just like desktop AV?

<comment><USER14> Exactly, the same points made in this article applies to Windows aswell. Maybe Windows AV will be a few points better, but who cares? It gives users an equally dangerous false sense of security.

Yet, lots of people (both techs and non-techs) will think you are crazy if you dont use AV on your Windows PC. Its some sort of mass psycosis.

<comment><USER15> Yeah, I never understood the purpose of anti-virus software. If you have a vulnerability that would allow a virus to make its way onto the machine enough for a virus scanner to find the virus, someone _will_ use that same vulnerability to access your system in a way that a virus scanner will not protect you.

<comment><USER7> I should stop using my web browser and email client, and any other downloaded software that didn't come on my OS install disc?

<comment><USER15> I guess in a perfect world. Obviously that is not going to happen though.

Anti-virus software is like having airport security that only screens those that fit a certain profile. Someone not meeting that profile is going to walk onto a plane with the intent to do harm, at which point you are no further ahead than you were when you had no security checks at all.

<comment><USER7> I think you haven't kept up with recent developments in AV software. These days, they continue to monitor all those passengers even after they've gotten on the plane. And remember, there are a lot of different planes -- each of our individual machines -- and the AV software has also improved in its ability to see something bad on one of the planes and quickly notify the rest of us.

<comment><USER15> I realize AV software applies heuristics to identify some attacks, but in the absence of intent, it is impossible to do it effectively. One man's botnet is another man's legitimate computing cluster.

Unless you warn about everything going on in the system, you are not really aware of everything. If you do warn about everything, the user will start to ignore the warnings.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> I've been running AVG for a month now on my Android and actually don't mind it. It doesn't appear to be draining my battery or affecting performance, and I like the thought that should I download something from the Market that IS in their database, it may catch it before I install. Even if it is a 1 in 10 shot.

</comment><comment><USER17> As an avid iOS user, this is causing much head-scratching a la "viruses are a problem on Android? why? it's 2011..."

<comment><USER18> [http://www.mostiwant.com/blog/virusbarrier-ios-first- antivir...](http://www.mostiwant.com/blog/virusbarrier-ios-first-antivirus- and-antimalware-app-for-iphone-ipad/)

<comment><USER17> Quote therein: "there is no known malware for iOS".

This thing just sniffs for malware whose transmission vector may by coincidence pass thru an iOS device, like PDFs and Dropbox.

</comment></comment></comment><comment><USER19> _The paid apps blocked all malware apps from being installed, even those that were not spotted in the manual scans._

How does that make them useless?

This is one of the key advantages of the iOS App Store - the process of analyzing app capabilities and security is offloaded to Apple - users don't have to care about it.</comment>


Go At Heroku (Doozer) - <AUTHOR> http://blog.golang.org/2011/04/go-at-heroku.html

<comment><USER2> Doozer is a really interesting project. We run a Go based lockserver at Tinkercad but we haven't got around to adding redundant storage. Doozer on the other hand is tighly focused on just the storage part, which usually is much less application specific. So for us this seems like a good fit.

I've been talking with Keith and Blake since before christmas and their thinking is solid. If you are interested in running a consistent store this is probably one of your best bets, unless you happen to work at Google and have access to chubby (I'm an ex-Googler).

</comment><comment><USER3> Very interesting post. I'd advise you to go read Keith Rarick's introduction to doozer <http://xph.us/2011/04/13/introducing-doozer.html>. I think this could gain traction as a credible HA data store. As stated paxos is part of the core of doozer, its something that's also used by google's lock service chubby which is used in systems like GFS, bigtable and map reduce.

</comment><comment><USER4> It's not clear to me how, or if, failure detection is to be integrated with Doozer. Keith has said on the thread accompanying the announcement blog post that Doozer doesn't have the 'baggage' of sessions (which are used in ZooKeeper to manage timeout failure and the removal of certain kinds of data which can be used to model lock revocation).

Without some way of knowing if a process fails, it's hard to do leader election, locks, other synchronisation patterns. It would be a reasonable design choice to do failure detection completely out of band with the sequentially consistent store, but I'd like to understand their architecture better.

<comment><USER2> Just curious, how familiar are you with Paxos? I'm asking because failure detection is pretty much isomorphic with distributed consensus and generally considered hard. Ie. how do you differentiate between down and slow?

<comment><USER4> Extremely familiar - see my articles at

<http://the-paper-trail.org/blog/?p=173>

and <http://the-paper-trail.org/blog/?p=190>

for some tutorials I wrote on the subject.

You're correct that failure detection and consensus are very deeply related, in that a strong failure detector is 'sufficient' for consensus.

But my point is about client failure detection, not failure detection between servers (which must have some kind of timeout system; that's ok - you just sacrifice liveness in a few pathological cases rather than sacrificing correctness). If I am to implement leader election with Doozer, does Doozer provide any tools to help us with deciding when to elect a new leader? There's no reason it should, but ZooKeeper, for example, does have that in its arsenal.

Doozer doesn't, AFAIK, expose consensus as a primitive; that's not its model. So the fact that it uses Paxos, or ZAB, or 2PC or whatever doesn't make a difference to its clients.

<comment><USER2> Replied to you via email.

</comment></comment></comment></comment><comment><USER5> Its nice to see this getting some attention, great job Keith and Blake! I'm hoping to use Doozer in our infrastructure at some point in the future.

</comment><comment><USER6> How is this different from ZooKeeper in terms of features offered or possible use-cases?</comment>


Apple Is Carbon Neutral - <AUTHOR> https://www.apple.com/environment/#statement <comment><USER2> > ... And by 2030, all of our products will be too.

Good for Apple for offsetting office use, but Apple is a hardware company. They are putting carbon in the atmosphere to make and ship their products and that can't be ignored. 2030 is not ambitious enough.

Also:

> (big text)Completely recycled ... (small text) We're committed to one day > sourcing 100% recycled

Seems pretty disingenuous.</comment>


Show HN: Neural network optical character recognition - <AUTHOR> https://github.com/mateogianolio/mlp-character-recognition

<comment><USER2> Are the reported success metrics on the training or testing set? The website says its on the training set, which shouldn't be a valid metric of success since neural networks can easily overfit to their training data (one of their downsides if you aren't careful).

Having the output layer be an 8-bit character representation though is very clever, rather than a softmax layer with each node being the relative probability of a given character. That probably lowers the number of free parameters you have to train, which probably speeds up training and can help prevent overfitting. I'm interested in knowing what the true success rate is with this approach as it seems clever.

Btw, what's your loss function on the output layer?

<comment><AUTHOR> Yes, the success metrics are measured on the training set.

I just ran a measurement with a separately generated testing set consisting of 52k characters which yielded a success rate of 98.53% on letters a-z. This turns out to be almost exactly the same as the rate presented on the repo page (98.52%). Will upload the result for your perusal as soon as possible.

You will have to browse the synaptic neural network library [1] for an answer to your second question.

[1]: [https://github.com/cazala/synaptic](https://github.com/cazala/synaptic)

EDIT: A separate testing set is now generated in addition to the training set. I updated the success rates of the examples in the readme accordingly.

</comment></comment><comment><USER3> A training set like Google's _Recaptcha_ data would be useful. Maybe Project Gutenberg, Wikipedia and other open source projects should start an open Recaptcha-like service to collect such data based on scanned documents/books/etc.

<comment><USER4> Google has released street view house number data. It's mostly digits, but it's a start.

<comment><USER3> 600,000 digit images (labeled data):

[http://ufldl.stanford.edu/housenumbers/](http://ufldl.stanford.edu/housenumbers/)

<comment><USER5> Won't an easier way will be to copy a large text from net, paste it into MS Word. Export each page as image. And then train it using that image and the known text.

<comment><USER3> It won't help that much, as every character/letter/digit will be of the same font face, e.g. Arial. Then it can only recognize scans with Arial font.

One needs a real world training set, a lot of variation, like house numbers and scanned books with labeled datasets.

<comment><AUTHOR> I'm planning on adding a JSON config file to be able to tweak the network and add a lot more variation to the generated training set. Meanwhile, if you want to train it with several different fonts you can just add them to the 'fonts' array in captcha.js.

</comment></comment></comment></comment></comment></comment><comment><USER6> Shameless plug: Similar thing for GPU [https://github.com/pannous/caffe- ocr](https://github.com/pannous/caffe-ocr)</comment>


Swiss police automated crime predictions but has little to show for it - <AUTHOR> https://algorithmwatch.org/en/story/swiss-predictive-policing/ <comment><USER2> A case where Germany has sold crapware to the Swiss. I mean geographic analysis of crime can certainly be helpful, but I doubt it can be more accurate than your average fortune teller if the rate of crime is as low as it is.

The the software is named precobs in reference to minority reports precogs let's me believe their marketing team is hired from people selling penis enlargement on the internet. Perhaps they are just smarter because they know how often people are inclined to buy bullshit.

<comment><USER3> This. We need to keep in mind crimes rates in Switzerland are extremely low.

<comment><USER4> Which maybe means the Swiss cops know what they're doing, and we shouldn't be quick to mock this scheme.

<comment><USER5> Crime rate have very little to do with how society is policed. If you want to find explanations look at wealth distribution, poverty rates, the school system, job market and so on.

<comment><USER4> Bad/non existent policing definitely skyrockets the crime rate.

But once you have decent policing, I can believe other factors dominate.

<comment><USER6> No, that count maybe for cities but not for villages.

</comment></comment></comment></comment></comment></comment><comment><USER7> This is an education failure on the part of the purchasers. They should know what you can and cannot do with data. Think about the dataset you'd need to make the burglary prediction. Cops would have some priors about where/when it might happen, but is the data actually collected?

You'd need to know a lot of things about a large number of homes in order to see how the characteristics are distributed. Has the house been left empty for a while? Has someone posted about their holiday on FB? Is there something of value in the house? What security measures are there? Are known house-burglary gangs in action in the area?

Those are the kind of things you'd think cops might have priors on. I'm sure one can chime in on this. But they're also the kinds of things that you might have problems collecting data for. And even if you had it, your false positive rate needs to be pushed pretty low for it to be useful. Plus your false negative (place is burgled but system didn't say) needs to be really low, in a country where there isn't that much crime to begin with.

For the second system, as the article says, you can just say everyone is a risk. It's like saying everyone has Covid, you'll correctly find all the carriers. This is an obvious issue with ML systems that a purchaser needs to understand.

The last system, with the recidivism, is maybe the most concerning. It seems to suggest that people's paroles are decided based on this system? Then you'd better have good evidence that the system works, in the sensitivity/specificity sense.

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

<comment><USER8> What about the seller?

<comment><USER7> You mean is it a bit naughty to sell something as if it's more than it really is?

I think you could make that case.

<comment><USER6> Don't try to destroy the Finance Industry please ;)

</comment></comment></comment></comment><comment><USER9> This is the same as any other (ab)use of statistics. Forecasting is a valid and useful practice for managing your people and process. Maybe you redeploy resources to improve response time or schedule shifts to match forecasted incidents, etc. Data collection is pretty awful with this type of data, so good luck doing much more.

But the problem is that the public hears something different when they hear "automated crime prediction". People hear something novel that could prevent crime. After all, if rain is predicted, you grab an umbrella.

The reality is that cops on the street already know where crimes are likely to happen. You'll get some tools to reduce workload on police sergeants doing scheduling and things like data presentation are probably the primary benefit. Not as sexy as minority report.

<comment><USER10> you could simply write a geographic correlation function on income/wealth and race/ethnicity and do just as well at this kind of forecasting, since police find crime where they look, and they tend to look in poorer and non-white areas.

further, we need to disabuse ourselves of the idea that we can predict crimes to any degree beyond random (vs. aggregate stats, like crime rates), because it's tantalizing ideas like that which leads to the slide into surveillance and totalitarianism without any real, positive return to society as a whole.

<comment><USER11> I don't believe anyone on HN is so naïve that they think that the main reason crime rates vary between areas is that police presence varies. Your post makes it sound like you are, but I assume that you only think varying presence skews the numbers rather than generates them?

<comment><USER10> i would hope no adult is naïve enough to believe police magically appear only where crime is and only addresses clear and existing crime, rather than being embedded in a complicated sociopolitical system overwhelmed by legal pitfalls. those are stories we tell children to comfort them for sleep.

<comment><USER12> The vast majority of frontline policing is in response to an emergency call, so they have no control over where it is.

HN seems to think police spend their shift waiting for crimes to happen in front of them.

<comment><USER10> that's a misdirection. most crimes are not emergencies, and policing encompasses much more than emergency response.

if policing were just, we'd see many more white-collar crimes like corruption, bribery, embezzlement, fraud, extortion, etc. being busted, because those crimes have much larger impact and wider fallout on communities and wider societies.

<comment><USER13> White collar crime isn't a task for police any more than tax evasion is - those just plain aren't tasks they are meant for as opposed to public safety tasks. Which also explains why they are less funded, even without any conflicts of interest they aren't "sexy" crimes that grab attention, they all also lack urgency and thus are easily "procrastinated". Digging through records can uncover many of them and there are a lot of them.

The police in their current role only show up at the behest of warrants in those situations to search or arrest.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> > It tries to predicts burglaries from past data, based on the assumption that > burglars often operate in small areas. If a cluster of burglaries is > detected in a neighborhood, the police should patrol that neighborhood more > often to put an end to it, the theory goes.

Heaven forbid they just put pins in a map.

</comment><comment><AUTHOR> A review of 3 automated systems in use by the Swiss police and judiciary reveals serious issues. Real-world effects are impossible to assess due to a lack of transparency.

</comment><comment><USER15> I guess it depends on what we would want from crime predictions.

Do we want a Minority Report type system where someone shows up right before the crime and prevents it?

They mention burglary. I'm guessing most buglers aren't seasoned professional buglers and rather it is a crime of opportunity. So if a cop is on the street they won't do it ... but maybe they'll do it the next street over, 20 minutes later?

Even if somehow there was better prediction, there really aren't enough police to patrol the target street, and the next one over, and the next one ... predictions may suppose infinite police resources would prevent it, but that's not a thing.

This might be a topic where 'prevention' isn't really possible.

<comment><USER16> I don't have numbers, but I don't think there is much home burglary as a crime of opportunity in Switzerland. The places worth entering, usually have good enough security measures, that you need to come prepared and it is going to take you some time. What you usually hear is certain neighboorhoods being scouted for lights being off for longer time, indicating the people are on vaccation. But I don't know in what regards crime predictions systems are useful for that, what value they add.

<comment><USER15> Interesting.

In the US break ins very much are more likely in less affluent areas.

<comment><USER17> In Germany it's very much not like that, organized groups (often coming from and returning to eastern european countries) make up a big chunk of burglaries and they are careful to choose areas with a high effort/reward ratio, which are rarely the low income areas.

</comment></comment></comment></comment><comment><USER18> TBF this is because there is no crime in Switzerland.

The guys I work for are based in Zug ("Crypto Valley"). One time I was there, I went to a supermarket to buy some beers in the evening. At the self-checkout machine, as I was trying to pay, the machine asked me in German, "how old are you", with three options, 16-, 17, 18+. The 16- and 17 was in red and the 18+ was in green, and you just had to press the green button. No ID check or staff member coming around to look at you or anything.

</comment><comment><USER19> Predicting crime is great. It means you're working to understand the state of your society.

Using it for policing is idiotic. You can't arrest a statistic.

Instead, it should be used for public policy, to understand what communities are at risk, direct efforts to understand why they are risk, and engineer better systems to support those communities.

</comment><comment><USER20> There simply isn't enough data to base predictions on. It will be close to random wether or not this system will "predict" a crime, to a similar degree that a clairvoyant can guess where the next crime will happen.

It seems like the law of small numbers at play here - or a snake-oil salesman doing a thorough job.

</comment><comment><USER21> I tell people, the main use case for ML is to obfuscate and launder decision authority and accountability away from people and up into abstract organizations where nobody is accountable. If there is ever a question as to why the police made a decision, they can say it was their prediction model, which is so complex nobody could reasonably expect to understand it or be responsible for its outcomes.

It's as though artificial intelligence itself were a cryptological problem where it's only real when it becomes sufficiently complex that information about who is accountable for it is destroyed.

<comment><USER22> I think one of the most important things we can do is to establish liability for prediction models to the people using the model.

At the end of the day if you falsely arrest someone, fire them on bad grounds, etc then you're the responsible party. The excuse "Well but someone told me to!" doesn't work any better when you're blaming a machine instead of a person - it's still bunk.

If the model is broken, well then that's on you. A vendor sold you a magical model saying it was perfect and you got in trouble anyways? Well, you can go on and try to sue the vendor and hash that out - after you pay for your mistake.

It's critically important we don't allow models to become get out of jail free cards.

<comment><USER23> Other people who should be liable, at least as much as those using the model:

1\. sellers/providers of the model, if they lied about the efficiency

2\. buyers/deciders, who not necessarily the same as those using the model (usually their bosses)

<comment><USER22> You can still go after a seller for making false claims, but you are liable for your actions - full stop. Unless the seller forced you to fire someone or arrest someone based on the model, you executed the action.

Someone who writes your legal contract isn't liable if you badly enforce it.

</comment></comment></comment></comment><comment><USER24> I think this is more government departments are easy to get money out of by convincing them your fancy computer words are better than their Excel spreadsheet.

Why we should treat violence like an epidemic - [https://www.bbc.com/future/article/20180723-why-we-should- tr...](https://www.bbc.com/future/article/20180723-why-we-should-treat- violence-like-an-epidemic)

</comment><comment><USER25> Not a surprise, is it ? Even I could have predicted that ;-).

</comment><comment><USER26> Reminds me Watchbird.

</comment><comment><USER27> at least they created some jerbs

</comment><comment><USER28> Ha.

The swiss had something like 50 murders TOTAL of which only 3 were unsolved. That's something like 0.5 per 100,000?

The USA is probably an ORDER OF MAGNITUDE higher?

The solve rates for crimes in the USA is horrendous - something like 35% in places like Baltimore.

Before we talk about how little the swiss have to show for their approach, perhaps we should allow them a touch of credit for creating a system that has reduced homicides AND led to the identification and conviction of those who commit them?

And maybe do something about the 15,000+ people killed per year in the US?

<comment><USER29> The story is about how a specific technology doesn't move the needle much, not about where the needle started off at.

<comment><USER28> But it misses the larger context which is that Swiss are proactive in trying to reduce crime through many approaches. They use many automated tools, hotspot mapping etc. The article even mentions they use something like 20 tools.

As a result of this larger effort, they have kept crime low and solve lots of serious crime.

The US has really moved to what I might call the critique approach in this area. No one is willing to propose actual solutions, but everyone likes to complain and critique. This creates somewhat of a do nothing or can't do effect in govt especially and I think also reduces attractiveness of professions like policing or working in govt (you can't ever actually do or even try things without folks eagerly slamming you).

Pretty pathetic - and doesn't bode well for our covid testing / tracing response either.

</comment></comment></comment><comment><USER30> Police is there for ascertainment... nothing much...

If someone wanna split the shell from the kernel...

You'll get splitted... unless you are as crazy than the splitter :)

Take it easy... it just an imaging of the real reality...</comment>


How old are you based on your reactions? - <AUTHOR> https://www.justpark.com/creative/reaction-time-test/ <comment><USER2> I may be off here but, I found that when I had the window fullscreen the graphics were rendering very slowly and my reaction times were very slow. I then made the window smaller and the graphics were much smoother time and my reaction times were much better.

<comment><USER3> Same here. I reduced my reaction time from 500ms to sub-300 after re-sizing the window down to about 400 by 400 px.

If anything, their model suffers from omitted variable bias--the power of your computer!

<comment><USER4> Me too -- after reading your comment, I found that I effectively halved my age in a dozen trials or so with a smaller window.

</comment></comment></comment><comment><USER5> The animation was very jerky, and I had to press the keys about three times for it to even register. Maybe a better title would be "How laggy is this website based on your reactions?"

<comment><USER6> My browser is 67 years old.

</comment></comment><comment><USER7> I really like the idea but it's completely off. What it should do is measure your reaction time: the time between the sign appearing on screen and the user pressing the mouse or tapping the screen. What it does is include frame rendering time. I apparently have the reaction speed of a 80-year-old at 22 (900ms), while I'm sure my reaction time on computers is around 225ms (measured on different occasions).

Also, you compare with the average, but what's your error margin? Were there 25 year olds that got 350ms and 200ms or did everyone consistently get between, say, 240 and 250?

<comment><USER8> This. There's a reason many reactiontime experiments in e.g. neuroscience use a photo sensor on the screen to figure out when exactly the stimulus comes, and then compare that with reactions like keypresses by sampling both signals on the same AD card.

</comment></comment><comment><USER9> This is a silly knickknack intended to promote justpark.com. It doesn't work, and even if you account for differences in other variables (mouse vs keyboard, rendering speed, etc.), it probably can't work reliably given the variation in reaction times between members of the same cohort.

</comment><comment><USER10> It said I was nine years younger than I truly am. I say it's doing a fine job. Let's not trouble the man too much.

<comment><USER11> Being told that I have the reaction time of an 18 year old at age 52 means that I believe this website dispenses the gods'-honest truth. I'm even inclined to ignore that the steering wheel is where none of the gods wanted it.

<comment><USER12> Apparently I have inhuman reactions. It must be scientific.

Meow.

</comment></comment></comment><comment><USER13> It would be nice to know something about the accuracy of the age estimate (stdev? or 66% of 29-year old's trials are between blaah and blaah?), and also, how many tries did the test subjects get. I got a couple of "we are not sure you are human" ratings after a few tries (around ten tries total).

</comment><comment><USER14> Interesting, I get a decade younger with each try... Doubt there is much behind the conversion between reaction time and age, but it's a nice setting to test your reaction time :-)

<comment><USER15> I managed to get 283 milliseconds, which is off their chart. It speculated I wasn't a human.

I was 57 the first time though.

</comment></comment><comment><USER16> Seems like it'd be a little more honest to plot the range rather than the average, and report the range of ages you likely are rather than the "exact" age you are. I have aged between 23 and 55 so I suspect that the data aren't quite as neat as they're presented.

</comment><comment><USER17> I have to agree with the numerous comments, results of this "test" are way too dependent on hardware, platform, and other local variables. Was kind of fun though.

Using the keyboard, my reaction time "age" was in low 20's, _much_ younger than my real vintage. Using mouse clicks, well now I'm 44 or so. My, how quickly one ages.

There is a serious side to such testing. Used under tightly controlled conditions similar tests have shown interesting results. For example, a number of studies report small but significant reaction time differences between kids with ADHD vs. without the disorder, though what that means is uncertain.

I've often thought a properly calibrated RT test of auto drivers would be useful. Readily observed that when the stop light goes from red to green, many drivers are quite slow on the uptake. Logically I wonder if a similar finding re: emergency braking might apply.

Hard to say how much RT differences are genetic vs. learned trait. In any case effects on traffic flow, or performance in critical situations probably have real-world meaning.

</comment><comment><USER18> I got radically different results on keyboard vs mouse, with keyboard being massively quicker.

It might be a good idea to standardise just on keyboard or mouse.

</comment><comment><USER19> With my wireless mouse, I was getting anywhere from 37 - 55 years old. Using the touchpad on my laptop, I was getting 50 - 60. Using my keyboard, most often I got "we're not sure you're an actual human being" but sometimes it said I was 18 or 19. The lowest one I had was 241 ms.

</comment><comment><USER20> > We're not sure if you're an actual human being With the reaction time of > (271) milliseconds.

Really? That is like two deaths by a railgun in quake III. And lets not go into the real twitch games like Ninja Gaiden or DMC III royal guard. Or random bulletstorms ...

[https://www.youtube.com/watch?v=3VCX4p3Iw3M](https://www.youtube.com/watch?v=3VCX4p3Iw3M)

Edit - couple of more trys - consistenly under 300 ms. The majority of time is lost in the click itself. With Type M ior cherry red could probably shave to 200-sh. Also getting better results with keyboard (cherry blue) vs mouse (DeathAdder)

<comment><USER21> If you get anything under 295 ms it gives you the "not sure if you're an actual human being" message. If you get a score of 295-305 ms it claims you have the reaction time of an 18-year-old, which seems weird as I would've guessed reaction time peaked later in life.

</comment></comment><comment><USER22> Unfortunately not a great experiment. The first time through I expected to see a 'stop' sign, so I was doing what I do when I drive, scanning the road, looking at signs, making sure the deer on the sides aren't going to jump out. When the 'STOP' flashed on the screen it took me by surprise because I was looking for a stop sign, not for what's essentially a pop-up to come out of nowhere.

My reaction time was initially scored as '42 year old' (I'm 37). The next time through it was a 20 year old. The third time it told me I might not be human.

<comment><USER23> i think it's intended to work only the first time, when you're really surprised. i'm 37 as well and it guessed correctly.

</comment></comment><comment><USER24> 560 milliseconds, 48-year-old... really? Care for a friendly match of Quake Live? :-)

update: when you actually know what will happen it skews in other direction. I got 312 ms (20-year-old) after several tries.

</comment><comment><USER25> It's fun and looks to be designed to go viral, but seems pretty useless. I got anywhere from "We're not sure you're an actual human being" to being a 47 year old.

</comment><comment><USER26> \- First time i was distracted, not sure where the sign would appear. Hit mouse and got 44 years old. \- Second try i was focused and got 25 years old. \- third try i changed to keyboard since mouse is slow, and got "not sure if you are a human being" (288 ms)

In real life i am 38. Perhaps this is a good test for attention level or something like that. Not exactly age per se. But i understood the point ;)

</comment><comment><USER27> I wonder if something which flatters the user is more likely to go viral?

That it consistently underestimates my age by a couple of decades certainly makes me want to link to it and boast.

<comment><USER28> Not sure if I'm flattered by the fact that it said it wasn't sure whether I was human 10 times in a row :(

</comment></comment><comment><USER29> My reaction time is 25 years worse than my actual age according to this. I am not particularly surprised although I question the variance in their methodology.

</comment><comment><USER30> Where are the error bars on the graph? The curve is suspiciously flat, up, and to the right. Plus, half of 18 year olds aren't actual humans.

</comment><comment><USER31> It might be deeply flawed, but the first time it missed my age by 2 months, the next ones i was prepared and my reaction time was lower.

</comment><comment><USER32> At first I'm 55 and then they're not sure I'm human. I'm actually in my late 20's.

</comment><comment><USER33> "You have the reaction of a 23 year old". Since I'm 45, I guess I should take that well, but I would guess it has more to do with spending my 45 (one way) mile daily commute watching for animals on the road.

<comment><USER25> Or simply having a fast computer. If you make the window smaller the graphics speed up and your reaction times magically shrink.

<comment><USER33> The Macbook I took it on is by no means fast. I do take the point about judging hand-eye by methods with such a potential for variance. I do wonder how one overcomes that on the web?

</comment></comment></comment><comment><USER34> So apparently being stoned consistently increases reaction time by about 10 years.

</comment><comment><USER35> I was playing this on my phone and was regularly "we're not actually sure you're human" I was also a little buzzed at the time. I'm pretty sure this isn't accurate.

</comment><comment><USER36> They weren't sure if I was human when I was under 300ms quite frequently. One time as high as 43 years old, otherwise between not human, 18 and 25.

<comment><USER25> tl;dr they have no idea and the test is useless.

</comment></comment><comment><USER37> Went from a 71 year old to "We're not sure if you're actually human" in 3 tries. Benjamin Button!

</comment><comment><USER38> I tried three times and got 37, 26, 35 years-old playing it at full screen in a browser window; I'm 46.

</comment><comment><USER39> 288 ms, we're not sure if you're an actual human being. Funny, I'm pretty sure I am.

</comment><comment><USER40> I got about 15 years younger on average by switching from a mouse click to the enter key.

</comment><comment><USER41> Apparently I might not be human.

</comment><comment><USER42> Using wireless mouse I'm between 28-33. Using keyboard I'm a machine. What can I say? I used to play a lot of COD.</comment>


PageRank is bad math: discussion - <AUTHOR> http://inperc.com/blog2/2011/07/05/pagerank-is-bad-math-discussion/

<comment><USER2> Regardless of whether PageRank is "bad math" (the author being the arbiter of what's bad), it was never about being formally anal, it was about solving a problem -- making search much, much better than the then-competition.

PageRank solves the problem with flying colors. There is nothing wrong about having hidden constants that you tweak until you get the results you want. The alternative would be to, instead of coding what has become Google, attempt to find a more general solution. Maybe you'll find it. Maybe. And if you do, by the time you have, someone else will have come and made Google instead of you. And for what? Mathematical purity? Phobia of constants?

I suppose the author also feels much of physics is also bad, since it's riddled with constants upon constants, all of which are "ticking time bombs": <http://en.wikipedia.org/wiki/Physical_constant>

<comment><AUTHOR> Google was successful then with PageRank, but maybe now they need something better? It is my personal opinion but building something as huge (now) as Google search on such a shaky foundation as PageRank is dangerous.

I don't think physical constants are made up and they certainly aren't hidden.

<comment><USER3> PageRank is one of more than 200 metrics Google uses in its search engine. Your presumption that it is the foundation, or even the most important metric, is unwarranted.

<comment><AUTHOR> Initially it _was_ the foundation and currently let's just admit that neither of us knows.

<comment><USER3> Well, generally how search works now was actually one of the first things I learned when I started working for Google, but my point was that you don't know and are just making things up.

<comment><AUTHOR> Ok maybe you do know. However, it's odd that you bring up that you work at Google and then add nothing new to the discussion (everybody knows about the 200 metrics). How about: "You're wrong, PageRank has _never_ been the foundation of Google search"?

<comment><USER3> I never said PageRank has never been the foundation of Google search or that PageRank isn't a part of search, just that there are other parts that you are not taking into account.

As to why I'm not saying exactly how Google search works -- I'm obviously under confidentiality agreements to not disclose that information.

</comment></comment></comment></comment></comment></comment></comment><comment><USER4> The math in the original 1998 PageRank paper might not be mathematically 100% sound, but why would they need that in the first place? Do you really think you need a formal analysis before you build something? This is not academia, you know - if you need a formal proof of everything you do, you'd never get anything done.

Besides, the paper you're referring to is 13 years old. Why drag it up now?

<comment><AUTHOR> They found time to publish this in 1998 but have been too busy since? I don't think so. The reason is that they decided to keep all new development secret. That's why we have to speculate.

<comment><USER3> Your speculation is in no way sound.

</comment></comment></comment><comment><USER5> "But π=3.14159265358979 is a time bomb! Sooner or later it will fail you when it's not accurate enough anymore."

Well, actually for almost everything humans do, this will never, ever fail you. In fact, I can't think of a single thing this will fail for outside of physics research or formal mathematics.

</comment><comment><USER6> it may be flawed math but it is solid engineering

<comment><AUTHOR> Is manually penalizing the ranks of spam sites solid engneering too?

<comment><USER5> Well, sure. Google is a machine that turns small text queries into internet links. It does this remarkably well. If manually penalizing sites gets you solid improvements beyond what automated or clever methods give you, it is bad engineering to not do it. What's the argument against this? Sure, it makes engineers feel icky to have manual anything, and it's not nearly as scaleable or reliable as some hypothetical automated solution. The issue is that the hypothetical automated solution doesn't exist. I'm sure they have 500 of the smartest, most capable people in the world working on this every single day, that they haven't found it is good evidence that the solution is not obvious.

Surely a fully automated, self correcting algorithm exists to penalize spam sites and shitty content farms, and whoever comes up with it will be _heavily_ rewarded financially for doing so, either because they will make major inroads in the search space, or because there will be a bidding war for the technology. That nobody has come up with it outside of Google either says it likely is outside of the engineering ability of humans to do it at the moment.

</comment></comment></comment><comment><USER7> > But π=3.14159265358979 is a time bomb! Sooner or later it will fail you when > it's not accurate enough anymore.

If you know the exact diameter of the sun, and calculate the circumference with 3.14159265358979 as an estimate for pi, then your error will be about 10 microns. Using a 14 digit estimate of pi, is never going to be a timebomb for any practical task. If the earth was round to 14 significant digits the highest mountains would tower 10 nanometers above the deepest valley.

<comment><AUTHOR> You are saying, I think, that we won't ever need to know π beyond some accuracy. By saying that you, if you are right, are doing _good math_.</comment></comment>


Test your stock-picking skills with instant feedback. Most common word from my users: "addicting". - <AUTHOR> http://www.inspectd.com <comment><USER2> I'm currently at the top of your leaderboard after issuing nothing but buy orders for about 5 minutes. I didn't even read the charts.

This confirms my opinion that chart reading is nonsense.

<comment><USER3> ...or we've stumbled on a really good investment strategy:

1\. buy a random stock

2\. hold for 20 days

3\. profit!

currently #2 on leaderboard before I got bored.

I wonder what the capital gains impact would be...

I suppose it's rather like investing in an index fund, with a bit more volatility :)

<comment><USER4> Often times mechanical trading strategies discussed in papers that use fancy math and algorithms don't consistently beat buy and hold.

<comment><USER5> You'd assume that the average algo strategy does worse, if only because it's an average portfolio plus extra transaction costs.

</comment></comment></comment></comment><comment><AUTHOR> I just launched on Saturday and have already had more than 10,000 trades "executed". Your comments are much appreciated. (Note: if you think reading stock charts is a bunch of crackpot hooey, feel free to flame.)

<comment><USER6> Reading stock charts is a bunch of crackpot hooey. I'm nr. 2 on your site with my highly sophisticated "always buy" strategy.

However, it might be an excellent tool to help technical analysts (gamblers) discover their own lack of skill.

I like your execution - it is indeed addictive.

<comment><USER7> I'm no expert, but it seems to me that reading stock charts is just a particularly unsophisticated form of statistical arbitrage, and that it _might_ work provided that nobody else in the world is doing it.

Real statistical arbitrage firms, as I understand it, work by looking at the historical variation in thousands of asset prices at once, putting them into an enormous covariance matrix, and using dozens of very smart mathematicians and millions of CPU hours to figure out which assets are likely to be currently underpriced.

That's how folks like Renaissance Technologies got rich. Unfortunately, as soon as the secret got out, other folks started doing it as well, and pretty soon the mispricing of assets got smaller and smaller, so they're in an arms race to find more and more sophisticated algorithms.

So I guess the point is that if mispriced assets are that hard to find when you have a hundred PhDs and a supercomputer, you're not likely to do very well just by looking at whether a squiggly line is currently above or below its recent average. All the easy money has already been vacuumed up.

</comment></comment></comment><comment><USER8> This is really cool!

The main problem right now is that since the market is long-biased and there's no concept of time in the rankings, it's easy to get to the top by always clicking "Buy". It would be cool if you could make the rankings actually reflect a confidence score of how well a user is beating the market.

I'm not very strong on the statistics, but here's a possibility: for each trade, calculate the user's excess return against the market, represented by an index fund: (user's return % - market return %), and multiply that by the number of days. Then assign a confidence score using a t-test, maybe: t = (excess return * days) / (sample variance / sqrt(number of days)), and look up the confidence level based on the t-value. Finally, rank users according to their confidence level.

Something else--since this is technical analysis, it would be cool if you could include some other indicators on the chart, e.g. RSI, more than one moving average, bollinger bands, etc. That could give you some cool metrics-- you could track how well each combination of indicators improves picks, by user and in aggregate.

</comment><comment><USER9> The fact that someone named "RightClickCheater" is at the top of your leaderboard (and way out in front) raises some concerns.

<comment><USER3> That'd be right clicking to snatch the chart URL, which contains the stock symbol and date parameters. Peeking into the future would certainly help one's rate of return a bit :)

<comment><AUTHOR> Yes, I thought of this but didn't think someone would go to the trouble to look at the stock and date, then look up the price N-days after that, then go back and trade it. Apparently I was wrong! I could solve this by dynamically creating an image w/ PHP and trimming the stock & date, but my poor shared CPU wouldn't like that...

<comment><USER10> Just store their current stock symbol & dates as session variables, and make the src of the image be a .php file which has the one liner:

<?php header("Location: <http://quote-web.aol.com/..>."); ?>

Then you don't have to use image processing (including actually reading the image), and they'd have to become right-click-and-copy-paste-image-src-check- in-new-tab-cheater! :-)

</comment></comment></comment></comment><comment><USER11> The concept is interesting. I, however, am not a fan of technical analysis. It's been drilled into my head that technical analysis is a self-fulfilling prophecy.

If everyone looking at a chart determines that the exit price should be $20 (let's assume the stock has shown a resistance level at that price) many people would try to exit around $20. The assumption would then be that if everyone does indeed believe that $20 is a ceiling, then everyone would sell at $20 thus creating the ceiling.

I believe sound fundamental analysis is the optimal method of analysis, but even that method has been called into question over the course of the last eight months as many investors are learning that much of what is on the books is either someone's best guess or flat out fraudulent at best.

</comment><comment><USER12> The page doesn't factor in Splits. Entry Price: 52.00 (Mar. 8, 2000), Exit Price: 48.88 (Apr. 5, 2000) Comes out to a 6% loss, but there was a SPLIT on the 21st! I should be up nearly 100%.

<comment><AUTHOR> Splits are factored in. The chart is showing adjusted prices so there's not a huge gap after a split.

</comment></comment><comment><USER13> I like the concept. While short term stock exchange is usually a risky waste of money, this does help illustrate certain principles.

The number of people suggesting that 'always buy' works shows us something: that the economy on average has grown over the past century. Reason being of course that, when one person succeeds, he provides means for another person to succeed. Thus growth begets growth, especially capital growth. Investing broadly in the stock market is almost always sure to bring modest gains over the long term.

</comment><comment><USER14> Question, are the charts simply random charts from random companies recently trading?

Where are they coming from? I see AOL is providing them, but how are they selected for use in the site? This might explain the amount of users who seem to be succeeding by clicking only the "buy" button.

Is there an algorithm that makes sure the gains and losses are evenly distributed in the charts (less realistic), or are the charts completely random (mimicking the experience a real stock trader would be presented with the charts)?

</comment><comment><USER15> My only criticism is that its hard to tell where the stock was after the time- window is grown after I click buy/sell. If i click back, then I can see, but otherwise its kinda hard. If you could put a little vertical red line over the image where I bought/sold the stock, it'd help figure out what happened. I know you're just pulling a picture from yahoo finance, but since the time- window change is always the same, the red line should always be over the same spot.

</comment><comment><USER16> That is really cool. Keep up the good work, maybe add an API so I can test stock picking programs against your data ;)

<comment><AUTHOR> In the works; probably not free :(

<comment><USER17> Why would you say :(? It is a great idea and people would and should pay for it. Fuck free.

</comment></comment></comment><comment><USER18> Hmm. Are you storing our passwords as plain-text? It's always disappointing to see my password emailed to me after I've registered on a site. I picked it out, I know what it is, but now I have to wonder how it lives in your database since you don't seem to care about security at all.

</comment><comment><USER19> I'm curious as to what other people think of long valuation waves? <http://www.zealllc.com/c2005/Zeal080505B.gif>

</comment><comment><USER20> I found another way to "cheat." Change the length of time to 40 days, and then click the buy button five or six times before the buy/sell/skip buttons change to the "new trade" button.

</comment><comment><USER21> Yeah, it takes a real genius to figure this one out. Just buy anything it asks you about. Period. After about 40 trades, you'll have several million.

<comment><USER19> All this technique proves is that I'm extremely unlucky.

</comment></comment><comment><AUTHOR> Man I love the interweb. Pre-YC: 10,000 trades executed. 24 hours later: 75,000. Maybe PG wishes he had that phone call back. Just kidding :)

</comment><comment><USER22> Is there a way to tell what the company you are trading is? Or is not knowing the point? I would never trade stock based solely on charts.

</comment><comment><USER23> wooo enough for the leaderboard in a few minutes.

Anyway, create an API and a bot competition! Don't give the link, and use a timer and required open source to discourage cheating (still can't eliminate it, ah well.)

EDIT: Oh man! your score isn't saved if you make an account. I would be in second place.

</comment><comment><USER12> $40M and now my eyeballs hurt... but my average return is just .02%.

<comment><USER12> Well $131M now. I find it's all about effective use of the 'skip' button.

</comment></comment><comment><USER24> Seems like this might be a good Facebook app

</comment><comment><USER25> i think matthias wandel's came first:

<http://chartgame.com/>

</comment><comment><USER26> What is that picture of?

And why?</comment>


Ask HN: Is there a market for a "Facebook circa 2006" clone? - <AUTHOR>

Since the recent F8 announcements I've been pondering the question of whether there's a market for a site which is basically what Facebook was back around 2005?  This would be the point after it had photo sharing & the news feeds, but before all the blurring of public/private data and the whole "crapp" platform.  It would have an incredibly straight-forward privacy model: if they're your friend they can see everything you post, if they're not they see nothing but your name (+ some other identifying detail).
I joined FB in the first wave in '04 and it had fantastic utility as an undergrad not to mention a crazy amount of mindshare on my campus (CMU).  I can't help but wonder if this could be done again.
Anyway, just curious if anyone else has been thinking along these lines?  Has the boat already sailed on social networks?
By the way, I have no intention of actually trying to build this. <comment><USER2> You don't just need a market. You need a business model. Facebook scale is not cheap. Facebook is innovating like crazy to figure out a business model that can pay for that scale.

Received wisdom was that privacy was sacred. Received from early adopter tech geeks, that is.

As Facebook matures, hundreds of millions of not-so-early adopters are revealing a different perspective: give them one stop social sharing that works for everyone they want to interact with, and they don't care.

This offers Facebook new business opportunities to monetize at scale, and they're taking them. Although they're not a public company, they clearly do want to be profitable, with no qualms about "all your base are belong to us" in pursuit of that motive.

You can't just build a Facebook circa 2006 clone. You have to build a Facebook circa 2006 clone that can pay for itself.

</comment><comment><USER3> Ignoring the high cost of moving off Facebook, the simple friend/foe privacy model fails when your _mother_ wants to be your FB friend and you can't hide last weekend's drunken debauchery from her (You're a college undergrad, remember?).

"So don't post that there" is the last thing you want as the site operator, because you want your users generating meaningful (to them) content. Which leads to slightly less straight-forward privacy model if you still want users to post pics, or less content if you keep the straight-forwards privacy. Arguably, there's more to be found on FB, but I'd rate seeing "pics of that party you missed" as an easy way to drive sign-ups in the college crowd.

<comment><AUTHOR> Very true. But also remember that in '06 your mother wasn't on FB.

</comment></comment><comment><USER4> Is there a market? Yes (edit: otherwise articles that we've seen recently regarding their changes wouldn't cause an uproar)

Will it completely disrupt Facebook? Not likely. At least not soon.

I've been wondering whether it might be possible to charge a small monthly fee to cover hosting expenses for such a service, with a value add being essentially flexible privacy controls, and lack of a business need to monetize in ways that hurt privacy.

<comment><USER5> Flexible just means confusing, usually.

</comment></comment><comment><USER6> I would quickly joint a facebook clone if I thought it trustworthy, then shrink my facebook presence as more of my friends migrated to the new platform. Hell, people would probably use facebook to advertise such an alternative service. Once my core group of friends migrated I would destroy my facebook account.

</comment><comment><USER7> I would say no, solely for the fact the people will join social networks where their friends are, and their friends are on facebook.

<comment><USER8> Circa 2004, they were on Myspace. It's a website, not a marriage -- given enough reason, people will move.

<comment><USER9> People even end marriages, given enough reason.

<comment><USER10> Reinforcing his point even more.

</comment></comment></comment></comment><comment><USER11> Yes. I bet there is a market for a wikipedia type soc-net.

</comment><comment><USER12> No, but there's a market for a wikipedia-style Facebook.</comment>


Are Databases and Functional Programming at odds? - <AUTHOR> http://stackoverflow.com/questions/330371/are-databases-and-functional-programming-at-odds <comment><USER2> What? Relational databases and functional programming are very much aligned, see [http://thoughts.j-davis.com/2011/09/25/sql-the-successful- co...](http://thoughts.j-davis.com/2011/09/25/sql-the-successful-cousin-of- haskell/) (that's the second time I link to that post [I'm not the author] on HN, because I think it's awesome).

</comment><comment><USER3> The only "issue" is that many functional languages don't have good database bindings, once you have the data it's very natural to work on a resultset as a list (of tuples/records/whatever you prefer to call them). Now might be a good time to plug the Oracle bindings for OCaml: <http://gaiustech.github.com/ociml/>

<comment><USER4> Works for me! I would often prefer to avoid the ORM make-work, and just take a Perl-ish approach (in Java), processing something like List <Map <String, Object> > (emulate an array/list of hash/tuple), rather than dealing with a bunch of boiler plate classes which contain _no_ logic what-so-ever.

</comment></comment><comment><USER5> Don't feel bad: databases and object-oriented programming are also at odds. It's no accident that object-relational mappers are so leaky.

<comment><USER6> I'm of the opinion that the obsession with these ORMs is, in some small part, the result of an abject fear of using SQL directly.

There's a certain incompatibility that prevents them being truly powerful without bending your schema to the will of the ORM, or without sacrificing a lot of the potential functionality SQL has to offer (and thus the readability of your code as you try to shoehorn these things in).

I suppose NoSQL solutions help fill that niche, though.

</comment></comment><comment><USER7> Isn't SQL a functional language, of sorts? [http://stackoverflow.com/questions/1153397/besides-a- declara...](http://stackoverflow.com/questions/1153397/besides-a-declarative- language-is-sql-a-functional-language)

<comment><USER8> It is a declarative language. But the underlying math of SQL is that of relations. It's closer to prolog than to Haskell. I don't know much about the theory of SQL but at least I can draw on the analogy of deriving algorithms in a Relational setting vs a functional to emphasize that the essence of functions is not the same as the essence of relations: Unlike functions, relations can be nondeterministic and each relation has a converse.

</comment></comment><comment><USER9> Functional languages aren't stateless... at least not the way this person, and many others, imagine. Of course they have state, and manipulate state, and do anything else that any other language does. Therefore, they have no conceptual problem with talking to databases any more than they do talking to anything else along a socket (or byte stream).

The real get-to-the-root-problem answer, which I don't see on StackOverflow right now, is to come to a better understanding of what functional programmers mean by statelessness. Broadly: A function ought to be a function. That is, when called with the same parameters, it should return the same result. A functional programmer says that in an imperative program, there is an implicit additional parameter passed to every function, call it World, which contains vast quantities of state, global variables, global references, the IO state of the world, the ability to open sockets, etc., and that every function implicitly returns a new World value with unbounded changes made to it. Functional programming removes this implicit passing of the World value, and replaces it with an explicit version. (Or rather, the strong, modern version of "Functional Programming", which is implicitly what was specified when talking about the importance of statelessness.) In Haskell, this is the IO datatype used as a monad.

A stateless function is one that does not examine World and depends solely on its non-World parameters. You can write them in non-functional languages, they just don't particularly provide you any assistance. Functional languages are ones that do provide you assistance, such as the State monadic value, which contrary to popular belief is in fact fully stateless when the arguments to all the relevant functions are de-sugared and examined. (It has a state-like effect as the programmer thinks about it, but is actually just syntax sugar for threading a value through a series of functions, as older-school functional languages like Erlang do.)

Functional languages conceptually allow functions to apply to the real world by threading a World value through some functions, and ensuring that World values can't be reused. (How they literally function may differ in ways you don't care about for now.) This is what the IO monad is doing in Haskell, ensuring there's no way to reuse a given World psuedo-value.

So, no, functional languages have no problems talking to the database when passed the relevant World value. (Hypothetically they could be passed a restricted value that would let them only talk to the database, rather than have full access to all IO.) You just won't be able to crack open a connection to the database and start talking to it unless you're in a context where that is permitted. You won't be allowed to do it without realizing it, declaring it, and explicitly controlling it.

(Also, as is the way with this sort of post, there's some ways to quibble with it. I was trying to keep it not Haskell specific, but that sort of makes it hard to maintain consistent terminology, especially when speaking to novices. Perhaps I should just have gone for Haskell only.)

<comment><USER4> The entire "monad" discussion is pretty hard to get your head around. Perhaps part of the problem is that it represents not just side effects, but also forced ordering of operations (albeit, largely to allow for those effect-full interactions with the outside world).

I think that maybe for "industrial" programmers, we need a language, perhaps _something_ like Scala, where the default is pure functions and immutable data, but you can tag things (functions & data) as "mutants", er, "mutable"/"mutates", and those tags "taint" what those elements can be combined with. Call something with side effects from something that should be pure, and get an error, that sort of thing. Then, teach people to use mutable data as sparingly as possible. Maybe wrap database updates in some kind of (small!) message handling actor?

<comment><USER9> "Call something with side effects from something that should be pure, and get an error, that sort of thing."

If you enforce that, you get Haskell, where you have no choice but to wrap your head around isolating your IO layer from everything else. If you don't enforce that, you don't get very much material difference in practice.

I'm concerned that in practice, 99% purity isn't very useful. We shall see. (You get advantage from 0 - 50%, then I think a long plateau, then a sharp spike right at 100%. It can be hard to make the leap, since there's no way to ease into it.)

"The entire "monad" discussion is pretty hard to get your head around. Perhaps part of the problem is that it represents not just side effects, but also forced ordering of operations (albeit, largely to allow for those effect-full interactions with the outside world)."

Well, part of the problem is that "monad" doesn't mean any of those things. It's an interface (very much like the Java sense of the term) which has some implementations that enforce those properties, and other implementations that do not. Which is to say that yes, it is hard to get your mind wrapped around, but this is largely because of the spray of terrible, terrible explanations of the monad interface sprayed about by people who barely understand it themselves.

The best way to actually learn them is Learn You a Haskell; if you've already learned basic Haskell syntax you can leap straight to chapter 11[1]. (Do _not_ jump straight to the Monad chapter 12. Start at 11. Start earlier if you don't know the syntax.)

"Monad" is an adjective, not a noun.

[1]: [http://learnyouahaskell.com/functors-applicative-functors- an...](http://learnyouahaskell.com/functors-applicative-functors-and-monoids)

<comment><USER4> OK, I still feel pretty ignorant about it. That said, perhaps the Haskell community would be better served by communicating about the various commonly used monad cases seperately, rather than mixing the discussion up around what seems to be a common "syntax" (approximately) to apply various traits. Again, spoken as an outsider who wants to find the baby in all that bathwater :-)

I did do at least some LISP back in the 80s in college, although it was limited to puzzles and mini expert system type problems (enough to see that pure functions were a good idea), but not to do what most people would think of as "applications" with any kind of data feed connectivity. By the late 80s, AI seemed to be moving to neural net ideas, so we didn't dwell on LISP much in the other AI related class I took.

The paying the bills in the real world forces you into a plethora of Turing tar pit languages :-)

OTOH, simply trying to explain the idea of "pure functions" to one of my Java programming coworkers a few years ago was stunning. Me: look, you can easily understand the workflow this way -- the routine is short, and all the data used is in the parameter list and the result returned. Him: hmm, I _guess_ that might help with debugging.

</comment></comment></comment></comment><comment><USER10> See "Out of the Tar Pit" by Moseley and Marks <http://web.mac.com/ben_moseley/frp/paper-v1_01.pdf>

It's a great idea for a new paradigm of functional relational programming.

<comment><USER11> Thanks I have been looking for this text for a while, read it once and then lost it.

I think it has some excellent insights, all developers should read it.

</comment></comment><comment><USER12> Functional programming has to contend with "the real world", which is stateful. FP isn't about eliminating computational effects, but managing them. The virtue of functional programming is that _most_ of what happens is stateless, so that when stateful effects are needed, they're simple, uncoupled, and do exactly what one expects them to do.

One principle for these sorts of applications is the "command/query separation". In essence, a procedure exposed at an interface level should either (a) do something, and do exactly what the user expects, or (b) answer a question about the system _without_ computational effects. The case of (a) might be called "side effects", but that's a misnomer in this case because the requested state changes are the _main_ effects.

Functional programming is really about having the most basic "building block" of a program be a referentially-transparent function, and to handle stateful effects either using an abstraction such as an Action DSL (which represents a collection of stateful behaviors, which are computed statelessly and then executed or "committed" in a stateful environment, relegating the statefulness to one "commit" function) or a monadic representation. In contrast, imperative programming uses computational actions as the atomic "building block".

For small programs, either imperative or functional programming will work. Imperative programming isn't evil; sometimes (but not often) it's the right approach. The problem emerges as programs get larger and more complicated, and more hands pass over the code. If a function is referentially-transparent, its semantics are usually tractable. If proper tests exist for it, optimizing the function (e.g. for performance) shouldn't affect the rest of the system. The constraint to which the function's maintainer is held is that the semantics shouldn't change, and any alteration that does change its semantics is an _objective_ bug. The function might be memoized (that's a private "side effect" that doesn't affect referential transparency) but it still has to behave the same way. That's a really good property. In an imperative language where functions are replaced by computational _actions_ , these actions are _frequently_ made more complex and featureful as time goes on, and unexpected interactions emerge. Semantics can be defined for imperative programs, but doing so is more complicated and it's rarely done in real-world professional programming.

Most clusterfuck awful systems in software, for the record, are complex systems with imprecise semantics. I would say that 90% of software failures I've seen can be characterized in this way. This sort of thing can happen in any language, but it seems to be a lot more common in imperative programming, especially in verbose languages like Java or C++. It's just much harder to enforce precise semantics over an anything-goes imperative style of programming than a functional one.

As for databases... well, reality is that purely functional programming isn't always possible. We're not just computing mathematical functions; we're trying to do things in the physical world. We _need_ persistence, and that means telling a robotic arm to write bytes on magnetic media (stateful effect). There are several approaches that one can use. One that I like (and it has a lot of desirable properties in distributed systems) is the append-only approach: update and delete operations simply aren't allowed, although new records can shadow old ones in the context of time-sensitive queries. For example, the temperature in New York is 56 degrees now (8:30 am, May 7). In six hours, it might be 70. That doesn't mean we throw the old record away. It's still valid: the temperature _was_ 56 at 8:30. The answer to the query, "What was the temperature at 8:30 in New York?" should never change. On the other hand, the answer to the query, "What is the _most recent_ temperature in New York?" will change all the time.

<comment><USER13> I like also the "append only" design. It means you store events, not state. You would not check a "is_read" boolean on a comment, you would insert a "who read what when" event in a long but narrow table, whose indexing is much faster.

I often want to promote this way to coworker, any reference on this topic to help me convince them?</comment></comment>


Russian Memorial to Steve Jobs Dismantled After Tim Cook Comes Out - <AUTHOR> http://recode.net/2014/11/03/russian-memorial-to-steve-jobs-dismantled-after-tim-cook-comes-out/

<comment><AUTHOR> Because a gay man succeeded Steve Jobs at Apple then Jobs memorial must come down? That makes absolutely no sense at all to me. I wonder if Putin has also banned the music of Tchaikovsky as well?

</comment><comment><USER2> Is it a joke?

<comment><USER3> Quite real</comment></comment>