Ask HN: How do you teach/enforce programming best practices? - <AUTHOR>

Since finding a work environment where you work solely with top-level talent is exceedingly rare (especially outside of tech-hub areas), it's important to figure out how to maximize the talent that you have available.
What techniques/rules have you implemented that help teach devs the importance of things like: SOLID Principles, Law of Demeter, Principle of Lease Astonishment, etc.?
I work in a fairly standard corporate environment. Initially we tried to just enforce these things solely through code reviews, but it seems like they just mechanically make the suggested changes without really learning why it matters. Even most junior devs seem to have an academic grasp of things like the Single Responsibility Principle, but at some point during implementation that falls apart.
In my experience this has been a common theme across environments (both large and small) that I have dealt with and I'm very curious to hear how others are handling it. <comment><USER2> In my first CAD job, the way standard practices were ingrained was by having junior team members, i.e. me, be assigned to check the work of more experienced team members. It got fresh eyes on established habits, it exposed me to more complicated work and hence more complicated issues, and made reviews a two way street - I learned to see things through the eyes of those reviewing my work, and those further up the food chain did not get a free pass to the idea that the-right-way-is-whatever-way-I-do-it.

<comment><AUTHOR> That's an interesting idea. Did the original author of the work walk the junior team member through what was going on, or did they just point them at it and have them check through the work on their own?

It seems like that could be helpful. My main concern is that a lot of junior devs need some specific direction (as opposed to just telling them to go read some code) so we might need to setup some specific expectations for the results of the code review (maybe have them help write documentation?).

<comment><USER2> In the situation I described, review [of drawings] was part of the QA process, and going through the QA process was a requirement before anything was "shipped" [sent to the plant for fabrication]. So all that happened was that the normal roles for junior and senior staff were reversed for a small portion of the normal work-flow [i.e. a senior staff member did a lot of QA and a little production and a junior staff member did a lot of production and a little QA].

If review was just something that was done sometimes [and those sometimes being either slack periods or seen as part of correcting a situation in need of remediation] then it would not have made sense. It was only due to the fact that the junior staff member's sign-off was required "to ship," that the process was meaningful.

One of the side-effects was that some of my wild and crazy ideas that arose from not knowing any better were identified as seriously off target. Another side effect was that some of those wild and crazy ideas got adopted as standard methods because they worked and improved workflow.

If it isn't clear, I don't think code review assignments as punishment or busy work are worth pursuing.

</comment></comment></comment><comment><USER3> I've found that detailed code review before code makes it to master helps enforce these principles and sets a precedent for future code. Gerrit is a nice tool for this [http://code.google.com/p/gerrit/](http://code.google.com/p/gerrit/).

<comment><AUTHOR> We're currently transitioning away from TFS and I think locking down changes to pull requests (and potentially blocking most devs' access to commit to master) will help quite a bit. You can pull off a similar workflow in TFS, it's just much less convenient.

I think being able to see the full end-to-end diff for a task/story (as opposed to digging through a series of changesets in TFS) will make the benefits of any suggested refactorings much more obvious.

</comment></comment><comment><USER4> By example. Seriously.

I've been plenty of places where the edicts are passed down to the... "little people". They/we can end up jumping exhaustedly through endless rounds of process.

Then, the shit hits the fan, or a senior manager simply can't be bothered, and process is suddenly out the window.

Imagine the impression that leaves on everyone who's been running the process maze.

Demonstrate that it matters and serves a purpose. And keep it sane.

All the rest is just talk.</comment>


Voronoi Diagrams on the GPU - <AUTHOR> http://rykap.com/graphics/skew/2016/02/25/voronoi-diagrams/ <comment><USER2> aha, finally a chance to post my only meaningful contribution to computer science:

[http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=tru...](http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=7284430)

draft here (because I can't give away the final version): [https://github.com/BrendanBenshoof/pyVHASH/raw/master/Paper/...](https://github.com/BrendanBenshoof/pyVHASH/raw/master/Paper/workshop.pdf)

Nifty because it is distributed, works in any metric space where voronoi regions make sense (XOR and non-euclidian ones as a start!) and easy to make into an online algorithim that updates as nodes join and exit.

basically:

       given a center point $center$
       given a list of candidate points $candidate$
       to output a list $peers$

       sort $candidates$ by distance from $center$
       remove the closest candidate and add to $peers$ (it will always be a delaunay peer)
       for $c$ in candidates:
          if any member of $peers$ is closer to $c$ than $center$ then reject $c$
          else add $c$ to $peers$

essentially this generates most of a delaunay triangulation, and you can quickly find the voronoi generator of a given point by greedily traversing the resulting graph.

<comment><USER3> Sorry if this is only tangential to your comment and naive to boot, but why is it that you can't give away the final version of your paper?

<comment><USER2> Essentially to get published you have to give away all the publishing rights for the work you submitted. I'd prefer open access journals, but the people who decide if I get my phd don't value those like I do.

<comment><USER4> The IEEE actually has a reasonable policy [https://www.ieee.org/documents/author_faq.pdf(see](https://www.ieee.org/documents/author_faq.pdf\(see) section 2). Essentially authors are allowed to post the version of the paper that they submitted for final publication.

</comment></comment></comment></comment><comment><USER5> I love Voronoi diagrams, and especially Centroidal Voronoi Tesselations. They relate to many natural phenomena such as honeycombs and soap bubbles. I used that as the basis for an art installation I did for Burning Man: [http://www.flowandwonder.com](http://www.flowandwonder.com).

Another technique for computing them on the GPU, not sure how related it is to OP's technique: [http://www.iquilezles.org/www/articles/voronoilines/voronoil...](http://www.iquilezles.org/www/articles/voronoilines/voronoilines.htm)

Edit: shadertoy link: [https://www.shadertoy.com/view/ldl3W8](https://www.shadertoy.com/view/ldl3W8)

<comment><USER6> That is wild! Wow, what an incredible installation! Do you have video of this at night? It looks fantastic.

</comment></comment><comment><USER7> There's a much faster O(n) method for doing Voronoi diagrams on the GPU by taking advantage of the depth buffer. It's so simple that it gives you one of those "why didn't I think of this earlier" moments. I learned it from the old school demoscene guys at work...

        0. Set up orthographic projection
        1. Enable depth testing
        2. For each "seed" point, draw an "infinite" cone all the way from the near to the far clipping plane
        3. Shade with solid colors.

That's it.

The depth testing will only leave fragments of the cone that the corresponding pixel is closest to. If you need better precision, draw the "cone" by making a full screen quad and use the fragment shader to set depth (gl_FragDepth) according to distance from seed point (or just use enough vertices in the cones).

If you change the circular cone to a rectangular-based pyramid shape, you'll get Voronoi-type diagrams but with a different metric (manhattan distance?). Turn the rectangle 45 degrees to make a diamond shaped base and you have yet another metric.

<comment><USER8> Heh, I remember this technique from the OpenGL Red Book, at least 15-20 years ago.

[http://www.glprogramming.com/red/chapter14.html#name19](http://www.glprogramming.com/red/chapter14.html#name19)

<comment><USER7> Cool! I've of course read the Redbook back in the day (I think I still have it printed out in my shelf) but for some reason I've missed that chapter.

I didn't quite get what you need the stencil buffer for in that technique.

<comment><USER8> The stencil buffer provides a boolean mask for the regions you care about, making it easy to draw them in flat color with a subsequent pass. I can't see a way to do that easily with depth information only.

(Plus, it was traditional to combine 24-bit depth with 8-bit stencil in the same buffer, so stencil writes were basically free if you're writing depth anyway.)

<comment><USER7> Yeah, that's pretty similar to the stenil-then-cover technique used in vector graphics.

But what advantage does a two pass stencil technique have over just writing to the color buffer in the first pass?

<comment><USER8> Oh, I see what you mean. Good question. I suppose it might have been more efficient to avoid multiple colour buffer overdraws (since you're drawing a fullscreen quad for each seed point, albeit a depth-tested one). And you could render the depth+stencil buffer once then reuse it to highlight different regions, e.g. on mouseover.

But you're right, it doesn't sound massively compelling. And the traditional 24depth+8stencil buffer format would limit you to a maximum of 256 regions, which could easily cramp your style.

</comment></comment></comment></comment></comment></comment><comment><USER9> This isn't actually a voronoi diagram, it is an (approximate) distance transform - though it is still pretty cool!

If you are working on a grid, there are lots of ways to compute distance transforms exactly. An exact and optimal serial algorithm which works for any metric is due to Meijster, and it runs in O(n) time in the number of pixels:

[http://parmanoir.com/distance/](http://parmanoir.com/distance/)

Distance transforms are a special kind of (max, +) convolution, and have lots of interesting algebraic properties

<comment><USER10> The linked paper specifically says "Jump Flooding in GPU with Applications to _Voronoi Diagram_ and Distance Transform," so are you sure it's not both in this case?

<comment><USER9> To compute a voronoi diagram, you also need to reconstruct the boundary and topology of all the cells, which is not being done here. Also most algorithms for computing voronoi diagrams do not snap the vertices to integer lattice coordinates.

<comment><USER10> Would it be fair to say this is a fast _rasterization_ algorithm?

</comment></comment></comment></comment><comment><USER11> Any good resources for getting started with WebGL? I'm going to start transitioning a large amount of slow <canvas> drawing to WebGL, and I'd love any pointers for someone getting started without any experience in graphics and gaming (which seems to be the starting point most tutorials use).

<comment><AUTHOR> I recently got started with WebGL so I hope that others post more/better resources, but...

\- I found this to be a good starting point for WebGL as a whole: [https://webglfundamentals.org/](https://webglfundamentals.org/)

\- This is a great resource for learning about GLSL and shaders (writing code that runs on the GPU): [http://patriciogonzalezvivo.com/2015/thebookofshaders/](http://patriciogonzalezvivo.com/2015/thebookofshaders/)

\- As a starting point for implementing the Jump Flood Algorithm (which is what I used to implement the Voronoi Diagram demos) I found it helpful to read Chris Wellon's articles on GPGPU programming. Here's the first one: [http://nullprogram.com/blog/2014/06/10/](http://nullprogram.com/blog/2014/06/10/)

</comment></comment><comment><USER12> Ryan! Thanks for writing this post. I had messed around with Voronoi diagrams in Processing and D3 without really understanding the intricacies behind it. This is a great explanation of what's going on.

I'd love to see more stuff like this on HN.

<comment><AUTHOR> Thanks - I'm glad you found it interesting!

</comment></comment><comment><USER13> It's not particularly efficient, but probably the easiest way to draw Voronoi diagrams on the GPU doesn't require a shader at all. Instead, use an orthographic projection and draw cones for each vertex with the cone's apex at the vertex and its axis oriented into the screen. Then the GPU's z-buffer takes care of choosing which vertex is closes to the given pixel.

<comment><AUTHOR> Yeah! It's a pretty big omission in my post that I don't talk about other methods of generating Voronoi diagrams, but I wanted to keep it relatively short.

Chris Wellons has a great article on the method that you mention: [http://nullprogram.com/blog/2014/06/01/](http://nullprogram.com/blog/2014/06/01/)

It's also mentioned in the OpenGL red book: [http://www.glprogramming.com/red/chapter14.html#name19](http://www.glprogramming.com/red/chapter14.html#name19)

</comment></comment><comment><USER14> We use a weak approximation of this for hit testing. So awesome!

<comment><AUTHOR> Cool! If you're willing to share, I'm interested to hear how your approximation works. Do you just do fewer rounds? Do you use bigger step sizes?

<comment><USER14> It's point picking for ~svg, where we draw a wider region than the actual elements and just go with that. The goal is not having to precisley click on small objects in a big scene. This generates a reverse index for knowing which element each pixel fuzzily refers to, and if far, if better described as blankspace. So, just 1 step, and we can cover a huge scene :)

</comment></comment></comment><comment><USER15> If you use a grid of regularly-spaced points, you end up with a pixelated/mosaic image. Here's a (sadly Flash based) tool for applying a quadrilateral/triangular/hexagonal mosaic effect to a photo: [http://damienclarke.me/code/mosaic-maker](http://damienclarke.me/code/mosaic- maker)

<comment><USER16> Can't see your link because I don't have flash, but I made a similar thing with HTML5 [https://franciscouzo.github.io/voronoi/](https://franciscouzo.github.io/voronoi/)

</comment></comment><comment><USER17> Here's an implementation of 2d Worley noise using a hexagonal grid with one- point per cell: [https://www.shadertoy.com/view/ltjXz1](https://www.shadertoy.com/view/ltjXz1)

This version may still have artifacts when the points fall too close to a cell boundary.

</comment><comment><USER18> This guy is all about voronoi diagram based animation.

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

Also this guy, maybe more so. (There seems to be a connection).

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

</comment><comment><USER19> [http://mappable.com](http://mappable.com) made an incredible music product out of these kinds of layouts. Pity more people don't know about it.

</comment><comment><USER20> Worked on my mobile browser, apparently without major issues

<comment><USER21> Ironically, it's not working on my desktop browser.

I'm getting "DEMO DISABLED. COULDN'T START WEBGL." on my Chrome on Windows 10 on Intel integrated graphics setup, literally the most common browser on the most common OS on the most common graphics stack.

<comment><AUTHOR> I'm sorry that you're running into issues - I just got started with WebGL and I don't have a Windows machine to test on. I'd be interested to know if other WebGL demos work on your machine. Do you see a triangle and square when you visit this page? [http://learningwebgl.com/lessons/lesson01/index.html](http://learningwebgl.com/lessons/lesson01/index.html)

<comment><USER21> Yep, the demo is working fine on both Firefox 45.0.2 and Chrome 49.0.2623.112. Both browsers are failing on your site for some reason.

<comment><AUTHOR> I fixed an issue that I was able to repro on a Windows machine. It'd be great if you could try again and let me know if it now works for you!

<comment><USER21> It's working perfectly now. Thanks!

</comment></comment></comment></comment></comment></comment><comment><USER22> What are these used for?

<comment><USER23> [https://duckduckgo.com/?t=lm&q=Voronoi+diagrams&ia=about](https://duckduckgo.com/?t=lm&q=Voronoi+diagrams&ia=about)

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

<comment><USER23> The wikipedia page has a nice section on what these are used for.</comment></comment></comment>


Ask HN: Advice for dealing with a client and bad SEO advice - <AUTHOR>

I have a regular client who I've been doing work for for a number of years and their website rates well in Google, but it's recently fallen to page 2 and they've hired an SEO firm to help them, but I'm concerned the advice they're being given is bad.
Has anyone here any good articles etc on SEO I can give to my client and do any of you have any tips on how to approach this? I've stated my reservations, but in their eyes I'm "the website guy" and the other firms are "the experts".
Examples of what I consider to be bad advice they've been given - massive keyword stuffing. Here's the copy I've just been given for meta keywords "Corporate keyword1 keyword3, keyword1 keyword3, keyword4 keyword2, keyword1 keyword3 Melbourne,cheap keyword1 keyword3,keyword5 merchandise, business keyword2,Company keyword2 Australia, company keyword1 keyword3, corporate keyword2, marketing keyword3, keyword1 keyword2, keyword1 items, keyword1 merchandise, keyword1 keyword3, keyword1 keyword3, keyword1 keyword3 Australia, keyword1 keyword3 Brisbane, keyword1 keyword3 Perth, keyword1 keyword3 Sydney"
Other advice includes hiding h1 elements behind images and the like. fwiw, the SEO mob are a reputable looking Australian firm, and my client is a long standing bricks and mortar store <comment><USER3> [http://moz.com/](http://moz.com/) is a fairly authoritative source on good SEO techniques.

They address keyword stuffing in a 'common myths' article [1] that also happens to address the metatag myth. Matt Cutts, Google's search spokesman, also has some unkind words for keyword stuffing [2].

There are appropriate meta tags to be included [3] like the description tag. There's also Open Graph, RDF, and the like to consider including [4]. These don't influence Page Rank and SERP but can help with traffic and providing more information to people. As a brick and mortar store, your client should likely be on top of this kind of metadata and if not, this should be one of your priorities.

Hiding elements sounds like the kind of grey hat techniques that work now and impress people but gradually get detected and penalized by Google over time. Unfortunately this kind of stuff often works, until it incurs a penalty. Instead, reputable SEO will likely involve building content around keyword groups. Think blogging about keyword1 and keyword3, another entry involving keyword2 and keyword4, etc. Make it informational, make it share-able, and avoid spamminess.

It sounds like you're in a difficult spot, your client is likely to continue down this road despite your objections. I hope you have some success steering them towards proper SEO and more traffic.

[1][http://moz.com/beginners-guide-to-seo/myths-and- misconceptio...](http://moz.com/beginners-guide-to-seo/myths-and- misconceptions-about-search-engines)

[2][http://www.mattcutts.com/blog/avoid-keyword- stuffing/](http://www.mattcutts.com/blog/avoid-keyword-stuffing/)

[3][http://moz.com/learn/seo/meta-description](http://moz.com/learn/seo/meta- description)

[4][http://searchengineland.com/facebooks-open-graph-for- local-s...](http://searchengineland.com/facebooks-open-graph-for-local- seo-52098)

<comment><AUTHOR> Thanks heaps for this. I think one of the problems is that they expect when they hire an expensive "expert" they then trust that expert's advice, same as they would advice from a lawyer or accountant. Me coming along and saying "No! don't do that" comes off to them the same as if I complained about advice from their accountant.

The above links are good and I'll read them when I get a break and apss them along. As for the hiding elements, I just plain said I wouldn't do it, but the rest I've less grounds on which to object. In short, I want them to do what's best for them

</comment></comment><comment><USER4> Meta keywords tag has been obsolete for more than 15 years, stuffing it even stupider since the algo will detect it - <USER2>

<comment><AUTHOR> Yes, this is what I thought, but how do I say this to a client and get them to listen?

<comment><USER5> Show your client this page - [https://support.google.com/webmasters/answer/79812?hl=en](https://support.google.com/webmasters/answer/79812?hl=en)

It lists the meta tags Google uses, and clearly states that all other meta tags are ignored. Of course the keywords tag is not listed, so you can categorically show your client that Google does not use the keywords tag.

<comment><USER6> And show them this page, also from Google:

[https://support.google.com/webmasters/answer/66358](https://support.google.com/webmasters/answer/66358)

From the page:

 _Irrelevant keywords

"Keyword stuffing" refers to the practice of loading a webpage with keywords or numbers in an attempt to manipulate a site's ranking in Google search results. Often these keywords appear in a list or group, or out of context (not as natural prose). Filling pages with keywords or numbers results in a negative user experience, and can harm your site's ranking. Focus on creating useful, information-rich content that uses keywords appropriately and in context._

A few bullet-points of examples follow, including one about lists of cities one is trying to rank for.

</comment></comment></comment></comment><comment><USER7> Google is moving into semantic searches. Stuffing was bad and in recent times got even worse. I mean, do those guys like...I mean... do they even use Adwords Planner?

We recently made a WP based site who hit #1 in local kws, getting in front of Wikipedia even. But what we did was an experiment (100% white) and until we try it out on international, to confirm, I can't share.

Google is moving past stages where simple gaming doesn't give meaningful results anymore.

</comment><comment><USER8> Honestly, that SEO firm should be taken to court for fraud. The advice is malicious and anyone who knows anything knows it will do material damage to the performance of the website costing the company revenue, branding and opportunity. Just because someone claims to be an expert doesn't make them one and it certainly doesn't make them good at what they do. I would check their references and look for horror stories based on the advice they are providing they must have a lot of unhappy customers out there and unhappy people like to complain on the internet.

</comment><comment><USER9> [https://www.youtube.com/watch?v=7y-m_jiayLQ](https://www.youtube.com/watch?v=7y-m_jiayLQ)

Matt Cutts on keyword stuffing. No bigger authority than that.</comment>


Love Ops? Love Dev? Come work for VSCO - <AUTHOR> http://www.authenticjobs.com/jobs/14274/devops-engineer

<comment><USER2> HN is being taken over slowly by recruiters...</comment>


How I back up Gmail (my relay is doing it for me) - <AUTHOR> http://www.gnegg.ch/2011/02/how-i-back-up-gmail/

<comment><AUTHOR> I've written this quick tutorial after my post here <http://news.ycombinator.com/item?id=2270785> got some interest

<comment><USER2> Thanks for this post. Really useful.

Too bad it didn't get more upvotes (I found out about it in the other thread).</comment></comment>


Paperclip vulnerability leading to XSS or RCE - <AUTHOR> http://homakov.blogspot.com/2014/02/paperclip-vulnerability-leading-to-xss.html

<comment><USER3> Paperclip's solution still looks wrong to me. The require 'a' validation - <USER2> content type or filename. However, the content type comes from the browser - it's parsed from the headers with rack - and is completely under the attacker's control. It only helps you if you are going to serve back the file with the user-supplied mime type.

Homakov's attack relied on the file being served up with the mime type associated with the file extension, so the attacker's supplied mime type is only used to validate the file.

Even if you use the user's mime type to serve back the file, there's issues with the kind of validation paperclip does-they treat the file name and mime types as independent things. You validate to a white list of one, and separately to a white list of the other. Consider the use case of someone writing gmail. They want to allow a wide variety of file uploads; the paperclip validation does nothing because all mime types and extensions are allowed. However, it is _combinations_ of things that are the problem; a thing uploaded as image/jpeg should have extensions of jpg or jpeg, not html; a text/html should have extension html not jpg.</comment>


Guess Who's Behind Facebook's Political Ad Policy - <AUTHOR> https://www.vanityfair.com/news/2019/12/peter-thiel-behind-facebooks-political-ad-policy <comment><USER2> "Peter Thiel has reportedly been lobbying Mark Zuckerberg to refrain from fact checking political ads on the platform."</comment>


One SDK to Rule Them All - <AUTHOR> http://blog.mparticle.com/one-sdk-to-rule-them-all/

<comment><AUTHOR> OP here - if anybody has any questions for how mParticle works (vs. Segment.io for example), happy to have a discussion here!</comment>


Welcome to Canada - <AUTHOR> http://briancarper.net/blog/welcome-to-canada

<comment><USER2> > No one owns guns.

Bullshit. Canada has extensive gun ownership.

Why they don't have as much violent gun crime is an interesting question though.

<comment><USER3> Handguns are far more restricted in Canada than the US. You can own them if you get licensed, but you need a permit to transport them between (and _only_ between) your home and a specific shooting range, locked in a case in your trunk separate from the ammunition. Open-carry permits are effectively impossible to get unless you're driving an armoured car. In short, anyone with a handgun in public is carrying a one-way ticket to jail if they're stopped by police. It probably discourages criminals from casually carrying (and then using) guns.

edit: according to <http://www.phac-aspc.gc.ca/publicat/cdic- mcc/19-1/d_e.html> the US has 77 times as many handguns as Canada, with only ~10 times the Canadian population.

<comment><USER2> All of this I know and your argument is much more interesting, though I won't debate gun politics on this forum. I was just trying to point out the ridiculousness of the author's statement "No one owns guns. I have yet to fear for my life since I've gotten here."

There are parts of the US with very high gun ownership and very low rates of violent crime. Moving there someone could say "Everyone owns guns. I have yet to fear for my life" and it would be just as stupid a statement.

<comment><USER3> I think the OP may just have felt uncomfortable with American gun culture, not literally in fear of his life. Americans' relationships with their guns are far more intense than anything you'll find in Canada. I live in one of the most conservative parts of Canada. Plenty of people here own guns, but they aren't a way of life the way they are in parts of the US.</comment></comment></comment></comment>


Building 4d Polytopes - <AUTHOR> https://syntopia.github.io/Polytopia/polytopes.html <comment><USER2> Back in 1999 or so, I was doing undergraduate research for a math professor. My job was to make interactive visualizations with GL (not Open-, but Iris-). Among other things, he had a way of computing, if I recall correctly, the vertices of a dodecahedral tiling on a 3-sphere and projecting them into the Euclidean coordinate system used by GL. (If my math terminology is wrong there, it's because I don't fully understand it now nor did I then.) Anyway, these visuals bring back memories of that time. Some day, I hope to understand what on earth he was talking about.

</comment><comment><USER3> this is absolutely gorgeous, and very clearly explained. I finally understand that stereographic projection method!</comment>


In Silicon Valley Frenzy, VCs Create New Inside Track - <AUTHOR> http://www.wsj.com/articles/in-silicon-valley-frenzy-vcs-create-new-inside-track-1427992176 <comment><USER2> If you've been looking to place bets on early stage companies that can boom or bust - often for little to no reason other than trending with the sector, biotech in the public markets has been the place to be the last few years. It very much is resembling the .com boom in internet related technology.

RNAi has had some great moments the last few years in particular, and some spectacular busts and more great moments, for instance. But the public biotech sector as a whole has essentially been 1 big casino in the public markets. Even the ETF's are up a few hundred percent the last couple years.

I believe there's one more huge parabolic move before it tumbles - we'll see. Anyways, my point is we like to focus on the VC bubble in technology but the real "frenzy" has been in biotech IPO's and early/mid stage clinical companies even though private equity technology gets all the bubble press.

<comment><USER3> I worry that the basic science pipeline is drying up in biotech. A lot of good people are leaving the field due to erratic funding situations and generally low income and poor career outlook. I left my PhD in biology and many of my fellow PhDs, even if they graduated, are looking outside of the field for jobs.

RNAi is an example of something that was discovered 'by accident' from basic and exploratory research. To add, a lot of novel discoveries can be made from studying natural habitats and organisms(PCR for example) and many of those are disappearing. Making bets on biotech is making a bet on a field where long term prospects look poor.

<comment><USER2> Indeed, and a vast majority of early stage biotech's will simply contribute nothing. But then you get a story like Pharmasset which made any semi-early investor realize unbelievable gains in a very short period. But these stories are rare and it's pure speculation and the playing of market dynamics.

But yes, it is expensive research and although these companies have been able to find funding in the public markets due to a healthy appetite of risk for these types of things, I fear that when this obvious bubble bursts it will be very hard to find funding and a lot of research will simply run out of runway.

RNAi had a hot streak years ago and then had "dark ages" for quote a few years before it suddenly got hot again. And really the entire sector has been on fire. But I expect reality to take over soon and biotech will have some dark days ahead of it.

But for now, the casino chugs along.

</comment></comment></comment><comment><USER4> The lead example of FirstMark Capital is not new and its not a trick. A VC investment comes with pro-rata rights to invest in future fundraising rounds to maintain their % ownership of the company. A VC firm will allocate capital to a new portfolio company to follow-on in future rounds. FirstMark's fund is too small to utilize their pro-rata right in the late stage rounds of Pinterest. They have offered their LPs the option to use the right (which may be an obligation in the fund's limited partnership agreement). The "inside track" here is being an investor in a VC fund that funds a unicorn. Hardly a trick.

<comment><USER5> Anti-dilution clauses do not only benefit VCs, they're pretty common in companies of all sizes, with and without external capital.

</comment></comment><comment><USER6> What's the problem with secondary shares? Seems like someone unhappy when theres an actual market and changing valuation instead of retirement funds ripped off by your banking buddy.

</comment><comment><USER7> I don't see how one can write an article about these funding rounds and not mention ratchets/liquidation preferences and executive/founder/insider stock sales.

I also don't see how one can look at these private, illiquid, balance-sheet gimmicks and think that the "valuations" are tied to anything in reality. It's a huge game of pass the bag, and it wont be pretty when these deals unwind.

<comment><USER5> All stock sales are 'insider stock sales' if they do not refer to a public company.

How else do you think people become aware of the opportunity to buy or sell a stock in a private company if not through an insider?

<comment><USER7> I am referring to the practice of taking money off the table vs. issuing new stock.

<comment><USER5> If all parties agree to that there is nothing wrong with it.

Also, you can bet your bottom dollar that deals where money gets taken of the table are looked at even harder than ones where only new stock is issued.

</comment></comment></comment></comment><comment><USER8> Excellent article. Should be read together with "MARKETS How Wall Street Middlemen Help Silicon Valley Employees Cash In Early." [http://www.wsj.com/article_email/how-wall-street- middlemen-h...](http://www.wsj.com/article_email/how-wall-street-middlemen- help-silicon-valley-employees-cash-in- early-1427474284-lMyQjAxMTE1NjI0OTIyNjkyWj)

</comment><comment><USER9> So, what does this look like for the rest of us? Is it a viable way to raise money, like for an enterprise company?

</comment><comment><AUTHOR> If you hit the paywall google "In Silicon Valley Frenzy, VCs Create New Inside Track"

</comment><comment><USER10> At first, venture capital was (may have been?) like any other investment strategy: the goal is to generate a portfolio that delivers a high return on investment.

The problem? Variance, mixed with a short-term/instant-gratification culture at all levels of society. The more variance, the more whale-driven the business. You end up with binary returns: no whale, and you lose (relative to your peers) and even if you did everything else right it fucks up your career; or you get a whale, and you win. The doubles (3x) and triples (10x) don't matter and it's all about the elusive home runs (1000x). Or, I believe the term of art these days is "unicorn", because chasing an animal that only exists in the mind of people under 10 just makes sense in this culture of neoteny.

The second-stage venture capital wasn't about portfolio returns. Even if you had a profitable array of doubles and triples, you could face redemptions or struggle to raise the next fund, because you wouldn't have a _visible_ proof of competence. Sure, you did 20% per-year, but that guy over there who lucked into Facebook did 25% per-year (even though that one lucky call saved him).

Also, the career-making allure of _access_ outgrew the original job of delivering the best returns possible. So it became about "having been in on" a Google or a Facebook, even if most of the portfolio withered on the vine. That's why you get the culture of note-sharing (often inappropriate and illegal) and co-funding and collusion. VCs aren't chasing returns, which is what their investors want; they're chasing the intangibles that come with the appearance of prescience and social access, and those only come with the whales. An added bonus for VCs, which helps them personally but not their portfolios, of the extremely-high-variance strategy is that it opens up executive positions for underachieving friends who need favors. "Lifestyle" businesses that grow at 30% per year don't, because those tend to need specialized skills at executive levels. But the neat thing about a company that is really just a pile of cash and young coders ready to "pivot" on a dime is that any idiot can be placed at an executive level.

In this third phase, the game isn't about _finding_ big winners but _creating_ them. The VCs have fully grown into their role of king-makers, injecting huge sums of cash to end the game for all competitors almost instantly, create a "natural monopoly", and exploit it for 5-15 years until the monopolistic advantage fades (as it will if the idea is any good). Your product doesn't matter if your competitor gets a 9-figure injection, because that'll pay poaching fees for your best people, generate a lot of press, and push you aside.

That's where we are, now. The VCs don't invest money into a market that then decides what succeeds or fails. They have so much money that _they_ pick the winners, with not only their resources but their nearly absolute power over exit arrangements. ("Call Tom at Google. He owes me a favor. Let him acqui- hire this stinker at $4M per engineer so I don't have to think about it anymore.") Obviously, there are constraints upon them because they can't just fund anything-- they would run out of political capital if all they produced were stinkers-- but they have so much power at this point that almost all valuations are recursive.

<comment><USER11> >> The VCs have fully grown into their role of king-makers, injecting huge sums of cash to end the game for all competitors almost instantly, create a "natural monopoly",

Yes, capital can certainly be a competitive advantage. Another manifestation of that is economies of scale. Most of the companies on the Fortune 500 have and exploit such economies on a daily basis, and I don't see them apologizing...

>> "Call Tom at Google. He owes me a favor. Let him acqui-hire this stinker at $4M per engineer so I don't have to think about it anymore."

Do you actually have evidence that this kind of thing is going on? Could you post it if so? I'm thinking that Larry Page and plenty of other Google shareholders might be interested...

<comment><USER12> When Green Dot acqui-hired Loopt, Mike Moritz was on both boards.

<comment><USER5> Did they regret the transaction? Did any of Green Dot's minority shareholders sue Green Dot or mr. Moritz?

<comment><USER12> I was a Green Dot shareholder at the time and I regretted the transaction.

<comment><USER5> So what did you do about it?

<comment><USER12> I complained about it here on HN.

<comment><USER5> That's probably not the most effective venue.

If something like this ever happens again make sure that you make your objections known before the deal goes down, have them register your objection and reason during the shareholder meeting (you won't be able to block the deal from going through) and make it known that if you ever feel that you have been disadvantaged by the deal that you will sue for compensation (and follow through on that if push comes to shove).

As a minority shareholder you have rights, but you will have to stand up for them and push the proper levers at the right time.

Consult a lawyer in your local jurisdiction for the exact detail around the procedure and your options.</comment></comment></comment></comment></comment></comment></comment></comment>


6 Best Practices and Pro Tips When Using Angular CLI - <AUTHOR> https://medium.com/@tomastrajan/6-best-practices-pro-tips-for-angular-cli-better-developer-experience-7b328bc9db81 <comment><USER2> I really hope that Angular projects get more standardized this way. Not these snowflake projects with totally different tooling any more.</comment>


Flickr co-founder launches Slack, a messaging tool designed to kill email - <AUTHOR> http://gigaom.com/2014/02/12/flickr-co-founder-launches-slack-an-all-in-one-messaging-tool-designed-to-kill-email-forever/

<comment><USER2> Looks like a more accessible front-end client for IRC - this is awesome. I love using IRC for communication and this just makes it an easier sell on less technical colleagues.

I hope that the Slack service supports using your own IRC client as well. That would be the bees knees.

<comment><USER3> You can use IRC with Slack. Once you sign up go to [https://my.slack.com/account/gateways](https://my.slack.com/account/gateways)

</comment></comment><comment><USER4> "The Slack founder said he doesn't track things like installs or signups because those metrics are "bogus,""

LOL this guy is full of shit. He has 4 tracking codes just on his website.

Aren't people done trying to kill email?

</comment><comment><USER5> The most fascinating part of Slack is that it's following a similar path to that of Flickr. A game which didn't pan out followed by a pivot to a social/collaboration service.</comment>


Nepal cracks down on lucrative helicopter rescue scams - <AUTHOR> https://www.theguardian.com/world/2018/sep/03/nepal-cracks-down-on-multimillion-dollar-helicopter-rescue-scams <comment><USER2> The article is vague about this, but from the context it seems like the scams are people going to base camp, not summit teams. A trek to Everest Base Camp is strenuous, but it's obviously nowhere near as risky or expensive as joining a summit expedition. They should not be conflated.

People paying $500 (or even $1000) should not have any illusion that they're going to summit, but they still need travelers insurance and they may still have medical difficulties related to altitude or just connected with the nature of the trek. You'd have the same risks hiking the John Muir Trail in the Sierras.

There is one exception to this, which is that low-budget teams with a permit will sometimes self-support from base camp but will use a trekking guide to get them and their gear to base camp. Those people intend to summit and are just finding the cheapest way onto the mountain. They probably aren't going to bail at the first headache, though.

</comment><comment><USER3> NYT has much more context on the scam: [https://www.nytimes.com/2018/09/04/world/asia/nepal- everest-...](https://www.nytimes.com/2018/09/04/world/asia/nepal-everest- rescue-fraud.html)

</comment><comment><USER4> Food being spiked?! You're already paying a fortune to climb Everest, and now you can't even trust the people working for you. Horrible people everywhere.

<comment><USER5> This is simply the ugly side of unrestrained capitalism

<comment><USER6> How would any other system prevent this?

<comment><USER7> Enforce the regulations by dealing with the 'unrestrained' bit. These scams aren't present in all countries, copy their practices.

<comment><USER8> This isn't a problem with capitalism, all you would need would be a right-of- contract combined with a "you agree not to poison me" clause (I say this facetiously, nobody should have to specify that). Still, many of what people call problems with capitalism are really problems with anarchy.

<comment><USER9> Generally, I would agree but try suing someone over breach of contract in Nepal and India(Nepal is worse than India in this regard), they will laugh at you. The judiciary system is totally messed up to an extent that it has cost people their lively hood, here are few recent examples from India to give you a glimpse of how terrible it might be in Nepal:

1\. Guy gets falsely accused of harassment, faces social media justice and the complainant hasn't shown up in court for 3 years even a single time, the case is stuck since court keeps assigning a new date for hearing waiting for the complainant to show up:

[https://theprint.in/governance/this-delhi-man-was-called- a-p...](https://theprint.in/governance/this-delhi-man-was-called-a-pervert-in- viral-post-3-years-ago-and-hes-still-stuck-there/113879/)

2\. A kid is killed by a fellow student and Police pins murder on the bus conductor by torturing him and making him confess to the murder:

[https://www.thequint.com/news/india/gurugram-school- murder-d...](https://www.thequint.com/news/india/gurugram-school-murder- driver-ashok-kumar-life)

<comment><USER8> That sounds like a problem with anarchy to me. Capitalism has nothing to do with it, the government is failing to maintain lawful order.

<comment><USER9> Exactly, these countries haven't seen capitalism yet. I misread your previous comment thinking you were suggesting a contract would work, sorry.</comment></comment></comment></comment></comment></comment></comment></comment>


Show HN: AI color palette generator for Tailwindcss - <AUTHOR> https://tailwind.ink/ <comment><USER2> These kind of palettes always struggle with brighter yellows like #ffe400 because of the necessary normalization across hues to make it a full palette in first place, which of course prevents some colors to fulfill their potential (which is often at their peak chromacity). No AI can solve this problem because it's how colors work.

I think it's best to keep the palette separate from the code (e.g. store palettes in an app like Sip), and not insist on the replaceability of colors across a range. E.g. instead of blue-500 use functional names like btn-color or brand-color and alias the colors that way in code.

<comment><USER3> AI can solve it better than normal code can: you have to train on how humans see color. (This has been a long-standing ambition of mine, but sadly there's not yet much work or infrastructure in the field of "graphics AI." There's barely one software rasterizer. [https://github.com/vahidk/tf.rasterizer](https://github.com/vahidk/tf.rasterizer))

The key would be to spend an absurd amount of time carefully cataloguing good colors – by hand – and training it to extrapolate from that information. That's basically how the Musnell color system was created. [https://en.wikipedia.org/wiki/Munsell_color_system](https://en.wikipedia.org/wiki/Munsell_color_system) It's the realization that color space isn't spherical, it's not a cube, it's not any shape at all except "how humans happened to evolve." Even the term "max chromaticity" is just a reflection of the weird way our brains happen to work, not an intrinsic property of color.

In that context, a universal curve fitting algorithm might be handy. Which of course is all that AI is.

<comment><USER2> HSLuv is a sphere: [https://www.hsluv.org/](https://www.hsluv.org/)

They took the CIELUV/LCH/HCL solid and compressed it into a sphere, similar to HSL on top of RGB. The L* (perceptual luminance) value is consistent across hues, it can also replace the 100/200/300 scale for design systems.

But even the CIE model has flaws, chromacity is inherently linked with brightness/luminance, no color model can change that. A more saturated/chromatic color will always be perceived as more bright than a less chromatic one at the same luminance. And in order to create a palette you need normalization, which will always weed out individual color defining peaks.

<comment><USER3> I gave up trying to reason about color models when I realized the CIE model wasn't determined rigorously and empirically. A full critique is beyond the scope of 3AM, but, it's kind of fascinating to go back to the roots of color models and read about how precisely they came up with them. Remember to turn on your skepticism when you do.

"X is a sphere" has to be reconciled with "What are the chances that our visual system would evolve into a _perfect_ sphere with no flaws?"

For some reason, people are so determined to turn complicated phenomena into a pure and simple form. Even astronomy wanted to believe that orbits were circles, since circles are clearly more perfect. But nature isn't perfect; it simply exists.

<comment><USER4> Certain aspects of nature can be modeled extremely well with simple formulae.

Orbits are _damn_ close to perfect ellipses.

Likewise, human perception of color luminance could be _represented_ by a simple model where cross-human perceptual variation results in a damn close to perfect sphere.

Just like the actual orbital parameters for a given body are described by a few constants derived from observation, the actual human perceptual parameters (such as the constants in the CIE model) are likewise derived through observation.

<comment><USER3> Being close to something doesn't make it that thing. The orbits are close to perfect ellipses, but Mercury's orbits isn't a perfect ellipse – it required Einstein's modification to understand the discrepancy.

Human vision isn't even remotely in the same ballpark as "close to an ellipse". That idea is a very powerful, very persistent illusion, and as far as I'm concerned it will be productive to break it whenever possible.

</comment></comment></comment></comment></comment></comment><comment><USER5> This does pick some pleasing palettes but I'm not clear how they are utilized in the page. A quick scan of Tailwindscss docs shows a bit of discussion about naming colors and picking a primary and secondary color but I don't see much discussion about the other colors in their palettes. Anyone explain?

<comment><USER6> Tailwind comes with a default color palette. Each color has a 9 shades (100, 200,... 900) and the colors can be used for various elements, such as background, border, font, etc. For example, you can set a border to the 500 shade indigo using the class "border-indigo-500".

[https://tailwindcss.com/docs/customizing-colors#default- colo...](https://tailwindcss.com/docs/customizing-colors#default-color- palette)

You can also create your own custom colors with whatever names you want, whether color names or something like "primary" as the primary color of your theme. For each you can set shades as well.

</comment></comment><comment><USER7> This is a lovely app but it really _needs_ to generate grays as well. You just can't randomly drop in a color palette without changing the default TW grays. (they are pretty blue)

<comment><USER8> > You just can't randomly drop in a color palette without changing the default > TW grays. (they are pretty blue) reply

The Tailwind UI updated color palette at [https://www.npmjs.com/package/@tailwindcss/ui](https://www.npmjs.com/package/@tailwindcss/ui) has true greys with no color hue.

And you don't need Tailwind UI to use the updated colors (I asked Adam once). I think the plan is the updated color palette will eventually be rolled into a future Tailwind CSS update, if not already.

<comment><USER6> All the colors were updated for Tailwind UI, and they are supposed to be incorporated into Tailwind CSS at some point:

"During early access, the components in Tailwind UI depend on some extensions we've added to the default Tailwind CSS config (like extra spacing values, updated, colors, additional shadows, etc.)

"These extensions will make their way into Tailwind itself in the future...."

The bottom of Tailwind UI documentation gives more info on the color palette changes, including the new grey:

[https://tailwindui.com/documentation#how-tailwindcss-ui- exte...](https://tailwindui.com/documentation#how-tailwindcss-ui-extends- tailwind)

</comment></comment></comment><comment><USER9> So what exactly is AI about it? It just looks like a common algorithm that matches colors together and not some AI that has been trained to find matching color palettes.

<comment><USER3> It's effective, for one. I was surprised how good it looks. Color matching is a lot harder than it seems when you're generating palettes.

"AI" may seem cheesy, but you have to remember that in the future, lots of "AI programming" is just going to become "programming." This is clearly an effective, simple way of solving the problem, and requires no clever or common algorithms.

Also, what the hell is this file? Haha. [https://raw.githubusercontent.com/dmarman/dmarman.github.io/...](https://raw.githubusercontent.com/dmarman/dmarman.github.io/d26dec580a4f89860fbc4873fbda9f7574dff530/src/models/model.js)

This is awesome. The model outputs were turned into a single line of javascript which then gets evaluated by multiplying the color against all the weights. That wasn't what I was expecting, and I'm totally stealing this technique.

<comment><USER10> > Also, what the hell is this file? Haha. > [https://raw.githubusercontent.com/dmarman/dmarman.github.io/...](https://raw.githubusercontent.com/dmarman/dmarman.github.io/..).

I may be wrong, but it seems the weights of a trained NN

</comment></comment></comment><comment><USER11> i've added it to my list of color palette generation tools - sharing in case it helps someone else [https://github.com/sw-yx/spark- joy/blob/master/README.md#col...](https://github.com/sw-yx/spark- joy/blob/master/README.md#color-picking)

<comment><USER12> Great resource, thank you for curating this list!

<comment><USER11> welcome! honestly been thinking about making it into a nicer site with previews and commentary and faving and stuff. just gotta find the time (heh, as with all side projects)

</comment></comment></comment><comment><USER13> Why doesn't the generated palette include the original color? Makes me lose faith.

<comment><AUTHOR> Because the model doesn't overfit and that is good.

You don't want your model to mimic your trainning data. Otherwise, it would performe poorly with new data.

</comment></comment><comment><USER14> This works really well, I'll be using it on my upcoming projects :)</comment>


Y Combinator, the incubator with buzz - <AUTHOR> http://venturebeat.com/2007/04/13/y-combinator-the-incubator-with-buzz/ <comment><USER2> I wonder how long it will be before venturebeat figures out YC is not an incubator.</comment>


Jsonb: Stories about performance - <AUTHOR> http://erthalion.info/2017/12/21/advanced-json-benchmarks/ <comment><USER2> That post fails to mention something critical, Postgres doesn't scale and is not HA out of the box so you're comparing a single server solution vs another one that as built-in cluster feature ... What do you do when you need HA? or your data is too big or you need a lot write/sec ect ...

The hate on MongoDB is strong on Hacker News / Reddit but I suspect most of you never had to design a solution when master/slave is not enough.

Also: [https://www.mongodb.com/mongodb-3.4-passes-jepsen- test](https://www.mongodb.com/mongodb-3.4-passes-jepsen-test)

<comment><USER3> I'm curious whether the parent poster knows about the most recent HA features in Postgres, such as those introduced in v10, and if so, what is still missing for comparable HA. Here's a link to the HA docs for out-of-the-box postgres: [https://www.postgresql.org/docs/10/static/high- availability....](https://www.postgresql.org/docs/10/static/high- availability.html)

As for scaling, it certainly scales out of the box with partitioning, but admittedly a partitioned table doesn't offer all the features that a non- partitioned sql table offers. A great assessment of the current state of postgres scaling can be found here: [https://blog.timescale.com/scaling- partitioning-data-postgre...](https://blog.timescale.com/scaling-partitioning- data-postgresql-10-explained-cd48a712a9a1)

</comment></comment><comment><USER4> This is a great post but sad that they addressed everything thoroughly except the most important question for me - query performance. I don't do all this mass updating of document oriented entities. They are stored and they stay stored. But we query the hell out of them so I would love to know how well that actually performs with various indexes on various data types within the document.

<comment><USER5> Should take a look at flatbuffers. It's an evolution of protobuf that's super optimized for querying sunsets of data. Basically lookup of offsets and mmap all the way.

</comment></comment><comment><USER6> Surprising that PG beat Mongo at its own game. We've been recently using Jsonb with PG as a nice-to-have but always assumed Mongo would be much faster with schemaless data.

<comment><USER7> Well, PG is written by people who know what they're doing.

<comment><USER8> Come on can we keep this kind of stuff off HN?

If you have concrete criticisms say them so we can have a discussion, don't write snarky lines like this is some kind of "us vs them" game.

<comment><USER7> In an earlier comment yesterday I remarked that it was good to avoid platform wars, but the MongoDB crew squandered the right to converse as peers with all the lies they told. Remember when they compared their speed writing to memory with Postgres speed writing to disk, as if this made them faster? Either they have fundamentally misunderstood what a database is, or they have deliberately acted in bad faith, which is it?

</comment></comment></comment></comment><comment><USER9> > how to apply document-oriented approach in the world of relational databases

I've increasingly found that the number of situations where this is actually a good idea are quite, quite rare.

<comment><USER10> I'll play devils advocate.

In any real world system I've worked there are always entities that are purely self contained, but are represented by many different database tables. When they're saved, the entity is decomposed into its constituent parts and written to those tables. When they're retrieved, those tables are joined together to re-create the entity we care about. And that's all that ever happens, it's just serialised and de-serialised.

Isn't it premature optimisation to normalise that entity right out of the gate? Why not stuff it in a JSONB column. When - and only when - you find yourself needing to dig inside of it for queries in other parts of the system, then you normalize it.

<comment><USER11> One word: constraints. The problem with actually storing things in a document- oriented manner is that it requires extreme vigilance and no mistakes to actually keep the shape of your documents consistent. Further, it can be extremely costly to discover all the shapes of data you actually have if you initially didn't treat it as important. More often than not, it is useful to use tools that guide you into being disciplined along the way.

<comment><USER12> I use C# with Mongo. When I get a Collection<T>, the only thing I can put in the collection is a strongly type collection and my Linq queries are strongly typed. The compiler enforces consistency.

<comment><USER9> Right, but can you _ensure_ that the only thing that ever connects to your datastore (even to perform auxiliary/admin actions or quick data tweaks) is using that code in strongly typed mode? Otherwise you can't be _sure_ what's in your data.

<comment><USER12> I can't be be sure that a developer doesn't go behind the scenes and change Sql server either.

But programmatically, i do ensure only one microservice (out of process) or module (in process) is writing to a collection. When I'm using an RDMS and developing a system, I also ensure that only one module is writing to a subset of tables that make up an aggregate root. I would never have a system where a bunch of programs are writing to the same tables willy nilly without going through a common interface.

<comment><USER9> > I can't be be sure that a developer doesn't go behind the scenes and change > Sql server either.

You basically can. The difference is that it's quite obviously notable to a developer of any level that changing the schema in the database is something that should be done with some forethought and care. And then when that change is made, all applications accessing the database get the same new view of the schema so you're not going to have two different clients with a different idea about the schema trying to operate on the database at once because schema is global.

Making a change that suuuuubtly alters the way data is stored in an unstructured object is the kind of thing that's really easy to overlook in a pull request.

Your "only one module" rule is laudable, but you've also got to make sure that module can do _everything_ you'd _ever_ want to do to the database, including all the "one off" data mangling admin tasks anyone occasionally has to do. Otherwise it will get bypassed. Case in point I used to use an ORM heavily, but it wasn't possible to express everything in that ORM, so where that broke down we had to resort to manual sql. Add a few developers to the equation and you don't _know_ _exactly_ the format of your data.

Good schema management practise also means you end up defining all of your schema mutating operations as migrations, leaving you with a rather vital log of how things have changed over time and a good pinch-point to catch inadvisable changes to schema.

<comment><USER12> _You basically can. The difference is that it 's quite obviously notable to a developer of any level that changing the schema in the database is something that should be done with some forethought and care._

And if they change the schema in Mongo, with the official C# driver, by default, any program that tries to read the collection<T> and the document in the databases doesn't match the C# class, you'll get a loud and obvious error at runtime.

Of course if you _want_ to have the flexibility of having objects change in the data store not affect downstream changes, you can decorate your class with [BsonIgnoreExtraElements] attribute.

 _You 'll get all types of And then when that change is made, all applications accessing the database get the same new view of the schema so you're not going to have two different clients with a different idea about the schema trying to operate on the database at once because schema is global._

My contention is that you should not have two "clients" operate on the same schema. All clients should be using one module. I'm not advocating that microservices are the one true way. I'm saying that all clients should be using the same module, microservice, or stored procedures (well I hate stored procs for that type of stuff, but that's another rant)

 _Making a change that suuuuubtly alters the way data is stored in an unstructured object is the kind of thing that 's really easy to overlook in a pull request._

There is nothing "unstructured" about a data class (POCO/POJO) in a strongly typed language. Yes you can operate on a Mongo Collection in .Net by getting a Collection<BsonDocument> but most of the time you're going to get something like a Collection<Customer> and the compiler is not going to allow you to insert, search, etc. anything but a C# defined Customer with C# defined data types.

 _Your "only one module" rule is laudable, but you've also got to make sure that module can do everything you'd ever want to do to the database,_

That's the beauty of .Net, Linq, and expression trees. You can define your repository with a method of something like:

Find(Expression<Func<Employees,bool>> query) {...}

and the client can pass in any arbitrarily complex, strongly typed, Linq expression and your repository can pass that expression to the Mongo driver and it will translate that to Mongo query. It gives you even more flexibility because if later on you decide to use an RDMS, those same client queries can be translated to Sql by the Entity Framework driver.

But even if you don't want to go as far as "one true module" for your data, there is no reason not to have one module that defines your data types. Anyone querying against or inserting into a collection<T> will always have the right document definition of course you can put all of the definitions into a Nuget package and it will still be obvious when changes were made because your nuget package will be versions.

 _including all the "one off" data mangling admin tasks anyone occasionally has to do._

A one off type of admin task wouldn't be part of your production flow and you would probably bypass any abstraction that you had - including stored procedures, views, etc.

* Otherwise it will get bypassed. Case in point I used to use an ORM heavily, but it wasn't possible to express everything in that ORM, so where that broke down we had to resort to manual sql. Add a few developers to the equation and you don't know exactly the format of your data.*

There should always be one team responsible for your business objects (in DDD your aggregate roots). Why would you let any one developer change your underlying data store without a code review and/or pull request?

 _Good schema management practise also means you end up defining all of your schema mutating operations as migrations, leaving you with a rather vital log of how things have changed over time and a good pinch-point to catch inadvisable changes to schema._

If I'm using a strongly typed language like C# and I'm defining my documents based on a class. My Employee.cs file (and all of the child classes) are in sync with my Mongo document store. The language ensures that at compile time. "knowing my schema changes" is simply a matter of doing a "git blame" on the Employee.ca file.

Even if I'm not abstracting all of the data retrieval in a repository, I don't see any reason not to at least have a Nugst package of all of my POCOs that define the documents in my collection.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> >MongoDB has some problems with spinlocks,...Interesting enough is that this situation is getting better between releases (but it's still quite significant), for example here is comparison of throughput for 3.2 and 3.4:

Is there an image missing or something?

<comment><AUTHOR> Hm...no, it's right there, below this phrase [https://imgur.com/a/vN0Q3](https://imgur.com/a/vN0Q3)

</comment></comment><comment><USER14> A bummer that VM's were used. I have used packet.net to provision bare metal servers for the purposes of benchmarking. The server specs are close to the same servers techempower uses as well.

</comment><comment><USER15> There is absolutely no good reason for anyone to use MongoDB ever, its just such an amazingly rotten database that its astounding how much hype it generated.

<comment><USER16> *Today. The thing you're forgetting is that Mongo was actually somewhat novel at the time it was released. I've heard at least two stories of engineering teams who felt that their specific product couldn't have scaled the way it did and they wouldn't here today without Mongo, for whatever reason. I've heard the words "it was the best engineering decision we ever made" from one team who's company ended up selling for 8 figures.

You're being hyperbolic. Yes, there are so many better choices for databases out there. There are also many worse choices. Mongo is very hard to recommend nowadays, but unless you go in completely ignoring its problems its not like your company is going to go up in flames.

<comment><USER17> > I've heard at least two stories of engineering teams who felt that their > specific product couldn't have scaled the way it did and they wouldn't here > today without Mongo, for whatever reason. I've heard the words "it was the > best engineering decision we ever made" from one team who's company ended up > selling for 8 figures.

Do you expect to hear them say, "Yes, choosing MongoDB was a bad decision and our production infrastructure is currently on an unwieldy, slow, dangerous piece of crap" and then go on to sell the company for tens of millions of dollars?

Do you expect people to admit the real reason they're using MongoDB, which, in 99% of cases, is "we don't know how to use SQL and are really perturbed that anyone thinks we should have to learn"?

It is true that MongoDB only spontaneously combusts occasionally, but that doesn't mean the choice is of negligible importance.

<comment><USER16> These were private conversations, professional to professional, not conversations in the context of their sale. Maybe there is confirmation bias, but they could have just as easily said "Mongo was a piece of crap, we replaced it, it took a lot of engineering hours."

All of the complaints I've seen against Mongo are from people who read Aphyr's blog from their SQL High Horse and say "ha, look at those dirty Mongo peasants, can't you see that one in every ten million reads are inconsistent under high load? Why would anyone use this crap?" Use it in production, even under significant load, and you realize that sure you might hit a snag every once in a while, but its tolerable. It works fine. Its not trash. Its adequate. Understand the problem you're trying to solve. Understand Mongo's limitations.

<comment><USER7> _All of the complaints I 've seen against Mongo are from people who read Aphyr's blog from their SQL High Horse_

Nope, my dislike of MongoDB the technology and distrust of 10gen/Mongo the company is 100% based on real-world experience.

By the way, one-in-ten-million means several times a day. And it was a LOT more frequent than that...

</comment></comment></comment></comment></comment><comment><USER18> TL;DR: Use PostgreSQL.

<comment><USER19> Tweak your tests till PostgreSQL looks like the best choice. FTFY

<comment><USER20> After reading this comment I went ahead and read the article. I am having trouble finding a case where it seems like the tests are biased in Postgres's favor but I don't know very much about MongoDB so could be missing something.

Large numbers of clients — really, any more than there are cores — are notably not a Postgres strength.

<comment><USER19> It doesn't seem like you read it. It's spelled out as directly as it can be.

> I assume this one is most important questions for you now. Why PostgreSQL is > underperforms so significantly? The answer is simple, we're doing an unfair > benchmark.

If PG doesn't perform well, it's unfair.

<comment><USER21> > Why PostgreSQL is underperforms so significantly? The answer is simple, > we're doing an unfair benchmark. As you may notice, we were indexing only an > ID in a document for MySQL and MongoDB, and an entire document for > PostgreSQL.

That's hardly biased after and very much before.

<comment><USER19> Three systems treated the same, have different profiles. PG profile was low enough, the benching had to be altered, to get the results that they were expecting (or the reader to be expecting). If it was a technical implementation issue, why wasn't it done right the first time? Probably hubris, in an obvious case of tweak the testing methodology until you get the result you wanted.

</comment></comment></comment></comment></comment></comment><comment><USER9> A note to plot-drawers everywhere. Please don't hide your actual data-points by drawing a bezier curve over them.

<comment><USER4> And PLEASE just label the damn axes. Why do people go to all the effort to draw nice plots, write a giant blog post, but leave of the 1 minute it would take to make the plots interpretable without reading giant slabs of text to reverse engineer out what is actually in the plot.

/rant</comment></comment>


The Sudden, Mysterious Exit Of A Quora Cofounder Has Silicon Valley Baffled - <AUTHOR> http://www.sfgate.com/technology/businessinsider/article/The-Sudden-Mysterious-Exit-Of-A-Quora-Cofounder-3912160.php <comment><USER2> "We decided it was best for Charlie to step away from his day-to-day role at the company."

Whatever happened it feels like Adam wants to make the point that Charlie was essentially fired. "We" is a lovely ambiguous term. They royal "We"? I suppose it's meant to imply that Charlie also agreed. But "Best for Charlie to step away" is pretty telling. There's a whole slew of options you could use to make it sound like it was Charlie's idea (although he's probably too young to 'focus on his family'

I always thought Quora should monetize around an RFP type concept. It feels to me like 80% of users are there for technology recommendations from the horses' mouth.

<comment><USER3> I don't think it implies Charlie agreed at all, it actually implies the opposite. That's quite an ugly statement.

I'd personally be very hesitant to partner with Adam after reading this, considering how this incident played out. Well... who am I kidding, if I had the opportunity to found the next Quora I'd jump on it, but I'd be watching for knives the whole time..

<comment><USER4> "I'd personally be very hesitant to partner with Adam after reading this"

I dunno, there's clearly a risk there based on his apparent behaviour here, but there's also an obvious opportunity - who'd _not_ want a cofounder who's not only prepared but also able to dump $400mil into his own B round?

<comment><USER5> I think you mean $40mil since the total was only 50.

</comment></comment></comment></comment><comment><USER6> The best speculation I've seen is that someone (Yahoo?) is buying Quora, with onerous earn-out provisions (1/2/3/4?), and letting Charlie leave now would accelerate his vesting compared to remaining until acquisition and then leaving, if he didn't want to work for the acquirer.

I've met both Adam and Charlie (and Marc and much of the rest of the Quora team), and I can't see Adam/Charlie having a falling out over any personal or professional issues as a likely cause.

The weirdest thing IMO is that Charlie has totally disappeared from online (FB, Quora, etc.). Either it's to avoid being asked questions, or some kind of personal issue. Either way, I wish him the best.

<comment><USER7> While I am all Quora'd out -- I really do hope that Yahoo would buy them.

I've said many times on HN that Yahoo needs to start getting REALLY aggressive in the valley to stay alive; they need to be investing in every startup that comes along and acquiring many more.

All the brain trust is being gobbled up by google and (even moreso, recently) facebook.

I personally think that Acquihires are a bad thing (TM) for the state of our industry... but if Yahoo has any hope in hell, they need to inject some innovative blood into themselves in a damn hurry.

(with that said, I am not sure that Quora is really all that innovative - their UX model was only good when they were tiny - but now they have far too large a signal to noise ratio that is exacerbated by their UX implementation (hijacking typed text, @s etc etc etc)

<comment><USER6> IMO yahoo needs to exit more bad people than bring in new good people. I wouldn't sell to them (well, I would, but only for FY money for both me and everyone on the team, with a 2y earn-out) until it is clear they've liquidated all the dead wood. (although I'd love to get to be the liquidator-of-dead- wood... the Romney quote would be appropriate.)

<comment><USER8> who would that 'Fuck You' be directed to, your customers?

<comment><USER7> Nope, all the nay sayers in middle school.

<comment><USER6> Actually the only people I'd "FY" to are landlords in Palo Alto (if I had $100mm, I'd buy a house in PA for $3-5mm, even if it wasn't a great financial decision...), and gas stations (Tesla Model S...)

</comment></comment></comment></comment></comment></comment><comment><USER9> For what it's worth: this article is syndicated from Business Insider. It wasn't written by San Francisco Chronicle staff.

Here's the original: [http://www.businessinsider.com/the-sudden-mysterious- exit-of...](http://www.businessinsider.com/the-sudden-mysterious-exit-of-a- quora-cofounder-has-silicon-valley-baffled-2012-10)

</comment><comment><USER10> Seems like they were going to split directions at one point or another. Sad to see this happen as I love Quora but unfortunately, investors are in the business of making money, not building amazing user-friendly webapps.

Is Quora a great service? Absolutely. Is Quora something I would be incredibly sad to see die? Without a doubt. Is Quora ever going to make enough money to cover costs? Probably not.

This leaves a sale as the only possible exit. Adam is taking the unsexy role of being the business guy that drives Quora towards this conclusion. Great product and engineering minds will quit (especially with the departure of Charlie). People will cry out about how "the Quora I loved is dead" and new features will prompt blog posts like this one: [http://www.bothsidesofthetable.com/2012/09/10/the-misstep- of...](http://www.bothsidesofthetable.com/2012/09/10/the-misstep-of-quora-and- the-importance-of-trust-amongst-your-community/) . But Adam has no choice, either he does this or the company dies and everything that is good about it is lost.

<comment> yo-mf That blog post by Mark was 100% on point. There are legitimate growth tactics, and then there are growth tactics that go over the line. Quora recognized they crossed the line on that one.

That being said, they will sell, probably by year end or early next year.

<comment><USER11> The question is, who's going to buy a Q&A site with a small user base for $400MM+?

<comment><USER7> As RDL said, Yahoo is the best likely acquirer and IMO specifically because they need to hedge against Google and FB grabbing up everything in their path.

</comment></comment></comment></comment><comment><USER12> I just went to Quora.com and see nothing that would convince me to spend more than 30 sec. there. They need a better home page to engage potential users who are curious about what that site is. A one sentence blurb about solving all my problems doesn't make me believe it. I want to see examples so I can see exactly what kind of problems and how they will be solved. E.g. on Stack Overflow there is a list of questions and answers that are being asked.

<comment><USER13> Quora's Expert's Exchange inspired blurring of text to hold content hostage is anything but encouraging.

It's user contributed content. Stop treating it with such disrespect.

<comment><USER14> Amusingly the hipster SV-startup is doing it even worse than the venerable expert-sexchange (on the latter you can at least scroll down to see the unblurred content).

And to add insult to injury quora-accounts are _free_ anyway. Why do they strong-arm users into creating what will ultimately be 99,9% throwaway accounts?

<comment><USER15> They ask your FB account to "confirm" who you are if you want to interact (view is still free for throwaway email), not just e-mail. Of course the FB account can be a throwaway as well :).

<comment><USER7> I don't think that was always the case. I joined Quora very early, and I have never had an account on theFacebook.

I did, however, recently delete my Quora account after I didn't like what they were doing with privacy (Lack thereof)

I haven't been back, and while I thought there was some good conversations - the UX at Quora is atrocious. I had a hard time sort wheat from chaff in their feed, the visual differentiation between textual elements in the feed emphasized the wrong stuff. Their mobile view, desktop view and native mobile client view all had separate experiences ad visually didn't match.

There are a lot more things I can say about the UX/UI - but in the end, I am happy I deleted my account.

</comment></comment></comment></comment></comment><comment><USER16> Eh, it happens. Reminds me of the PG quote: "Practically all start-ups internally are disasters... and they just hide this from the outside world."

<comment><USER17> It's never pretty to know how sausages are made

</comment></comment><comment><USER18> > _The answer makes one good point, though: D'Angelo did invest his own money > in Quora, basically buying sole control over the company._

The first clause (investing money) is a much less profound statement than the second clause (buying sole control).

In order to buy sole control, he set the valuation of the new shares at something that washed out the "A" round guys. That should be a giant red- flashing signal to everyone involved.

<comment><USER19> I've recently started trying to understand how these dilution events occur. I was wondering if you could better explain what happened in this case so I could further my understanding.

<comment><USER20> Its fairly straightforward. There is 'money' and there is 'stock'.

Money funds day to day operations, pays salaries, power bills etc.

Stock determines ownership, and in most corporations governance.

Now day to day you spend money and ideally you also get revenue. If the revenue that comes in for any given month/quarter is more than the money going out that month/quarter then you are 'operationally cash flow positive' meaning that other than something like a big lawsuit or a promissory note coming due or some big financial event you can keep working and the lights on. It doesn't necessarily mean you can hire anyone or 'grow' or fund a PR campaign.

Then there is stock which represents ownership in the company, there can be multiple classes of stock which convey different rights, and there can be corporate bylaws which change how decisions are made while private vs public, but for the simple case we'll assume that 1 to 1, one share of stock is worth 1/(total-stock) of the company and exerts an equivalent amount of control. When you make a decision for the company you at the board level you effectively 'vote your stock' when you vote. If 50.1% of the stock votes one way that is the way the decision goes.

So lets consider a couple of scenarios:

Lets say the Company is :

       1,000,000 shares
       Investor A - 10% stock (100,000 shares)
       Investor B - 15% stock (150,000 shares)
       Investor C - 15% stock (150,000 shares)
       Founder A  - 25% stock (250,000 shares)
       Founder B  - 25% stock (250,000 shares)
       (everyone else in the company) - 10% remaining stock.

Now the two founders, if they agree they can get their decisions ratified by the board with one additional investor voting with them. The 'value' of the company is price-per-share * total shares. So lets say this company was valued at $10M so each share is 'worth' $10.

Now you need more money (revenues aren't covering it) so you try to sell more stock which is going to change the numbers around. Lets say you need $10M for the next 24 months and none of the investors want to invest any more money. You've got a crisis. But if you are also independently wealthy you can say "I'll put in the $10M but I'll take 2 million shares." So the 'totals' after that transaction are 3 million shares in total (up from 1 million) and as a strict percentage we've got:

       3,000,000 shares
       Investor A - 3.3% stock (100,000 shares)
       Investor B - 5% stock (150,000 shares)
       Investor C - 5% stock (150,000 shares)
       Founder A  - 8.3% stock (250,000 shares)
       Founder B  - 75% stock (2,250,000 shares)
       (everyone else in the company) - 3.3% remaining stock.

Founder B now has 'sole control' because they have enough stock to make any decision, vote their own stock, and have that decision be ratified.

<comment><USER21> So in this scenario, does it also mean that the shares are now worth less too? As in they are now worth $3/share ($10M/3,000,000) whereas before they were worth $10?

<comment><USER22> if you re-did the maths with the same guy buying 1,000,000 shares at $10 a share then they'd still end up with a controlling share in the business (and the business would indeed be worth $20M since it was worth $10M before and now has an extra $10M in cash, meaning that shares would still be worth $10 each).

so i'm not sure why the original example needed to place an odd value on the newly issued shares. as far as i can tell, it just muddies things.

i wrote this on rights issues, which is kind-of related (works through a similar kind of argument, except this time framed so people keep the same fractional shares) - <http://acooke.org/cute/EnersisEnd0.html> [edit: just fixed url] (i'm no expert, i was just interested in that particular case in the chilean press recently).

in short: you don't need to screw anyone over. it can just be that the person putting most money in ends up with most of the ownership.

the two key points are: (1) people need to agree on the company's value before; (2) the company gets the cash (and so its value goes up). of course, that cash won't sit in the bank - but it's the company's responsibility (and the investor's hope) that it is spent in a way that increases the value of the company.

</comment></comment></comment></comment></comment><comment><USER23> _We still have ridiculously high engagement rate for 8% of our users, but that number hasn't gone up and nothing else we've done has managed to move the needle to get further users hooked._

This leads me to think: does the needle really have to go up? According to pg's latest awesome essay on growth, the answer seems to be _yes_. But as the hacker news site has shown, _no_ can also be a valid answer. pg's goal with hacker news is to keep a high quality of discussion, and not to grow the site to more users.

As you bring in more users, you are bound to reduce engagement of existing users; this is justified if the growth is an order of magnitude higher (eg. when Facebook went from ivy leagues to colleges to high school to public). But for a site like Quora, I doubt if growth at the cost of pissing off existing users is justified at all.

<comment><USER24> But let's be serious about the purpose of HN. It's to give PG and YC a direct advertising channel to people who care about the startup world. Maintaining a high level of discussion is just a tool to further that end, especially because as an advertising vehicle, a site's reputation is hugely important. Also, HN by itself is not a money-making product. Quora is.

The problem with Quora is that, more than any other social network in existence, their product is their customers. Quora doesn't have a product without high quality discussion on their site. The problem is that the steps required in maintaining that high level of discussion(active moderation, good community policing, etc.) often directly opposes actively getting more users because of the Greater Internet Fuckwad Theory. While I'm sure that Quora can grow their userbase more, I'm pretty sure that they're seeing a dropoff in total hits. At a certain point, they need to start improving their conversion rate in order to make more money.

<comment><USER23> _HN by itself is not a money-making product. Quora is._

Quora _is_ not a money-making product, it wants to be one. In their present incarnations, if they just inserted ads (just for argument sake), it is not clear that Quora would make more money than HN.

You can be a profitable company by just focusing on user engagement, and not on user growth. Quora's problem is that they raised too much money and now have to give their investors a return on their investment.

<comment><USER24> I probably should have been a bit more clear about what I meant. I meant that HN's purpose isn't to directly generate revenue for YC. Quora, on the other hand, is supposed to be a product that makes money.

</comment></comment></comment></comment><comment><USER25> One suspects there's a lot less going on than what everyone would like to think. (Thanks, ChuckMcM, for the nice post about money and stock.)

Mr Cheever is "something of a product design genius, and lots of people give him credit for Facebook's best features;" even the now-removed-from-Quora post says "to him the user came first and growth features would sacrifice that." That puts him in complete opposition to the guy (Mr D'Angelo, who to his credit is putting his money where his mouth is) who is paying the bills.

The problem is that almost every Q&A type site has the same issue as Quora: only a small percentage of its membership is actively engaged. The number cited by the article is eight per cent, and in my experience, that's about par for the course. Since revenues (and therefore stock performance) are directly tied to use, there are two ways to increase revenues, with implications regarding the user experience for both:

1\. Increase traffic, AKA "make the pie bigger". This means doing the kinds of things Mr D'Angelo probably championed -- the SEO Solution, playing nice with Google, low barriers to entry (i.e. Free). This is the tactic taken by most startups, since they're generally looking at Mountain View and saying "Gee, if we could just get our hands wet in THAT revenue stream, we'd be rich."

2\. Keep your existing userbase more engaged, AKA "get your customers to eat more pie". This means doing the kinds of things Mr Cheever championed -- making the experience better, providing more services to them, concentrating on getting lifelong customers rather than more customers for less time. Most startups aren't in it for the long haul; they're in it for the big payday.

The NYTimes obit of Arthur Sulzberger pointed out the difference. His family has always wanted to be in the business of disseminating the news; their competitors are in the business of selling advertising. Mr Cheever wanted to take care of users; Mr D'Angelo wants to see a return on his investment. If there was ever a startup in the position to do the former, it's Quora; I know my colleagues would dearly love to have enough money to where they wouldn't have to worry for a while how to keep the lights on.

But as William F. Buckley noted a long time ago, "Idealism is fine, but as it approaches reality, the costs become prohibitive," and that's when someone like Mr Cheever moves on to his next venture.

</comment><comment><USER26> _We all knew one of the commonsense edicts of Hollywood is_ "never invest in your own movie."*

\-- With the sound of silence, the Market has spoken.

<comment><USER27> Why is that? Simply because you have all your eggs in one basket? Or is it for the social proof and connections that comes from having someone else make the investment?

<comment><USER13> Having others buy in to your idea validates it. If you can't get investment for a movie it's probably a sign it's not very good, or the market for it is exceedingly narrow and might consist entirely of you.

<comment><USER28> I'm reminded of Klaus Kinski, who wanted to make Paganini desperately, but couldn't convince Werner Herzog it was a good idea. Kinski ultimately made it himself, and it's supposedly quite bad (I haven't seen it). At least that's the impression _My Best Fiend_ gives.

Then again, Clerks was famously paid for by a bunch of credit cards. I guess there's an exception to every rule.

<comment><USER29> Clerks budget was under $30K, about what a handful of people could pay for any adventure vacation. More of a labor of love than an investment.

<comment><USER28> True. I'm not even sure he tried to find outside investment.

<comment><USER30> This might be pedantic for this thread, I have to point out that Clerks wasn't really a "self financed" movie. At least in the sense that the final product you saw on theaters and on DVD was not paid for by Kevin Smith.

Smith did spend around $30k of his own money on production costs. The bulk of that was for film stock. (Similarly, Rodriguez spent $8k of his own money on Mariachi.)

Now, here's the kicker: Neither one of them spent a dime on film prints. They signed deals and let the studios take care of that. This is significant because if people talked about Clerks' or El Mariachi's budget in those terms, the numbers would be in the rane of hundreds of thousands of dollars.

To put it in perspective: Would you say you "self financed" your startup if a big multinational paid for all the servers and bandwidth from the get go? It's sorta like that.

Saying it in interviews makes for a better story ("College dropout makes major movie for $8,000!") but it's not really accurate.

<comment><USER28> I didn't know any of this, so I'm glad you took the time to explain it. Thanks!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER31> "The final straw was Matt Cohler joining the Board at the end of August. Matt's with Benchmark, and his involvement is there for the sole sake of getting the website turned around, on an upward trajectory, and _in shape to be sold_ so he could get a return on his investment."

I think the italicized bit is the most interesting part of the comment. It seems that that Adam wants to sell the site at some point? but to who? Also, interesting that he is building Quora to flipped it instead of making it into a valid business.

</comment><comment><USER32> Is Quora really struggling? My posting there is getting more and more engagement all the time (more importantly, this compete.com profile looks quite promising: <http://siteanalytics.compete.com/quora.com/>)

Also, how much does running Quora actually cost? If Adam D'Angelo has many Billions of dollars, I can't see them ever having a financial issue.

<comment><USER33> > _"If Adam D'Angelo has many Billions of dollars, I can't see them ever > having a financial issue."_

If they're not making money, they have a "financial issue" from day one.

<comment><USER34> This.

I'm not sure GP understands the difference between company finances and personal fortune?

<comment><USER32> cmon dont be patronizing, point is D'Angelo can float this thing as long as he wants

</comment></comment></comment></comment><comment><USER35> Looks like Business Insider is sneaking it's way onto the HN frontpage.

</comment><comment><USER36> What the hell is Quora?

<comment><USER37> It's a site that if you go to it you see only a login page allowing either Facebook or Twitter sign in, with no explanation of what it is or why you would want to give your Facebook or Twitter passwords to them or what they might do with them. (Yes, I understand how it really works but I am presenting how it looks to normal people.)

<http://www.quora.com/>

If you manage to find pages they expose to google to capture searches for information, you find it is like Yahoo Answers, except the answers are all blurred unless you agree to sign in and be tracked.

Not surprisingly, this user-hostile abomination of usability has commercially failed. For some bizarre reason the designer who created this nonsense is described as a usability design genius in the referenced article when it is clear from even a moment's glance at the site's usability that its designers are not fit to design a hole in the ground for tossing refuse.

<comment><USER38> I was able to get in through the employee page: <http://www.quora.com/about/team>

<comment><USER39> And that's their home page? What do these people do all day? Blow bubbles for shits and giggles?

</comment></comment></comment></comment><comment><USER40> I LOVE QUORA.

They have produced a system which is creating some of the best authored information online. Each time I get their weekly email, I lose about half of my day because each item in it is so amazing that I have to read it.

Watch Charlie Cheever's interview with TechCrunch recently. I think it's pretty telling that he was done with the company, it might have been the best call for him to leave.

[http://techcrunch.com/2011/05/27/quora-we-have-an- explicit-n...](http://techcrunch.com/2011/05/27/quora-we-have-an-explicit-non- goal-of-not-selling-the-company/)

</comment><comment><USER41> Why is this baffling? Founders quit or change all the time.

</comment><comment><USER42> I hate sensationalist headlines. This is not "baffling".

</comment><comment><USER43> It's just four comments, but they are worth reading on the SF Gate article:

[http://www.sfgate.com/technology/businessinsider/article/The...](http://www.sfgate.com/technology/businessinsider/article/The- Sudden-Mysterious-Exit-Of-A-Quora-Cofounder-3912160.php)

Pretty good example the bubble we live in here on HN.</comment>