Ask HN: Algorithms for the de-duplicate of content? - <AUTHOR> I've been on the hunt for algorithms that can "dedupe" content, but haven't found much.
To give a little more context:
Given a piece of content and a second (altered) piece of content. Can I use an algorithm to determine the likelihood that that second piece of content is a variation of the first?
I essentially want to store one variation of the content in my database, with references to altered variations of the content, but I need to be able to detect the altered data.
Edit:
Imagine having a million resumes (some in doc, some in pdf, some in html) and you want to dedupe them. <comment><USER2> I think a pure diff is going to give you too much noise and will be misled by simple mutations (I think..).

Here's an approach - after you normalize the docs to text you should then extract terms/keywords (google "term extraction" \- there are libs that use POS to help) and save those as tokens. One approach would be to use something like elasticsearch to do a "more like this" filter. The idea is that you want to find documents that are most similar to a certain document.

I haven't tried this approach but if it's effective, it should be able to handle a million resumes easily.

</comment><comment><USER3> Your question is asking for a "diff" algorithm. For Unix/Linux systems there is the classic diff utility itself [1]. For arbitrary binary content you'd be looking at something like bdiff [2] or xdelta [3].

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

[2] [http://bdiff.sourceforge.net/](http://bdiff.sourceforge.net/)

[3] [http://xdelta.org/](http://xdelta.org/)

<comment><AUTHOR> As noted in another answer-- the data is very free form and a simple diff may not help.

Imagine having a million resumes (some in doc, some in pdf, some in html) and you want to dedupe them.

<comment><USER3> Which important detail also was not in the original question. What was in there was:

I essentially want to store one variation of the content in my database, with references to altered variations of the content, but I need to be able to detect the altered data.

For which a "diff" style algorithm is a possibility, just storing the "alterations".

Your update edit changed your question to be one for a different problem. For this goal-post move, you'll want to look into plagiarism detection algorithms.

<comment><AUTHOR> That's why I updated the question to prevent any more confusion.

Thanks-- plagiarism detection sounds like a good avenue to check out.

</comment></comment></comment></comment><comment><USER4> Maybe locality sensitive hashing or locality preserving hashing ?

What sort of data are you storing?

<comment><AUTHOR> The content is pretty freeform-- one could be in html, could be in pdf, etc.

To give a more concrete example, imagine having a million resumes (some in doc, some in pdf, some in html) and you want to dedupe them.

<comment><USER2> You'll have to normalize them to text to make it work - the format is not important for the deduplication (meaning the same text in a word doc or pdf is really the same thing to you, even though at the byte level the files may be very different.)</comment></comment></comment>


We're Deprecating HTTP and It's Going to Be Okay - <AUTHOR> https://konklone.com/post/were-deprecating-http-and-its-going-to-be-okay <comment><USER2> what is going to happen to the websites under an intranet... for example the ones you access as [http://server:8080](http://server:8080)</comment>


Houdini 17.5 Launch Talk - <AUTHOR> https://vimeo.com/322225534 <comment><AUTHOR> Submitting this because their new feature is interesting in the view of programmers.

They abstracted away part of the software to create a visual dependency graph tool. To over-summarize think visual make. With partitioned multi threading and more.

I think it can inspire other guys outside of the CGI world or maybe attracts criticism or simply discussion.</comment>


The man who made Bond - <AUTHOR> http://www.intelligentlifemagazine.com/culture/the-daily/the-man-who-made-bond <comment><USER2> If anybody else thinks the new Bond has lost both it's fun and ridiculousness (from pre-Craig movies), but also its hard realism (basically only Casino Royale), check out Kingsmen, which at least gets the over-the-top fun right. 'Honest' Trailer: [https://youtu.be/I1CI3e4w9CI](https://youtu.be/I1CI3e4w9CI).</comment>


Mac OS X has its own sandbox security hole - <AUTHOR> http://arstechnica.com/apple/news/2011/11/researchers-discover-mac-os-x-has-its-own-sandbox-security-hole.ars <comment><USER2> I propose Maggie's Law (based on an episode of The Simpsons -- or was it their movie -- the one with the big glass dome): "All sandboxes leak."

(I'm sure I'm not the first to quip on this point.)</comment>


Ask HN: As a future medical student, what area of tech should I focus on? - <AUTHOR> Note: I'm a complete novice and don't even know how to program, but I'm very interested in innovation and tech.<p>Is it worthwhile to learn programming/tech knowledge, or should I save it for the experts? The reason I ask is that I believe tech + medicine is ripe for innovation. Thanks. <comment><USER2> As a recently minted family doc with a tech background, a tech background only helps a little bit with your medical training; if you are just starting undergrad you can try your hand at genetics, computer science, bioengineering, biostats, etc.; however these can have negative impact on your gpa and science gpa, so be careful.

Getting into med school, completing medical school and completing residency are all difficult tasks in and of themselves.

If you know you want to focus on certain areas of tech there are also a few add on fellowships after residency.

Getting an internship or job in biotech, or even working as a medical scribe may help you more in the long run.

If you have extra cycles and really want to learn to code you could add a CS minor to your degree or take a bunch of the online Computer Science courses (typically CS assumes that you've had 2 years of advanced math ( calculus, differential equations, etc.)

Under no circumstance would I recommend delaying undergraduate graduation to add on these extra skills, Rather get a masters in an in-between year, or if you're really crazy there are some combo MD/Phd and DO/Phd programs.

But outdoor activities are probably a better use of you time, take up running, cycling, swimming. Something that you can do anywhere to take care of yourself and that reduces your stress level.

</comment><comment><USER3> Medical student here. I conduct research in genomic medicine on the side, and programming is a large part of what I do. In my particular field I find a solid background in algorithms and statistics to be very helpful in interpreting large amounts of data. I encourage you to get started by taking introductory computer science and continuing with math, especially in probability and statistics. There is an incredible divide between medicine and tech at the moment, and CS is a highly sought-after skill in medicine. Feel free to follow up with any more specific questions, I'm happy to answer them!

</comment><comment><USER4> Learning at least the basics of programming is generally a good idea, as it will help you to understand how things fit together. eg medical software + medical hardware

As you have ideas, you'll have a greater knowledge of what can work, and greater insight into how to approach things.

A language such as Python is very suitable for beginning programmers to learn with, there are many books/tutorials around, and the foundations of the language itself are reasonably stable.

eg the stuff you learn will likely still work in 5 years time :>

</comment><comment><USER5> There are SO many areas you can go in to. Machine Learning/Non-knowledge based clinical decision support, genomics, 'big data', pharmacogenetics, clinical data standard creation, and the list goes on. You can check out the clinical informatics subspecialty if you're looking for a broad curriculum of medicine + technology, don't want to dive specifically into learning programming, and/or are trying to get CTO/CMIO/CIO jobs in the future.

</comment><comment><USER6> 3d printing. Most of my friends in med and bio sci are heavily working in 3d printing.

I've seen some working with hardware, chips to implant in the body/spine.

I haven't seen much in relation to software asides from SAAS

</comment><comment><USER7> There was a doctor in the UK who was using 3-d printers to print bones and structures to help him understand anatomy. Theres also work in this area for replacement parts - could be interesting

</comment><comment><USER8> We don't like being called experts</comment>


Show HN: SearchTrack – Collaborative knowledge sharing through links - <AUTHOR> http://www.searchtrack.co/ <comment><AUTHOR> SearchTrack lets you collaborate with peers, to collect useful links to content, contacts, products and services around any topic. From vocation to vacation!

You can then choose to make this research public so that others looking for useful resources around that topic could save time.

Launched about 17 days ago, we are a fast growing community of over 300 users.

My team and I could really use your feedback. Thanks!</comment>


Ask HN: TeamViewer alternative? - <AUTHOR> Hello. I just saw that TeamViewer 11 doesn't have a free license any more. Like LogMeIn, they stopped it. I just tried AnyDesk and it was kind of ok. Any other free alternatives? Mostly I need unattended support. I have to be able to connect to a few computers that are turned on but no one is there to accept the connection. <comment><USER2> I am assuming you mean on Windows, because ssh works pretty much everywhere else(and then xwindow forwarding or whatever you want riding on top.)

If you dont need the other user logged in, have you tried RDP? [https://support.microsoft.com/en- us/help/17463/windows-7-con...](https://support.microsoft.com/en- us/help/17463/windows-7-connect-to-another-computer-remote-desktop-connection)

I have (in the distant past) paired this with a little dynamic dns script (so they had a hostname) and some firewall rules to make sure RDP wasnt available to the general internet.

This has quite a few limitations but if you are looking for free, it does work.

</comment><comment><USER3> not feature rich , but free Chrome Remote Desktop \- [https://chrome.google.com/webstore/detail/chrome-remote- desk...](https://chrome.google.com/webstore/detail/chrome-remote- desktop/gbchcmhmhahfdphkhkmpfmihenigjmpp?hl=en)

</comment><comment><USER4> [http://anydesk.com/](http://anydesk.com/)</comment>


Inbox of employees - <AUTHOR> What happens to the inbox of employees once they move out, what kind of a right does an ex-employee have over the means of the inbox? Are the inbox buried or subjected to analysis? <comment><USER2> At my company your email inbox, sent, cc, attachments, spam, deleted items...everything is backed up instantly. Once you leave, all of your access is revoked but if necessary our mail admin can retrieve every communication that passed through our server. We've had to do it a couple of times actually.

</comment><comment><USER3> It's not yours, your password should be changed before you leave the building so you can't access it.

Practically, anything you want personal access to needs to be in your name, outside of business uses. Forwarding stuff from business to personal is probably questionable, depending on your industry and what you do with it.

<comment><USER4> > It's not yours

Be careful. Many company policies say otherwise. For example, one of my employees just left the organization and during the off boarding process had the option to receive a copy of all their work files including emails.

</comment></comment><comment><USER5> I can speak from experience that the inbox is the property of the company. Worked at many company's who would commonly just disable the email account to login and forward all new email to a manager (or ceo/whatever).

This is also true with any computer that they gave you.

> I'm not a lawyer so I can't speak for the legality of this.

But if you are talking about a company's email server that you have an account on. It's the private property of the company likely.

<comment><USER2> We had an employee who was terminated and had her friend who still worked for us log on to her personal drive on the network and delete everything. Of course the admins were able to retrieve it all and of course her friend was immediately terminated.</comment></comment>


An in-depth look at the engine behind Crysis 2 - <AUTHOR> http://gaming.icrontic.com/article/does-crysis-2-live-up-to-visual-expectations/

<comment><USER2> this post is misleading, it only briefly overviews global illumination in cryengine 3.</comment>


Why Java exceptions are slow (and Common Lisp conditions aren't) - <AUTHOR> http://groups.google.com/group/comp.lang.lisp/msg/6157c055503e8ba8 <comment><USER3> FWIW, structured exception handling (SEH) on Windows (and used by .NET etc.) does not use the approach described herein.

SEH scans the stack twice. The first time, it calls handlers in reverse order of registration (handlers are registered on function entry) asking them if they handle this particular exception. Any handler can return a condition code to tell the OS to essentially ignore the exception and continue with the next instruction (a bit like VB 'On Error Resume Next'); perhaps the handler repaired the error condition.

It's only after it has found a handler that indicates that it can handle the given exception that the OS goes back and actually unwinds the stack. That process involves calling all the handlers a second time, only this time passing them a flag indicating that unwinding is actually taking place. That's when 'finally' blocks get run. The OS keeps on going until it reaches the handler that indicated it could handle the exception.

That's how things work in Win32. The situation in Win64 is slightly different, as rather than FS:0 containing a pointer to the head of the exception chain, program-counter-based lookup tables are used instead. However, the two-phase exception dispatch is still used.

</comment><comment><USER4> An exception, should be - by definition - exceptional. Why would it matter that much if it's slow? I think that's premature optimization...

There are a lot more important things to make sure are fast.

If most of your CPU time is spent throwing Exceptions, something is probably seriously wrong.

<comment><USER5> The title of this HN submission is subtly misleading. The original post discusses the fact that Java's exceptions are slow, but merely as a symptom of the main problem: Java mixes up the issues of (a) finding some code that knows how to handle an exceptional condition and (b) backing up the call stack until it can find some code to continue executing. In Java, (b) is unavoidable, so the context of every exception is destroyed before the exception handler can examine it.

As noted elsewhere in this discussion, this means that Java exceptions aren't resumable [1] and that a Java exception can't examine all the variables that were alive when the exception was thrown and take action (like: logging) based on the values of those variables [2]. Plus there may be memory-usage implications. All of which are dimensions of suck that are independent of the speed issue.

\---

[1] Not that I really know what this means, having never learned a language where this was possible.

[2] This, on the other hand, would be win that I could understand.

<comment><USER6> Couldn't [1] be implemented quite simply by some sort of exception handler manager thinggie?

Exception.OnThrown += LogThrownException;

Where this callback has some signature which can examine the stack, locals, and potentially resume?

<comment><USER7> By doing this you will get something highly similar to CL's conditions. In CL, there is mechanism similar to Java exceptions (throw/catch/unwind-protect) that is - among other things - used by condition system to actually unwind stack when it determines that is necessary. So you can probably abuse Java exceptions to implement condition system or - more generally - <USER2> continuations.

Problem is that such mechanism has to be used consistently everywhere to be useful. And when you find yourself rewriting standard library, you could well use CL instead of Java.

</comment></comment></comment></comment><comment><USER8> Kent Pitman, a member of the X3J13 Common Lisp standards committee, wrote a terrific paper ([http://www.nhplace.com/kent/Papers/Condition- Handling-2001.h...](http://www.nhplace.com/kent/Papers/Condition- Handling-2001.html)) on the subject of various condition handling systems, which includes examples of various error-handling systems.

<comment><USER9> Also interesting because it mentions PL/I as an antecedent to the Lisp condition handling. It says that PL/I had downward lexical scoping. I can't remember the details (I haven't looked at PL/I for over 20 years), but I believe that it means that the PL/I exception handler had access to the whole call stack, so you could make meaningful stack dumps from the handler, including variables. By today's standards the whole thing was quite clunky. A RETURN from the handler would resume execution. A GOTO to a label in the procedure enclosing the handler would unwind the call stack.

</comment></comment><comment><USER10> I don't know if the JVM does this right now, but you CAN detect useless stack building and simply not do it. In other words, the CPU cycle penalty of java's (and most other language's) exception mechanism can be virtually eliminated. The other benefits (resuming, for example) are a different issue.

The issue that I think the lisper of the OP is talking about is something like this:

try { something(); } catch ( SomeException e ) { //don't ever even look at e's stack, and do something else. }

Assuming the exception occurs, then to be safe the VM has to build the entire stack, which involves unwinding a lot of JIT work if you're unlucky, even though at the end it wasn't actually needed. However, assuming it matters that this is slow, which pretty much means that this is in a tight loop someplace, then a JIT compiler can detect that this situation always occurs, and simply avoid creating the stack.

There are still very interesting applications, such as logging and resuming, for not unwinding down the stack before giving the handlers in the chain an opportunity, but the CPU argument seems void to me.

</comment><comment><USER11> Like just about everything in programming it seem to be a tradeoff.

In Java the try/catches are (a) implicitly "registered" on the call stack, and when an exception is thrown (b) _then_ the runtime has to do a little analysis to determine what to do.

In Lisp, the handlers are (a) explicitly registered up front and when an "exception" is thrown (b) it just uses the most recently registered handler.

(a) is a much more common task than (b), so that's where you should optimize. But I don't know enough enough about Lisp (or Java) to know how these are implemented. If it's just pushing/popping on a stack then maybe it's just as fast.

</comment><comment><USER12> Sorry, I am not convinced.

Java's exception handling may be slower, but exceptions should be rare: In the few cases exceptions are not rare, return an object instead.

The issue of loosing some variables is misleading. First, the heap is not rolled back, so many of the side effects are still available for inspection. Second, how often do you want one method to handle another method's variables, and if you do, is either method maintainable? Finally, if frame variables are important, then you can put them in the exception.

If you want to complain about loosing context, try PL-SQL: "Raising" an exception rolls back all evidence of there being a problem.

</comment><comment><USER13> Talking about things being 'godawful slow' is lame without showing context and timings.

<comment><USER13> _Caught 1000000 exceptions in 859 millis_

See <http://kip.sateh.com/ExceptionsAreSlow.txt>

</comment></comment><comment><USER14> So why aren't Java exceptions resumable?

<comment><USER15> Because by the time a java exception is caught, the stack has already been unwound too far (because java must do so to find the nearest exception handler).

Lisp, basically, keeps track of exception handlers in a table seperate from the runtime stack. Hence, it doesn't need to unwind the stack to find an exception handler - it can just look it up without destroying the existing stack.

<comment><USER16> And I find this to be a complete pain in the ass. Seriously, you can't even print out variables to see what went wrong when you are building/debugging. They're no longer in scope.

<comment><USER17> What do you mean by "this" - Java's unwinding of the stack? Because in Lisp you just visit whatever stack frame you want and see everything that's in scope.

The real problem with Lisp environments (at least the open-source ones) is the lack of acceptable modern debuggers.

<comment><USER18> Try Smalltalk, it has both a modern IDE/Debugger with automatic refactoring support and resumable/restartable exceptions/notifications.

<comment><USER17> Smalltalk does have some advantages over Lisp, including the ones you mention. But lack of a good debugger isn't enough to make me switch. I like Lisp a lot. Besides, switching to Smalltalk would be more work than writing (modernizing, really) a Lisp debugger.

<comment><USER14> Just steal ideas from the Smalltalk debuggers. You can see their source. If you make a copy of the debugger, you can probably even debug and step through the copy debugger in the debugger.</comment></comment></comment></comment></comment></comment></comment>


Ask HN: How do I get people interested in programming? - <AUTHOR> Everyone at my institute is pursuing some or the other technical course but nobody programs. How do I get them interested? I showed them a few cool things, held a contest for a decent prize and yet nobody has interest in programming.<p>Since everyone is doing either IT/CS I feel they should be interested in programming slightly beyond the 'Hello world'. Is it wrong to feel this way? <comment><USER2> It's not uncommon to find students going through the motions in a university department. Particularly in technical fields where children are led to believe that they "should study X when they get to college." With CS and IT and the current economy that's even more the case, and so the people around you are probably doing the minimum to keep their parents off their back and to feel that they're doing what people say they should be doing.

Those other people have more influence in the "what you should be doing" than you do. So the best option is to find people who share your passions and surround yourself with them...find your tribe rather than trying to change one that's not right for you.

Good luck.

</comment><comment><USER3> You can't push someone to let them love what you love. It's like a hobby, some people care about it. And others just don't.

What's the advantage for them in a short term if they program?</comment>


Facebook moving away from React Native? - <AUTHOR> https://twitter.com/sandofsky/status/1002637340291018754 <comment><USER3> Sophie Alpert, engineering manager of React at Facebook, has publicly responded to the report to deny it:

[https://twitter.com/sophiebits/status/1003090742296735744](https://twitter.com/sophiebits/status/1003090742296735744)

"This is not true."

"Blood Donations, Crisis Response, Privacy Shortcuts, Access Your Information, Wellness Checks are recent projects in the main app mentioned in F8 keynote that use RN. (The whole Oculus Go mobile app as well.) More to come. RN hasn't been used yet in News Feed but that may change."

"I'm not remembering any [teams] that moved away (but there may be some; dozens of teams have used RN so it's hard to track them all). But you'll find diehard native devs who dislike RN at any medium or large co, including Facebook."

<comment><USER4> Some manager making that claim in order to protect trust in Facebook's bleeding edge tech now and in the future doesn't really mean anything. Remains to be seen.

<comment><USER5> Are you kidding me? Random dude on Twitter who's quoting some unknown friend of a friend who knows someone who heard something gets more credit than the engineering manager at Facebook? As she said, maybe one or two teams at Facebook moved away from using it but they're heavily invested in it and intend on expanding it's usage.

Honestly with all the work going into ReasonML (and Reason React) I wouldn't be surprised if they came up with a way to do Reason React Native, since Reason can be compiled to native. But seriously giving credit to this FUD / fake news on front page of HN is just awful.

</comment></comment></comment><comment><USER6> This is incorrect. Here is a response from Tim, who manages the React Native team - [https://twitter.com/yungsters/status/989361665752748033](https://twitter.com/yungsters/status/989361665752748033)

Also, here is a list of all the things that our team has been working on with React Native - [https://www.youtube.com/watch?v=1hvQ8p8q0a0](https://www.youtube.com/watch?v=1hvQ8p8q0a0)

<comment><USER7> That tweet was a month ago. This change could have been more recent than that.

<comment><USER8> Nothing has changed. Multiple people have directly rebutted him on the twitter thread. This was FUD plain and simple.

<comment><USER9> As someone who manages a team at a large corp that uses react native and ships a successful project things have _definitely_ changed. It feels like Facebook has lost interest.

\- the android debugger has been broken for months (it opens to the wrong url, delta patches also broke source maps). No one at Facebook cares. Do they not use the debugger?

\- pull requests have stopped being merged. We have FIVE outstanding pull requests fixing bugs as old as ones ignored by Facebook from 2016. No one will reply or merge them anymore. We've been told to just create a fork on GitHub for our project. Apparently that's what every serious RN user does because Facebook doesn't really care about it anymore.

\- they have a bot who auto closes bugs somewhat randomly. For example an old bug that Facebook ignored with hundreds of comments gets closed for "inactivity", but it's not active because folks all complained and now they're just waiting for someone to fix it.

So it all combines to a situation where the platform is buggy, but you can't get fixes merged, and filing bugs is largely a waste of time since all it gets is auto replies from the bot and "me too" responses from others.

We really like RN, it helped us ship fast at first, but Facebook absolutely seems to have lost interest in it and in having a community around it.

<comment><USER10> I work on React so I have some context on this.

I'm sorry it's frustrating but it's not at all because FB lost interest. In fact it's the opposite. We're making pretty big bets on complex core architectural improvements to RN, and the team is heads down busy with these core changes. Unfortunately it does mean that PRs and external contributions get less attention until those core improvements are done.

If there's a specific PR that's blocking you please ping me in DM on Twitter and I'll try to get somebody to review it.

Cheers.

<comment><USER11> I use RN, interested in these architectural improvements being done. Any link to an issue or description of these, or a short explanation?

<comment><USER10> We'll post more when it's closer to being production-ready. But TLDR is that we're making improvements to the threading model and interop with native code.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> I was a mobile developer and moved away from it towards web development because of how uncertain the future looks for the tooling.

Investing hundreds of hours into the web framework of the week at least informs me on javascript/html/css in general. However, with mobile, your experience with Swift and AutoLayout might be totally irrelevant in the job market if most businesses want a Cordova or React Native developer, and vice versa, or the mood of the industry shifts.

Further, from a business POV, what do you do? 3 separate codebases (iOS, Android, Web) for native, and deal with a nightmare of hiring, maintenance, and disparate features? 2 separate codebases via hybrid native, and pray the platform continues to be supported while dealing with shaky native features? One codebase + extra for a Cordova application, having suboptimal performance + UX alongside another hiring nightmare? Or pray Apple decides to be benevolent, and hitch your app to iOS picking up support for PWAs?

People who complain about churn in front end have never done mobile.

<comment><USER13> We recently began work on a mobile app version of our web-based kanban board application. We ended up spending a week on react native, then switching to Cordova, which I don't agree with 100% but you're dead on about the ups and downs. At the end of the day, a 2nd code base, even if its similar to our web react code base (and even if you can share all your state management code like we could), is still a 2nd code base.

<comment><USER14> React Native was never meant to be "write once, run anywhere", like Java. I've heard it described as "learn once, write anywhere".

</comment></comment></comment><comment><USER15> Hmm, what's the problem with this guy? After told on the face that his statement is unfounded from a much reliable source, he doesn't correct his statements nor apologize for spreading (seemingly?) false information (If you dissent, please elaborate with more strong evidences, not some holy "Sources"), instead, he continues with what appears to be insinuation that he is more authentic.

Totally NOT COOL.

<comment><USER16> He's also retweeting uncorroborated replies that agree with him, and ignoring replies from the team that work on the project telling him he is wrong.

</comment></comment><comment><USER8> Pretty scant on evidence. I'd like a little more than two tweets from a guy that seems to have an idealogical slant against non-native development.

</comment><comment><USER14> There's no question that Facebook only uses RN for part of the main Facebook app. They've been open about the fact that Newsfeed on Android uses Litho rather than React Native: [https://github.com/facebook/litho](https://github.com/facebook/litho)

Ironically, this is because they weren't happy with the performance of native Android components, and that's what React Native uses under the hood.

<comment><USER17> If you have any experience with Litho can you compare it to native Java Android UIs?

<comment><USER14> Afraid not

</comment></comment></comment><comment><USER18> (one of the twitter comments): > [...] there's no smoke without fire. Facebook has a history of just abandoning things.

When I was evaluating which web-technology to use I came to choose between angular and react. At that time angular2 just popped up and a lot of people where annoyed by that. One point why I decided for react was because google has a bad reputation when it comes to keeping things alive.

Is facebook just as bad?

<comment><USER19> I haven't heard of Facebook having a reputation for abruptly shutting platforms down. On the contrary, I believe its widely accepted that they handled the shutdown of Parse _very_ gracefully. Year+ notice, with significant open sourcing and community efforts to maintain continuity.

</comment></comment><comment><USER20> Other than an announcement from Facebook that this project is being moved away from I would rather consult the github page which has updates from the last two days ago.

If they are moving away it would make more sense that they changed the licence to BSD on these projects. On the other hand even if they are moving away from using react native wouldn't the community try to pick it up?

</comment><comment><USER21> Since this is obviously baseless speculation by a source with no credibility, and more authoritative sources have denied it, I recommend flagging this story so that it disappears from the front page as soon as possible.

It's hard to criticize fake news if we fall for it ourselves so easily.

<comment><USER5> It was flagged earlier I don't know how it got unflagged.

</comment></comment><comment><USER22> I have an ex-coworker who just got a job in Seattle at Facebook and he mentioned something similar. The reason it came up is because some executives were trying to push React Native as a solution for a project we're working on. No engineer thought it was a good idea and we get to build native. After talking to my buddy, he said that Facebook as moving to some new framework.

<comment> brown9-2 It sounds like the expectation that a Facebook mobile app is built in just one way or with just one framework is faulty.

</comment></comment><comment><USER23> I have few RN apps on ios/play store. Its very good for cases where you do not need to access much of device/os functionality. For video, audio other native functionality you need to hunt for well maintained libs.

Flutter is a very alternate for RN. But when it comes to device functionality i feel its the same case.

Ultimately i feel its better to write in native swift/kotlin/java.

<comment><USER24> I have exactly the same experience(two years of RN).

Be conservative when adding dependencies, rather try to solve it yourself unless it's very complex and the dependency is well maintained.

Often dependencies will cause you problems when upgrading and many maintainers don't respect semver(could be a JS-ecosystem issue).

</comment></comment><comment><USER25> @Vjeux has denied this....

Also Facebook Marketplace is built with RN

</comment><comment><USER26> React Native is the best thing to have happened for native mobile dev.

FB has LOTS of full-time devs working on it. If/when that changes, we can revisit this tweet. Until then, nothing more than FUD.

</comment><comment><USER27> And here I was thinking about what to use for native mobile apps. So what are the current alternatives to React Native?

<comment><USER28> I would seriously consider Xamarin. The tooling with ReSharper is great. LiveXAML gives you the same instant reload that React Native has.

Xamarin Forms gives you a cross platform UI, but you can use fully native Fragments/ViewControllers where needed.

<comment><USER29> Xamarin is awful. Incredibly slow tooling and useless UI libraries.

</comment></comment></comment><comment><USER30> This is good news for Flutter?

<comment><USER31> Yeah I'm sure Google won't abruptly dump an ecosystem, that's so unlike them.

</comment></comment><comment><USER32> Good. React Native does not work for even the simplest things.

<comment><USER33> Our company has been using RN with real users for just about a year now. And there really aren't any complaints other than we sometimes can't use some API's (but we still manage to figure out a solution at the end of the day - <USER2> the satisfaction of our iOS & Android users).

However, we do use Expo[0] to manage some of the rough edges of RN.

[0] - [https://expo.io](https://expo.io)

<comment><USER32> You must have had a better experience with it than I did. More power to you.

Seriously, I don't think I need a QR code to make a mobile device work.

<comment><USER34> I think you are talking about the dev experience using Expo.

<comment><USER32> Yup. Pretty terrible.

<comment><USER14> It's not really enough to judge the developer experience of React Native in general. The whole point of Expo is that is replaces the normal experience.

<comment><USER32> That's a fair point and I certainly don't mean to knock devs who enjoy RN. I found it quite frustrating compared to regular React, which is usually a very pleasant framework to work with.</comment></comment></comment></comment></comment></comment></comment>


Show HN: Scoop – automated carpooling - <AUTHOR> Our team (all ex-commuters ourselves) at Scoop is really excited to announce Scoop for commuters who head into San Francisco from across the Bay Area every day.
Scoop's mission is to end traffic congestion nationwide by turning single-occupant vehicles into efficient carpools. 80% of Americans drive alone to work everyday, which means 100M people are clogging up highways across long stretches of the country - and for most, public transportation or other alternatives aren't viable.
Our automated carpool solution enables commuters to schedule and share their commutes, saving time, money, and the environment. We specialize in longer distance (10+ miles) commutes, and we're finding a sweet spot with Bay Area employees (by partnering with their employers) who commute on some of the country's worst routes. <comment><AUTHOR> We'd love to get comments & feedback from HN! Check us out at:

Web: [http://www.takescoop.com](http://www.takescoop.com)

Ask us questions here or at [http://www.producthunt.com](http://www.producthunt.com)

Download and try us out at [https://itunes.apple.com/us/app/scoop-flexible- shared-commut...](https://itunes.apple.com/us/app/scoop-flexible-shared- commuting/id997978145?ls=1&mt=8) or [https://play.google.com/store/apps/details?id=com.takescoop....](https://play.google.com/store/apps/details?id=com.takescoop.android.scoopandroid)

PS: Use promo code "HN10" and get $10 extra in Scoop balance after you register

<comment><USER2> Are the coupons stackable?

On that page I see: Download & Enter Promo "ProductHunt20" For $20 in Scoop Balance

<comment><AUTHOR> You're free to try both ;)</comment></comment></comment>


8 Visionaries on How They Spot the Future - <AUTHOR> http://www.wired.com/epicenter/2012/04/ff_spotfuture_qas/all/1

<comment><USER2> Bonus: it is a list all on one page.</comment>


The Dropbox Valuation Is Irrational - <AUTHOR> https://www.cbinsights.com/blog/dropbox-valuation-bubble/

<comment><USER2> Is this where math meets emotion in the valuations?

I like the comparison of Box to DropBox because, though the companies are incredibly similar, I think they actually occupy very different space in the public mind. Their revenues seem to be close, but the DropBox brand seems much stronger. Maybe that warrants the higher multiples?

<comment><USER3> It's an interesting question Pete. Not sure a brand premium makes the valuation multiples 25x vs 10x, but it might result in some of the divergence between the two.

Will be interesting to see how this plays out.

Note: CEO of CB Insights who did this analysis. Thanks for reading.</comment></comment>


CSS only Lightbox - <AUTHOR> http://www.w3css.co.uk/

<comment><USER2> Lot of lighboxes. CSS only, CSS + JavaScript, with Ajax, etc... <http://www.xul.fr/javascript/lightbox.html>

</comment><comment><USER3> Nice. But why so slow? I'm talking about the animation and the delay for the description, close button etc. to appear (and when they do they move the image so it's kind of annoying (not mentioning that you have to wait to see if there's a next-button or something)). It took about 3 seconds from click to being completely done (for a cached image).

Anything but at fraction of a second for a animation can destroy an entire site, in my opinion.

Also, when the browser loses focus the image disappear (chrome 12) :( Just to reanimate when focus returns.

/rant

Sorry, a demo doesn't deserve the rant above, but it really bugs me that this is so popular and I guess the only reason for why it's popular is because the default values for lightboxes are slow just to show the effect.

</comment><comment><USER4> Makes the whole window flicker in Chrome. Also I don't like the stretch-out effect.

<comment><AUTHOR> Beta/Dev channel? I had to switch it off, it's a pain

<comment><USER4> Dev channel, should have included that, sorry.

</comment></comment></comment><comment><USER5> Looks very pretty, I can't see any reference to a licence on the page or in the CSS file though, so I've no idea if I can use it on my site.

</comment><comment><USER6> It's still a bunch of HTML the CSS is toggling though, right? I think in this case, adding Javascript to the mix is an advantage.

And why does everyone animate each part of the lightbox separately? It makes it so unbearably slow.

</comment><comment><USER7> How does it record clicks? My CSS knowledge is not good enough... I know there is a property for clicked, but how do you unclick?

<comment><USER8> it uses the :focus pseudo element,

interesting, but with css like that, i'd rather use javascript!

<comment><USER9> Unless of course, you do use something like sass for managing all those little browser specific bits. ;)</comment></comment></comment>


Loveland Report on Fire in Detroit - <AUTHOR> http://www.detroitfirereport.com/ <comment><USER2> Always exciting to see what the Loveland squad is up too.</comment>


Ask HN: What's the future of IRC? and how can we make IRC better? - <AUTHOR> IRC has its days counted? or it will never die? <comment><USER2> The biggest missing feature, the feature that has allowed Slack to supplant IRC to some extent, is offline support.

Every time I close my laptop, I lose all messages sent to the channels I care about until I pop the lid back open.

I know I can set up an IRC bouncer on a hosted server which can potentially log messages while my devices are offline, but this requires more time and effort than most people care for.

<comment><USER3> If you want persistence across devices then you need the cloud. If you don't want to run a bouncer yourself use irccloud or similar services

</comment></comment><comment><USER4> IRC is doing just fine. It will probably outlast HTTP.

</comment><comment><USER5> I have used IRC in some open source projects for a good number of years. Before that I hadn't heard anyone (within the set of developers I worked with) even talk about it. To me, it seems like it's one of those things which is too nerdy that most developers haven't even tried it in their day to day communication. Till date, I haven't seen any of the companies I have worked or known about, use IRC as their internal or support communication tool.

Just to be clear, I don't hate IRC - to me it's just another "chat" tool and it serves its purpose most of the times. One of the things that I would have liked in it, is in-built support for some kind of formatting for lengthy texts like logs etc... We used to use (and still do), external text hosting sites like pastebin, gist etc to share such logs/code snippets, which I never liked.

</comment><comment><USER6> message ids, so that your irc bouncer can replay missing messages (after a reconnect) when the client requests them.

afaik there's already a proposal to add those [http://ircv3.net/irc/3.2.html](http://ircv3.net/irc/3.2.html)

</comment><comment><USER7> Imho we should all agree on what services (NickServ, ChanServ, MemoServ, etc) a next generation IRC server should offer, and what their syntaxes should be.

All the other stuff is pretty much fine.

Maybe we could try and define some networking trick in order to have mobile clients work better?

</comment><comment><USER8> The two things that I can think of is p2p encryption, but such things could be hard to include in such an old protocol and it could raise some compability issues with old clients and libraries.

<comment><USER7> P2P encryption is already available using OTR. Check out the OTR plugin for xchat/hexchat (or was it pidgin?)

<comment><USER9> The problem with OTR is the lack of support for group chats. There have been multiple proposals (mpOTR, SCIMP, OMEMO, etc.) but nothing's caught on yet.

</comment></comment></comment><comment><USER10> It's just fine like it is.</comment>


Google Bans all associated accounts - <AUTHOR> https://play.google.com/about/ip-impersonation/impersonation
If Google perceives something about your app is misleading to users, it will ban your company developer account, and all associated personal developer accounts. Presumably, all accounts associated to them too.
It will ban your accounts based on their perception of an infraction, and it will do so without any consultation or explanation beyond pointing at their Developer Policy and 404ing "terms" - https://www.android.com/market/terms.html
There appears to be zero recourse from this, as at this point the developer is unable to make amends to the app listing.
Has anyone ever come back from this? Why is this policy so heavy-handed? What if Google/a-claimant was wrong in their initial objection to the perceived "impersonation"? <comment><USER2> The section titled "Enforcement Process" is more specific about the consequences being proportional to the developer's misdeeds:

> _Repeated or serious violations (such as malware, fraud, and apps that may > cause user or device harm)[...]_

[https://play.google.com/about/enforcement/enforcement- proces...](https://play.google.com/about/enforcement/enforcement-process/)

I don't know what else one would expect? I also reserve the right to stop doing business with any business that tries to defraud or harm me (or anyone else).

These are standard terms for any low-barrier-of-entry partnership arrangement. And the only people that really care are the scammers that just got found out. (c. f. the Dash.app saga)

<comment><USER3> In my case there were 0 warnings, trading successfully then woke up the next morning to a completely terminated account with no response from the dispute process despite the initial party reporting the claim realising they were wrong and providing written evidence to Google that the ban should be recended

</comment></comment><comment><USER4> [https://www.android.com/market/terms.html](https://www.android.com/market/terms.html) is just a 404.

<comment><USER5> That is what the OP said too</comment></comment>


Ask YC: Feedback on early version of my startup, a digital whiteboard that doesn't suck - <AUTHOR> http://www.dabbleboard.com

<comment><AUTHOR> I was frustrated by how annoying other options for digital whiteboarding were. Most cases I (and others I know) just fell back to using a physical whiteboard, or overusing words when a quick picture would do the job much better. In brief, I felt the existing apps out there didn't do enough to enhance our ability to communicate visually.

So I rethought what the UI should be to make it easier, faster and more natural to use. And here's the result. It's in Flash but is still relatively lightweight. I feel tempted to list out all the unique features, but I'd rather you give it a spin and let me know what you think.

You can see the video at: <http://www.dabbleboard.com/main/video>

<comment><USER3> Absolutely fantastic so far (all things considered)... can't wait for a permission structure so we can actually use this thing behind closed doors (virtually of course)!!

We have fought night and day with different products and solutions that just aren't flexible, require crappy proprietary software (eBeam), or too problematic and don't function as intended. And they all share a common trait as you've already called out: "just not natural enough".

Pay attention to your competitor's mistakes, just don't get too wrapped up chasing their tail. So many bad solutions right now. While you missed first to market, it doesn't matter -- just make it the best. Good luck! You certainly have my support and vote of confidence... I would be very interested in private beta.

ps. I could see this being a prime candidate for acquisition by Adobe for integration into Adobe Acrobat Connect, that is... if that don't rob you. :)

<comment><AUTHOR> Thanks! By permission structure do you mean just being able to specify "can edit" versus "can view", or do you have something different in mind?

<comment><USER4> It'd be cool to have a secure group that can edit/see the whiteboard, for internal company meetings, etc..

</comment></comment></comment></comment><comment><USER5> Ok, that's an awesome collaborative whiteboard. Nice to propose a simple UI for it. Suggestions:

1\. Manual save, on the toolbar. For the savaholics!

2\. It's somewhat fast at refreshing, but have a dedicated Refresh button on the toolbar, not under the Share panel. If I'm working with some friends and they're all editing, I want to refresh it. Kind of like when you know Twhirl/any other desktop Twitter client is going to fetch new tweets automatically, but you still feel like refreshing.

2.1. Alternatively, let me move the Share Panel around. This could be an option you implement in conjunction with the above.

2.2. Alternatively, have a refresh button only when the document is shared.

3\. When you save current document automatically, show it in the documents dock, just to give people reassurance, and to familiarize them with the UI.

4\. Anglular (Z, etc) vectors turn into angles, not rectangles.

4.1. Freehand mode by default.

 _\--EDIT--_

5\. I realize it's hard (with regard to the sharing and synchronization of the whiteboard shared users), and probably something to think about for the future, but uploading of images to use as objects would be _extremely_ useful in, say, mocking up UIs collaboratively, or diagramming.

6\. _Maybe_ make the text feature more noticeable by making a text tool button on the toolbar. Most people will learn using the app by trying it, not by watching the video. (I didn't, at least.)

This is impressive. Great work with it, I will be definitely using it!

<comment><AUTHOR> Wow that was amazingly fast feedback! Thanks!

1\. Good idea, was considering that anyway as a way to reduce my database load, as opposed to saving every 4 seconds (if you change the drawing) which is what I'm currently doing. (I'm a hardware engineer and this is my first webapp: I just found out writes to the database are really really slow. Will explore memcached optimizations too.)

2\. The intent of the refresh button is for when you're sharing the drawing with others (I initially wanted realtime refresh, but got worried about performance). Hence I put the button under the share panel. But I guess you're right, you would need to refresh more often than you'd need to see who else you're sharing with or to add people for sharing...

2.1 This should be trivial. Will do :).

3\. (Not sure if you saw the video or already know this.) The pane on the left is the library pane (or "documents dock") that shows all your saved drawings. The idea is the current drawing is just like any other drawing in the library, just that it's got the focus for now. Or is this idea non-intuitive?

4\. The issue is how often would you want to draw angular vectors, compared to rectangles. As an "optimization" for the UI, I allow users to draw a rectangle with just 2 sides rather than all 4 sides (which also works), because I expect them to be very common.

Thanks so much for the feedback! And I'm elated that you'd actually use it!

 _EDIT_

5\. You're the third person that asked for this feature, so now it's on my near-term to-do list. I don't think it's hard; just to eat the cost of the bandwidth and storage (which currently is very low).

6\. Hmmm... I personally hate revisiting the toolbar each time I have to enter text, so I don't (yet) agree. This is on my "wait for more users to ask for this feature" list :).

<comment><USER6> 6\. I jumped right in without watching the video, and I got pretty frustrated when I wanted to type text and didn't see a toolbar option. I didn't even think about just typing. I do think you should add it, then "power users" will figure out that you can just start typing.

<comment><USER7> It might be funny and intuitive to put a text button on the toolbar and when it's clicked display a large hint on-screen saying something like:

"You can add text anywhere just by clicking and start to type. So no need for this pesky button!"

And then fade the text button away or even better destroy it with an explosion animation and then keep track of it in the session/user login.

</comment></comment></comment></comment><comment><USER8> Startup? 15 years ago apps like this would be a nice weekend projects we'd do for fun or (mostly) to impress each other in high school: doing it under DOS using x86 assembly mixed up with some Pascal was comparable to JavaScript's capabilities of modern day.

In 2008 it's a "startup". Nicely done.

<comment><USER9> Why would this be any less viable than Zenter or Writely?

<comment><USER8> I didn't said it was. I just find it funny how history repeats itself: when I was a kid, doing something like this was a fun challenge, since most computers worked in text mode 80x25 characters, and after a while an application like that became trivial and boring to write (since about Windows 3.0 on PC).

But fast-forward 10 years and thanks to advances in technology - bam! It's hard again :)

<comment><AUTHOR> Sure it's no more than a weekend project (though it took me a LOTT longer than that). If a weekend project has the potential to add value to the lives of many users -which I'm hoping for-, I'd call it a startup.

</comment></comment></comment></comment><comment><USER10> 1\. I was surprised when all my drawings turned into squares. Freehand mode should probably be the default since that's what most people will expect from a whiteboard.

2\. You don't recognize triangles.

3\. Instead of having two modes, could you just have freehand mode with shape buttons in the toolbar? I say this because the shape recognition didn't work that well and I ended up needing to customize the shapes anyway.

4\. You should mark where the last click was. I moved my mouse after clicking and had no idea where the text would show up.

<comment><AUTHOR> Thanks for the feedback!

1\. Hmm... I'm not sure of that. That's definitely what users expect of _bad_ whiteboards like MS Paint, the one in Netmeeting, etc. I think most whiteboarding involves drawing block diagrams and such (or maybe that's just the engineer in me talking). Could you share what types of drawings you typically do?

2\. This is planned.

3\. Well I need to improve my shape recognition algorithm then. One of the key features IMO that makes this more natural to use is that you don't have to keep revisiting the toolbar (you can do a lot by _never_ visiting it). Could you elaborate a bit on what shapes you were trying to draw, and what they ended up into, so I know what to fix in my shape recognition algo?

4\. Good idea. I should do that.

<comment><USER11> I liked it:

3\. I hope that when you update the algorithm you will include ovals/others shapes that can be drawn at a tilt. (or maybe tilted later on demand?)

Whenever I tried to draw tilted ovals they un-tilted and became really big.

PS This is one of the best Ask YC posts I've seen so far. Everybody likes helping in this kind of discussion--its also obvious that you value every bit of feedback.

<comment><AUTHOR> Thanks! I'm not sure I'd be able to update the algorithm to automatically detect tilt. That would probably have to be a tool you use after drawing (like the "group" button).

I'm curious, what types of drawing would you need tilt/skew in?

<comment><USER11> I am not sure, I was simply fooling around with it and noticed that the tilt/skew for ellipses had not been added.

</comment></comment></comment></comment></comment><comment><AUTHOR> So much great feedback here. Thanks all! These Qs may get drowned in the comments, but I'll try anyway:

\- Do you think anything here is patentable? I hate patent trolls as much as anyone else, and I do wish legislation eventually disallows (most or all) software and UI patents. And I know patents don't make consumer websites, happy users do. And I know it's a distraction to file the paperwork. But just curious...

\- For the free version (what you currently see), should the "Make Public" be default, with opt-out? Pros: users will have a great pool of drawings to copy from; could also evolve into a great community. Cons: users' privacy compromised, especially if they don't realize it's being made public. (To try to avoid the latter, I'd mention it during sign up, but that may not be enough.)

<comment><USER12> \- My previous startup's experience with patents was: if you want to, you can write a patent that weaves around areas covered by other patents. So, with enough effort, the answer is yes.

\- Please don't do this: gliffy does does for the free version, and it's really annoying. If you want, make it so that a popup comes up and makes you choose whether it should be public or not, or just leave it opt-in.

</comment></comment><comment><USER13> Nice job! I made a related project when I first began web programming and javascript about 2 years ago, though I've since mostly abandoned it (<http://boxily.com>) -- it's only javascript so I couldn't do all the neat flash things you do here.

I'm with you though, most digital whiteboards do suck, and everyone seems to try to do one :)

A couple features that would be cool:

1\. SVG export? Maybe not in high demand, but the engineer in me loves vector graphics. 2\. Line thickness? Something to think about. 3\. I like what crescendo mentioned as well.

Good luck! -Justin

<comment><AUTHOR> 1\. svg export would be easier than visio export, but has less market value. So overall I don't know which to do first :).

2\. There's just 2 thicknesses supported so far. How much more control do you think you'd need (3 levels?, 4 levels?)? I'm intentionally limiting your options so you don't have to waste time trying to decide what thickness line to choose. We don't have this problem with a real whiteboard :). (Plus it keeps the toolbar simple and uncluttered.)

</comment></comment><comment><USER14> This is pretty neat. A few feature suggestions:

1) Constrain aspect ratio on resize when holding down a control key.

2) I really like the way it guesses that you're trying to draw a circle when your freehand is sufficiently curved. A neat addition to this would be bezier spline interpolation for smooth curves if it's clear that the user isn't drawing a closed loop.

3) Import existing image as shape.

4) Shapes library (for things like ER diagrams, UML, etc...)

<comment><AUTHOR> Thanks for the feedback!

1) This is planned. Will also snap to grid when moving objects.

2) I want to do this. But as I said in another comment, I just need to figure out the UI for enabling the user to change the curvature of the line.

3) You're now the fourth person that asked for this :). It's definitely on my to-do list now.

4) I'm hoping the community will produce this. Anyone can do "Share -> Make Public" and then the drawings will show up in the Public Library. You can then copy anyone else's drawing into your own personal library. (I do plan to add better functionality for searching/tagging items in the public library eventually. It just didn't matter yet coz no one has anything there so far.)

<comment><USER15> it would be very cool to have real time sharing -- or a few seconds behind -- so that it could be used during a phone call for collaborative brainstorming...

<comment><AUTHOR> Thanks. It does have this, the "few seconds behind" version :), though you have to click a button (Share -> Refresh) to refresh the drawing. Try using the "Share" functionality with a friend after signing up.

<comment><USER16> I really really want to be able to use this without signing up. I just need a link to give a friend so they can spontaneously collaborate with me. The diagram doesn't need to persist past that session, so long as we can both save a png. The spontaneity and ease of use is a killer feature for me.

</comment></comment></comment></comment></comment><comment><USER17> Excellent! I've been looking for one of those for ages.

Only problem I found so far:

I started a drawing, clicked sign up to share it and it was gone.

<comment><AUTHOR> Good point. I should fix that. Thanks!

</comment></comment><comment><USER18> I like it. If I were you, I'd give it Visio features and sell it for $10/50 diagrams/month to small/medium companies.

<comment><AUTHOR> Thanks! I was thinking of a similar pricing plan. I worried that companies wouldn't be comfortable with the security issues of having their drawings on my servers though. Any tips on what I could do to make the service secure, and to make them trust me?

Btw, just like Basecamp is the anti-Project, I'd like to think of Dabbleboard as the anti-Visio (or anti-Netmeeting-whiteboard) :).

<comment><USER18> I could give you a million things you could do to really improve the security of your service, but the reality is there are a couple of superficial things you can do right now that will get you over the marketing hump on security:

* Deliver all content over HTTPS.

* Have big long random strings of hex characters in the URLs.

<comment><AUTHOR> Yeah I should do the https thing. At least makes the transfer secure.

I already do a bit of random strings. Try sharing a drawing, the link it produces includes a 16character code that must match for the sharee to be able to access the drawing.

<comment><USER18> It doesn't really add any meaningful security. The real security issues with your app are going to be in your code, not on the wire. But it's a strong psychological signal.

It's the same with the random IDs. Generate UUIDs with SHA1 or something, and make them show up in the URL bar. The signal is, "there's no simple integer counter here where if I incr it, I get some other customer's data".

</comment></comment></comment></comment></comment><comment><USER19> Awesome. My suggestions:

1) You need a "snap to platonic" type option. I have too many ovals that I wanted to be circles, and too many rectangles I wanted to be squares.

2) Need a "shift" resize functionality, so that it changes scale but not the 'aspect ratio'.

3) Need the ability to resize text by click+dragging.

4) The border of an 'object' is useful for knowing what's going to be affected by my action, but it really should 'do' something, too. Based on my UI experience, I've been trained to think I can click on the border and move whatever I just clicked on. Instead, I kept drawing lines.

5) Could use a "select all" function.

6) If I select an object then click a new color box, it should change the color of the selected object. Or I should be able to "drag" a color onto an object (or both!) to change it.

A few "brilliant" points:

1) I love that you 'save' the pages I've made, and I -absolutely love- that they function as objects that can be used on a new page.

2) Thank you for letting me get "back inside" a text box I've already created.

3) It's -fast-.

<comment><AUTHOR> Thanks!

1) Coming soon.

2) Could be done, but I'm not sure how useful it is for whiteboarding. (It is with photos though.)

3) Not sure about this either: you'd inadvertently end up with an ugly drawing with too many font sizes... and you'd have to spend time to make them the same size.

4) Right now the only thing the border tells you is what you'll end up selecting if you click. The issue is selection vs drawing disambiguation (described in some other commments).

5) How about a hotkey "CTRL-A" instead?

6) Coming soon.

</comment></comment><comment><USER9> This is good, you should submit to Techcrunch after iterating based on feedback.

</comment><comment><USER20> I haven't used the other ones much but they always seemed a lot slower then drawing on paper. This does seem super easy. I like it. congrats.

</comment><comment><USER21> I have two suggestions for text labels:

1\. Make the click location the center of the label, both horizontally and vertically. If I want to place a label in the middle of an object it's more convenient if I don't have to estimate in my head the length of what I'll type and thus where to click. I know I could reposition the label manually as a second step but why not making it easy to get it right in the first place?

Maybe have a toggle button so you can switch to left-justified but make centered the default.

2\. If I reposition a shape with a label in it the system should heuristically guess that I mean to move the label with it. Right now if I make a shape with a label in it and move the shape moves but the text doesn't, that's silly. I realize it could be nontrivial to guess what shape a label is "on" if it's at the intersection of multiple shapes but at least do it in the simpler cases.

</comment><comment><USER15> Great idea and great implementation.

A few suggestions:

\- fast (or almost) autosaving/updating so that it can be easily used on a phone call for collaborative brainstorming w/o having to click save all the time.

\- add meta keywords or other text on the page so that google indexes the text content (added via the text tool)

\- Add bottom tabs like excel does for sheets to make a sequence of whiteboards possible -- of related stuff.

\- full screen mode

\- let users create libraries of shapes that do cool/useful things

\- integration with that guy's technology that uses wiimote IR receiver to let the user draw with an infrared LED as a light pen. Projector projects the dabbleboard onto the wall, I draw with light pen.

\- the ability to zoom way in/out and scroll (maybe i want my dabble board to be 30 feet wide..

<comment><AUTHOR> Thanks!

1\. I'm worried about database load. I'll have to do some intelligent memcaching etc. (haven't thought this thru yet) to make that a possibility.

2\. Yep I've thought of that, tho I'm a little worried it might creep people out. (It's not as awesome as Gmail to get away with it.) That's one possible way of monetization, the other being the freemium model. But right now I just want to get some users, get the features right.

3\. Hmmm... the library pane on the left kinda does that. Would you want it to work in a different way?

4\. Sure. But I don't want to resize the canvas for UI reasons (see another of my comments on window resizing).

5\. You can already create a library of shapes (the left pane). Did you mean something different?

6\. I absolutely want to do something like that. But I've dreamed up a very different -and I think better- implementation. To build and sell a real physical product like that I'll need quite a bit of funding. PG, you there? :)

7\. Yeah I was hoping to avoid that (see 4. above). Coz I hate having to constantly zoom in/out and pan around just to draw. But it may be needed if the current canvas just isn't big enough :(.

<comment><USER15> Excellent. My apologies for not knowing about some existing features...

</comment></comment></comment><comment><USER22> Very nice. Some small comments (my apologies if some of these are there already and I just didn't notice):

1\. Tooltips or a statusbar at the bottom which tell you what a button does when you mouse-over it.

2\. Some visual differentiation between normal buttons (new, download, etc.) and toggle buttons (freehand, arrow mode, etc.)

3\. Proportional resizing with shift or control (as others have mentioned)

4\. Easier way to multiple-select objects rather than shift-clicking each one

5\. Snapping between different objects (perhaps toggleable) and/or a grid

6\. What software did you use for creating the demo screencast? It looks good (and I might need to record a screencast for my startup soon...)

<comment><AUTHOR> Thanks!

1\. You're referring to the move/replicate/scale/delete handles, right? I could probably add that.

2\. The visual differentiation so far is that the toggle buttons are clumped together. There's one "bug" though: the top and bottom edges of a group should be straight lines. (I actually have a good reason for this bug :).)

3\. You mean resizing in quantized amounts (e.g. 10pixels) rather than continuously right? If yes, this is planned.

4\. Yeah this can be annoying, and I don't have a good solution for this yet (I'm reluctant to add a "select" button in the toolbar like all other drawing apps). But I'm hoping you don't have to do this often since you can use "Group" functionality.

5\. Snap to grid is planned.

6\. I used iShowU on the Mac and uploaded to Viddler (thank God they eat the BW cost for nothing in return). When you embed your Viddler video, make sure to select the same resolution as your original capture; scaling it will ruin it. I used the built-in mic on my MBP, so the audio sucks; will invest in a better mic soon.

</comment></comment><comment><USER23> Fantastic - I have been looking for something like that for ages that just works.

I even posted in a thread on there that a 'usable whiteboard' was one of those problems that still needed solving - I reckon you are a long way there - <USER2> done.

</comment><comment><USER24> 1) Said before...Image upload into drawings would be nice 2) Adding clickable URLs in the text would also be nice 3) Different download option types, especially SVG, would be helpful so that it can be sent to people with Visio 4) Did not recognize a diamond shape, I use that all the time for flowcharts 5) Easier way to create lines that connect shapes. Again, i do this all the time when creating flow charts and it is sort of a pain to have to click the arrow icon. Maybe if I was using the right mouse button???

Overall very nice, I will probably use again.

</comment><comment><USER25> This is pretty awesome! Very usable, not too many features but the ones you really need and they work really well. I can totally see this maximized on a virtual whiteboard too.

It would be pretty cool to have access to apps like this for integration with 3rd party sites. Even if they left the original site and went to yours but saved back to where they came from, that would be very useful. I know www.snipshot.com does exactly that for image editing and it works well. Perhaps that could be a paid service idea... :)

<comment><AUTHOR> Thanks! That's an interesting feature, hadn't thought of that. At first thought, I actually don't think it'd be technically too difficult either, just need to make a clean API.

</comment></comment><comment><USER26> Very cool, seriously impressive. I love the simplicity of the resize, copy, delete, and move handles.

My only quibble- something has to be done about the logo.

I get what you're trying to do... make the logo look like it was designed with the whiteboard itself. Not a bad idea, but I think you should use it more abstractly, like the logo is inspired by the idea of a handwritten writeboard (not quite so literal).

The thin black lines with fat blue outlines is a little funky.

All around though, great work.

<comment><AUTHOR> "look like".

It was actually made with Dabbleboard itself (except for the word "BETA"). I had the general idea for the logo, and I thought to myself "which is the easiest app for me to make the logo in... oh wait".

It's just a placeholder for now, and will get replaced eventually.

</comment></comment><comment><USER27> Not bad. Why everything I draw must be a circle, square or line. Sometimes i need a curvy line, or a angled one. Don't force everything. Need shapes. More of them. Visio is a pretty decent tool, (Omnigraffe for macs is good too), try to copy some features they have, but make them a simpler as possible.

Then allow me to export it in different formats, Visio being one of them, as it seems it is the tool used the most.

<comment><AUTHOR> Thanks! Other shapes are planned: diamonds and triangles for sure. I want curved lines but haven't figured out the UI for them yet (I'd need an additional handle compared to straight lines, to allow the user to change the control point and hence the curvature.)

Yep Visio and Omnigraffle are definitely the heavyweights of drawing. They have lots more features; which in particular do you think are most important? (I think even stuff like solid/gradient shapes & shadows are superfluous, but I'm just one user :)).

<comment><USER28> shadows are useful. just make your block-shapes have a shadow by default (like omnigraffle) and it completely changes how smooth and professional even the simplest of diagrams look.

<comment><AUTHOR> Sure, I could consider a default shadow. But I'm reluctant to clutter the UI by giving the user a gazillion options for shadows, none of which help you communicate your ideas any better.

</comment></comment></comment></comment><comment><USER29> I like it (though I can't say I have much use for a digital whiteboard). It would be nice if it would automatically resize to your window size, though; the bottom is just under the bottom of my window and scrolling just for that little bit that isn't really necessary is annoying. Perhaps this could include a button to extend the space if necessary (perhaps only inside the box, too, rather than extending the whole page).

<comment><AUTHOR> Thanks! I have a UI problem with resizing. If you have to see a drawing made by a friend who used a bigger window, you'd see a truncated drawing. The obvious solution here is to have canvas you can zoom-in/zoom-out of, AND allow horizontal/vertical panning (like Google Maps). I think that would clutter the UI and make using it annoying.

So I decided to support only the size that I felt would fit in 95% of browser windows. The Dabbleboard drawing+drawing_toolbar+drawing_title fit exactly in a 1024x768 window with the browser's address bar, bookmarks bar, and tab bar all enabled.

</comment></comment><comment><USER30> I would dearly like to be able to create links between objects, which follow when I move the objects around. I've tried about a jillion whiteboard/flowchart type apps and none of them do this, but yours could!

This is because I often find myself trying to mock up a graph of some sort and not know where the objects are supposed to go when I'm drawing them, and then it's impossible to later move them around.

<comment><AUTHOR> That could be useful I guess. Any other users here want/need this?

<comment><USER16> I could absolutely use such a feature.

</comment></comment></comment><comment><USER31> Hey zhyder, this is great! And if you want to make money, here is the perfect thing to add for paying users: dimensions! Artists could easily use this to layout art on a wall! Let them set the width of the wall, and the size of paintings, etc., and then let they lay them out on the wall, and give them the dimensions! My girlfriend could start using this today if it had that, and we'd gladly pay for it!

</comment><comment><USER32> Very nice.

Couple of ideas: * It would be nice if freehand mode used some criteria to separate "changing direction" from "wobbling a bit" in order to straighten out edges, so I could use it to draw a perfect triangle.

* It would be nice if entering text used some sort of edge detection to automatically fit text into a box/circle/etc.

</comment><comment><USER33> Your circle-detection code is a bit overzealous. I put it in arrow mode and tried to draw a bunch of arrows from one side of the canvas to the other, and if my lines were even a little bit curved, it turned them into ovals. It should really only turn it into an oval if the user has changed direction substantially during the drawing.

<comment><AUTHOR> Yes, the problem is that I don't support curved lines yet. (Do let me know if you intended it to be a _straight_ line and the algo still messed up.) Sounds like everyone wants curved lines, so back to the drawing board -ahem dabbleboard-. Will definitely find a way to add it.

</comment></comment><comment><USER34> You know it's probably just me but I couldn't draw a thing. It loads and I can play with the start whiteboard, but I can't add anything new or draw anything. I'm running Max OS X 10.5.3 and using Firefox 3 RC1.

I blame Adobe though, not your program.

</comment><comment><USER35> Just thought you should know... your app caused a crowd in my cubicle when someone walked by and saw me playing with it. They asked what I was doing and I told them what it was and everyone had a "damn, thats cool!" feeling about it.

nice job!

<comment><AUTHOR> Awesome, thanks for spreading the word!

</comment></comment><comment><USER36> Agree with most of the other comments, especially around uploading images / objects as a base.

I've used www.vyew.com a few times as a guest - the other super feature they have which you might consider is inbuilt VoIP.

Great effort!

<comment><USER37> I would let skype do the VoIP, or hidefconferencing, or freeconference: it will be enough work to continue to evolve the whiteboard features.

</comment></comment><comment><USER38> The problem is that no one is going to remember your site when they actually need a whiteboard or share it with their friends. To fix that, give it a purpose instead of leaving it as a blank canvas for people to use. For example, you could use the whiteboard as the basis for a iSketch (<http://isketch.net>) ripoff, while making it clear that people can use the whiteboard on its own. People will use it and share it with their friends and you'll end up with more users for your core product. There are plenty of other ways to achieve the same goal.

The downside is that whatever you come up with to get users may suck away too much time and effort from improving the product itself. You can always outsource the building of such add-ons by providing an API and directing users to your site that way.

</comment><comment><USER39> Ability to change zoom level would be a plus, and then making the size of the whiteboard conform to the size of the window (the whiteboard doesn't fit in a browser window at 1024*768; not essential but annoying).

<comment><AUTHOR> I was hoping it would fit in 1024x768. How many toolbars does your browser have enabled (in addition to the address+tab bars)?

<comment><USER39> OS X menu bar, Safari with address+tab & bookmarks bar, OS X dock.

</comment></comment></comment><comment><USER40> I have flashblock installed (Firefox 2), and when the site first loads up the flash box is offscreen on the right. I had to scroll to the right, press "play", and then the box went to the right location.

</comment><comment><USER12> Wow, looks like you hit a nerve here (in a good way)! I hope you have a clear vision of where you want to take this, because the users will pull you every which way, as far as user requests :~).

</comment><comment><USER41> This is cool. I was able to figure it out in about 30 seconds. The text is a bit off... I assumed that there should be a toolbar button. Maybe it would just give you instructions...

<comment><AUTHOR> "The text is a bit off... I assumed that there should be a toolbar button. Maybe it would just give you instructions..."

Sorry for being dumb, but I didn't follow. Could you clarify? Thanks a lot!

<comment><USER41> I didn't realize I should click and type. Instead I looked for a toolbar button. But once a figured out how to do it (by reading another comment, actually), I really liked it.

To accommodate that style of learning, you could have a 'text' button in the toolbar whose only purpose is to give the user a message stating that they need to simply click and type.

<comment><AUTHOR> I'm trying to solve this problem by loading my default drawing (which loads when you aren't signed in), the one with all the instructions. I should make the instruction for how to enter text ("Click anywhere and start typing to enter text") more visible I guess.

<comment><USER41> Had I read it I would have seen this, I suppose. But frequently users just don't read the text.

</comment></comment></comment></comment></comment><comment><USER11> You could put a picture of yourself in the about section to build a personal connection with the first users.

Edit: There's also a typo (harware)

<comment><AUTHOR> Oops, thanks for pointing that out.

</comment></comment><comment><USER42> This is really cool. If you incorporate collaboration functionality it could also be very useful for presentations or online meetings.

<comment><AUTHOR> There is collaboration functionality already. Click the "Share" button on the top-right. It's not truly real-time yet though. (You either share offline, or if working online together, you have to hit the annoying refresh button).

I need to figure out long-polling/Comet and see if I can make true real-time work.

</comment></comment><comment><USER12> Here's a feature request: allow users to embed a given drawing into blogs, etc. That would be a _killer_ feature, imo.

<comment><AUTHOR> Request granted :).

You can already do that, altho I need to make it more obvious. Click Share -> Make Public. Now you have a public webpage you can link to, and you can directly embed the image in blogs too. (The latter part is non-obvious but you'll discover if you check source :)... tonite I'll fix this so that the public link reflects this option explicitly).

<comment><USER12> Awesome! One more request: let the power users get a little button they can put on their sites (say, right above a rich text area) that, when clicked, brings up an empty border in a javascript pseudo-popup. After creating the drawing, it would automatically be included in the text field (or something to that effect). Sorry if I'm not clear on what I mean...

EDIT: I think Lux explained it a bit better in this post: <http://news.ycombinator.com/item?id=202849>

</comment></comment></comment><comment><USER43> Very nice! Can collaberation happen in real time? So you just see what's happening without having to click refresh?

</comment><comment><USER44> Might be cool, but as it is Flash, I won't be using it.

Could this be done reasonably with Javascript et al?

<comment><AUTHOR> Javascript's ability to do graphics is very limited; you have to do hacky 1pixel divs, and you still won't get pretty anti-aliasing.

Even if I had infinite time to write the code in JS, I'd have to replicate a lot of functionality of the Flash player, and you'd end up with maybe 5x the code you'd have to download compared to the Flash swf file. Doubt you'd prefer that experience.

I think most people hate Flash coz its: (i) obtrusive as ads on sites, and (ii) it takes too much goddamn CPU (or at least that's why I hate it on my Mac). But I've paid close attention to the CPU usage in Dabbleboard; let me know how it runs for you.

<comment><USER44> I don't hate it, it's just that Adobe's Linux implementation of Flash is very bad.

<comment><AUTHOR> Yes, the Mac version could be better too. I'm curious if you're seeing issues with Dabbleboard in particular. If not you could still un-adblock (or un- flashblock) it :).

</comment></comment></comment></comment><comment><USER45> There should be some way to work on the whiteboard with other people simultaneously. I need that.

<comment><AUTHOR> It's there, but you need to sign up for that. After signing up, click "Share".

</comment></comment><comment><USER46> Check out sketchfu.com. Similar technology, but geared to a slightly different audience.

</comment><comment><USER47> One of the first YC startups did exactly this. I'm not sure what happened to it.

<comment><USER9> <http://www.thinkature.com/> ?

<comment><USER47> Yes! Thank you.

</comment></comment></comment><comment><USER28> this is incredibly slick. i love how easy it feels. one major problem i faced -- once an object is selected, i thought dragging would move it, but of course it doesn't. That created a bunch of unneeded shapes for me.

<comment><AUTHOR> Yeah I'm in two minds about that. The problem arises coz of my "optimization" where I automatically figure out whether you want to: 1\. Select: click without dragging. 2\. Draw: click while dragging.

All other drawing apps have separate tools in the toolbar for select and draw (and even more for square/circle/text... yeesh). And I want to minimize your visits to the toolbar.

If I made it drag instead of draw in your example, then I'd need a "select" tool again :(.

Or I could choose the middle ground: if an object is _already selected_ (i.e. not just being hovered over), then I do a move instead of a draw. Would this help?

<comment><USER28> Indeed, that would fix it for me very cleanly for me, at least.

<comment><AUTHOR> Any other users prefer this "middle ground" of selection versus drawing disambiguation? :) I can add it right easily enough.

<comment><USER48> Yes. On first thought, at least, this seems like exactly the right way to do it.

Very nice job, by the way. It might be the first "critique my startup" post I've seen here where I took a look and (a) it made sense, and (b) didn't suck. Actually, it's a lot better than not sucking; it's fast and immediately usable and generally feels better than average.

Edit: the name dabbleboard is sort of crowded by dabble.com and dabbledb.com, though. My first thought was that it was an offshoot of one of these.

</comment></comment></comment></comment></comment><comment><USER49> I like it. Get a Favicon. I bookmark all my sites using those images.

</comment><comment><USER50> It was EXTREMELY painful just drawing simple stuff because the "free transform" resizer would pop up after every segment drawn. Make this optional.

Also, don't even make people sign up. Not right now. Later.

<comment><AUTHOR> If by "free transform resizer" you're referring to the green move/scale/etc. circles, then that shouldn't happen. They're supposed to only come up when you click on an object, not right after drawing each shape.

If that's happening it must be a bug somewhere in my code. I'll try to replicate it. Thanks!

</comment></comment><comment><USER51> locked up my browser... os x 10.3.9 on firefox 184.108.40.206

<comment><AUTHOR> Sorry about that. I've heard one or two other instances. So much for the Flash player being consistent :(.

I have 10.5.2 and the same version of Firefox. I don't have a way to debug this right now (can only afford one mac), but I'll try to replicate the hang in other browsers.

</comment></comment><comment><USER52> awesome, when i click freehand and arrow, it uses the freehand.

how do i add more image assets on the left?

<comment><AUTHOR> Just drag your selection to the pane on the left.

</comment></comment><comment><USER53> Simple crop feature would be awesome

</comment><comment><USER54> Ctrl-Z for undo would be great

<comment><AUTHOR> Already works, try it :)

</comment></comment><comment><USER55> Very nice. One thing that seems to have gone un-noticed till now: LaTeX support would be nice.

Secondly, the UI right now is very sparse and that is a great thing. Make sure that extra features don't clutter it up.

Other than that, great app.</comment>


What to do when Ajax is faster than CSS - <AUTHOR>

I have a jQuery enabled application that is running too fast for the Stylesheet to load.  I can't figure out how to have the javascript run when the styles are all done.
Here is my page order
HTML HEAD JAVASCRIPT CSS - One file with includes TEXT FOOTER
Any suggestions?  I can reorder it but I'd like a clean solution maybe with something to do with the browser.
Paul <comment><USER2> The CSS should go in the head, and the Javascript can be placed at the very end of the page right before the closing body tag.

Failing that, you can put the JS right below the CSS in the head tag.

</comment><comment><USER3> are you using $(document).ready() ?

</comment><comment><AUTHOR> Yes I am using the Document ready. It may not be that the CSS is loading slow but I have my doubts when I refresh and it operates the same.

<comment><USER3> if this is what is in question, put the CSS inline instead of linking it in order to help debug. if things work peachy when doing this, then your problem lies in the importing of the css file. css first, before the js.

if things are still broken, its your code.</comment></comment>


Bulgarian scammers used fake Spotify playlists to make a shitload of money - <AUTHOR> https://www.avclub.com/it-sure-looks-like-bulgarian-scammers-used-fake-spotify-1823231417 <comment><AUTHOR> My question is: Is this legal? If so, it's time for me start devising ways to abuse monetizing startups.</comment>


Monty Hall Problem Simulation - <AUTHOR> https://github.com/mycask/monty-hall-sim <comment><USER2> Since a lot of university mathematicians, engineers, and physicists famously got the answer wrong, I've classified The Monty Hall Problem as more of an "English parsing" problem instead of a math problem. From wikipedia[1], the problem as stated:

 _> "Suppose you're on a game show, and you're given the choice of three doors: Behind one door is a car; behind the others, goats. You pick a door, say No. 1, and the host, who knows what's behind the doors, opens another door, say No. 3, which has a goat. He then says to you, "Do you want to pick door No. 2?" Is it to your advantage to switch your choice?"_

The key phrase that everyone glosses over is: _" , and the host, who knows what's behind the doors, opens another door, say No. 3, which has a goat."_

If it was reworded as _" the host who knows what's behind the doors and _always_ opens the door with a goat and _never_ opens the door with the car"_, the mathematicians would have seen the 2/3rds probability. The original wording with the nonchalant _" say"_ in the middle of _" , opens another door, _say_ No. 3, which has a goat"_ makes it seems like there was no link between the host's knowledge of what's behind the door and the opening of door #3 and therefore _random_. Therefore, the 50/50 probability seemed to be the correct answer.

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

<comment><USER3> I'm not sure I agree. In particular:

> If it was reworded as "the host who knows what's behind the doors and > _always_ opens the door with a goat and _never_ opens the door with the > car", the mathematicians would have seen the 2/3rds probability.

There seems to be extensive examples of mathematicians encountering very clearly worded descriptions of the problem, but still failing to jump to the right answer.

> The original wording with the nonchalant "say" in the middle of ", opens > another door, say No. 3, which has a goat." makes it seems like there was no > link between the host's knowledge of what's behind the door and the opening > of door #3 and therefore random. Therefore the 50/50 probability seemed to > be the correct answer.

Yeah, but it's not 50/50\. I think you're focusing on the wrong part there. The issue isn't the host's knowledge, it's the question of whether he always opens a door. If he always opens a door at random, and if _in this particular run through_ he happens to open a door with a goat, then you will still double your odds if you switch. The host doesn't need to know what's behind the door for this to work!

What does need to be the case is that the host _always_ opens a door (or chooses whether or not to open a door for reasons other than his knowledge of what's behind them). In a hypothetical variant where Monty only opens a door and offers you the chance to switch if he knows you picked a car, you should never switch. In a variant where he only does so if he knows you didn't, you always should. :)

<comment><USER2> _> , and if in this particular run through he happens to open a door with a goat, then you will still double your odds if you switch. _

Yes, I agree.

 _> The host doesn't need to know what's behind the door for this to work!_

The host has to know it and always open the goat door to prevent mathematicians from making a _repeated simulation_ in their minds where the host _sometimes opens a door with a car_ behind it.

That would be over-reading and misinterpreting the MH wording but that's why the problem is so enduring -- it uses clever text to misdirect a lot of smart people _away_ from the correct 2/3rds answer.

<comment><USER4> Weirdly enough, in the scenario where the host doesn't know which door has the goat and just happens to open the right door, your odds of winning the car if you switch actually does go back to 50-50.

Edit: I made a quick IPython notebook to demonstrate this: [https://github.com/yen223/monty_fall/blob/master/Monty%20Hal...](https://github.com/yen223/monty_fall/blob/master/Monty%20Hall%20vs%20Monty%20Fall.ipynb)

<comment><USER5> In your program, you have to classify all cases where the host picks the prize on his second selection as 'passed', and put them aside. This affects the result, as in all those cases the subject had picked one of the wrong boxes, so you have biased the cases you actually consider towards those where the subject originally picked the right box.

</comment></comment></comment></comment></comment><comment><USER6> I find that one can get a better intuitive grasp on many things when you take them to the extreme. In this case, suppose that instead of three doors, there are one hundred doors and behind 99 of them there are goats and behind 1 there's the car. After you select a door, say number 14. The host then tells you that it might be behind door number 14 but out of all the other doors he opens all but door 92, so you are left with two doors to choose from. I think the choice is quite obvious at this point. If not, then try a million doors...

<comment> matt-attack As a high-schooler, this was my approach and it _really_ locked in a strong understanding. You can really grok that with 1000 doors, for all intents and purposes, you basically had zero chance of getting it right on the first try, therefore you have basically a 100% chance of being right by switching.

</comment></comment><comment><USER7> This has always fascinated me. I can understand the reasoning behind it, but still don't completely "get" it. It seems so counter intuitive. I ended up writing code to simulate it too. Glad it's not just me that need that extra level of proof.

Edit: I very much appreciate the willingness to try and explain this below. Many have tried before; not least my poor despairing A-level maths teacher back in the day.

<comment><USER8> It's far easier to grasp when you consider that Monty opening one of the other 2 doors _makes no difference_ to his offer (since he'll _always_ open a door with a goat behind it anyway), i.e. he could also say "Do you want to stick with your door, or switch to _both_ these other 2 doors?" without the unnecessary misdirection of opening the goat door beforehand.

<comment><USER7> Thanks, I hadn't thought of it quite that way. I hesitate to say "eureka!" but maybe, just maybe that might get me there :)

</comment></comment></comment><comment><USER9> "Pigeons repeatedly exposed to the problem show that they rapidly learn always to switch, unlike humans."

— [https://en.wikipedia.org/wiki/Monty_Hall_problem#Sources_of_...](https://en.wikipedia.org/wiki/Monty_Hall_problem#Sources_of_confusion)

</comment><comment><USER10> There are many interesting variations of this, some that give the opposite behavior, if you ever want to trick someone who already knows the Monty Hall problem.

[https://www.youtube.com/watch?v=AB- FA75Tm1I](https://www.youtube.com/watch?v=AB-FA75Tm1I)

</comment><comment><USER11> Note the `play` function can be reduced to these 3 lines :

        chosen = randint(1, 3)
        winning = randint(1, 3)
        return (chosen != winning) == switch

The only way to win if we don't switch is to have chosen the winning door (switch==false, chosen==winning); the only way to win if we switch is _not_ to have chosen the winning door (switch==true, chosen!=winning).

<comment><USER12>
        if (chosen == winning && !switch):
            return true
        if (chosen != winning && switch):
            return true
        return false

Is a longer but easier version to read.

<comment><USER11> FYI Python uses `and`, not `&&`.

</comment></comment></comment><comment> loup-vaillant I've done a more complete analysis here, with a simulation program: [http://loup-vaillant.fr/tutorials/monty-hall](http://loup- vaillant.fr/tutorials/monty-hall)

Whether you should switch or not is highly dependent on what you know of the host. In the classical problem, you should switch. But there are hosts with which one should _never_ switch.

</comment><comment><USER13> For those who speak spanish: [http://www.investigacionyciencia.es/blogs/matematicas/33/pos...](http://www.investigacionyciencia.es/blogs/matematicas/33/posts/el- programa-que-convenci-a-erds-11982)</comment>


How to Build Killer Products: Founder Obsession Pt3 - <AUTHOR> https://medium.com/@linktexting/how-to-build-killer-products-founder-obsession-17b2d813a185

<comment><AUTHOR> [http://www.reddit.com/r/Entrepreneur/comments/2niwce/who_are...](http://www.reddit.com/r/Entrepreneur/comments/2niwce/who_are_your_favorite_founders_entrepreneurs_and/)

I also posted a reddit thread.

Seems everyone agrees on Elon Musk being one of the best.

Some obscure entrepreneurs/founders: Samuel Zemurray (dole) John Paul (paul mitchell)</comment>


The difference between cheap and pricey cashmere - <AUTHOR> https://www.wsj.com/articles/cheap-vs-pricey-cashmere-heres-the-real-difference-11576181310 <comment><AUTHOR> [http://archive.is/9MmPF](http://archive.is/9MmPF)</comment>


There is no work-life balance, just life balance - <AUTHOR> https://www.indiehackers.com/@yaroslav_lehenchuk/there-is-no-work-life-balance-just-life-balance-6681c96cb8 <comment><USER2> There's a guy named Ken Auer who took the life-work integration message to heart. He established a craftsmanship studio in his house. In large part, it was to integrate work, family, personal into one.

[https://www.rolemodelsoftware.com/why-we-build-software- syst...](https://www.rolemodelsoftware.com/why-we-build-software-systems/)

This is also why I quit the tech startup rat race and transitioned to my current lifestyle that allows me to work on the projects I am interested in, be around my family, travel when I want to travel, and go in whatever direction I am interested.

Work-life balance has always smelled of a construct created by corporate "personnel" departments to stem the tide of fleeing, burned-out workers.</comment>