Don't believe quotation websites - <AUTHOR> http://www.decisionsciencenews.com/2016/01/26/dont-believe-quotation-websites/ <comment><USER2> But do trust this one, it's fab: [http://quoteinvestigator.com](http://quoteinvestigator.com). I mean the top post there right now is that "a million deaths is a statistic" traces to Beilby Porteus, a classics scholar from 1759. How can you beat that?

Also, Wikiquote is good as a base.

</comment><comment><USER3> It's not only quotation websites. In Germany "If I Had More Time, I Would Have Written a Shorter Letter" is a well-known quote from Goethe - except that it isn't from Goethe. To the best of my knowledge it is from Blaise Pascal and it took me about an hour of research to be confident enough use the quote with this attribution.

This was way too much time spent for a simple quotation, so my question is: Is there a reliable canonical source for quotations? Maybe something good journalists use?

I know there are several quotation dictionaries but are they any good?

<comment><USER4> Interesting. I've always heard that quote ascribed to Niels Bohr.

Perhaps he was just the first Dane to use it. I guess in older times, you could get credit for a quote if you were the first in a country to use it. From [http://quoteinvestigator.com/2012/04/28/shorter- letter/](http://quoteinvestigator.com/2012/04/28/shorter-letter/) it looks like Benjamin Franklin was among the first Americans. But then again, what can we really trust?

Maybe we should just attribute all quotes to Mark Twain and be done with it.

<comment><USER2> > _But then again, what can we really trust?_

Textual evidence. The first demonstrable text wins, until an earlier is found. Sometimes it's fuzzy, because quotes morph (they get pithier over time). But most of the time it's clear enough, and the techniques for studying it are well understood.

Edit: The same is true in reverse, too: if a famous person really said X, it will be easy to find a precise textual source for X by googling. I don't mean a website claiming they said it (those are legion), but the original text, e.g. from their collected works, or an original newspaper interview. Since they're famous, that territory will have been trodden many times and there will be websites linking to it. Therefore if you can't find it, the famous person probably didn't say it. "Absence of evidence is evidence of absence" (hey, I wonder who said that one?) really works in this case.

</comment></comment></comment><comment><USER5> There's a book that only includes researched and vetted quotations: Respectfully quoted: A dictionary of quotations requested from the Congressional Research Service

</comment><comment><USER6> If you create a website with wrongly attributed quotes Google will pick it up. And the more people complain and link to your website as incorrect the more popular it will get and eventually people just start making memes and sharing on all social networks and then the quotes becomes true in the eyes of the googlers.

<comment><USER7> If enough people say that the quote is attributed to the wrong person then does it become fact like the redefinition of "literally"?

<comment><USER8> > If enough people say that the quote is attributed to the wrong person then > does it become fact like the redefinition of "literally"?

I think that's funny as a question, but has the wrong premise. There is no 'actual' meaning of words; they have meaning only by mass human consensus. (What is the actual meaning of 'flumbiliable'?) By contrast, there _is_ an 'actual' first utterer of a quote, whether or not there is any consensus on his or her identity.

(I suppose that you could argue, though, that it is only mass observation of a quote that makes it a quote _per se_ , rather than just something I said; if I mutter something under my breath, and it later occurs as a widely quoted line in a movie, then should it be attributed to me, to the screenwriter, or to the character who said it?)

</comment></comment></comment><comment><USER9> WikiQuote is quite reliable, despite what you'd think. If I hear a quote and want to know who _actually_ said it, WikiQuote usually has the answer, or can at least tell me it was _mis_ attributed.

</comment><comment><USER10> "Ceci n'est pas une citation"

\- René Magritte

("this is not a quote")

<comment><USER11> though, in magritte's case, the visual-linguistic paradox is central; to claim that a picture of a pipe is not a pipe requires the pipe to exist as a physical, real object. in this case, a citation is a linguistic creation, which can be faked but cannot exist as the real.

</nerdrant>

</comment></comment><comment><USER12> Relatedly, Martin Porter (of Porter stemmer fame) has a great pair of essays on the famous Burke quote about the triumph of evil (which, of course, he never said), starting with [http://tartarus.org/martin/essays/burkequote.html](http://tartarus.org/martin/essays/burkequote.html)

</comment><comment><USER13> "First they ignore you, then they laugh at you, then they fight you, then you win." \- Not Gandhi

<comment><USER2> [https://news.ycombinator.com/item?id=678282](https://news.ycombinator.com/item?id=678282)

</comment></comment><comment><USER14> Though it may seem fallacious, information garnered through the interweb is commonly infallible.

-Abraham Lincoln

Edit: Honestly, downvote this. HN is better than stupid, panderous posts like this.

<comment><USER15> Seriously? It's actually by Oscar Wilde.

<comment><USER16> From a tweet by him so it's probably fake.

<comment><USER17> I hear his account got hacked but I don't know whether it was before the quote or before the denial

</comment></comment></comment></comment><comment><USER18> "640K ought to be enough for anybody."

<comment><USER19> I always considered that quote something the rest of the world made up in jest, because in retrospect, that wasn't enough memory and it was annoying. im kinda surprised people apparently think it is something _anybody_ ever actually said.

<comment><USER9> And if anyone said it, it wouldn't be Bill Gates, because it wasn't Microsoft who set the memory limits of the IBM PC.

</comment></comment></comment><comment><USER20> "If you have heard of the person to whom the quote is attributed then it is wrong."

\- Moses

</comment><comment><USER21> "I hate quotation. Tell me what you know."

\- Ralph Waldo Emerson

Ironically, this quotation is itself routinely taken out of context, as it was being applied specifically to writers who fall back on quotation when discussing the subject of immortality.</comment>


Researchers crack Covid-19 genome signature - <AUTHOR> https://phys.org/news/2020-04-covid-genome-signature.html <comment><AUTHOR> > The machine-learning method achieves 100 percent accurate classification of > the COVID-19 sequences and more importantly, discovers the most relevant > relationships among more than 5,000 viral genomes again within minutes.

I only have a basic understanding of ML but isn't 100% accuracy this early on (limited dataset) an indicator of overfitting?</comment>


The Two Economies: The Top 40% and the Bottom 60% - <AUTHOR> https://www.linkedin.com/pulse/our-biggest-economic-social-political-issue-two-economies-ray-dalio?articleId=6327163206116667393#comments-6327163206116667393&trk=prof-post <comment><USER2> Quite an interesting article with lots of good insights. This was particularly interesting to me:

      The increasing disparity in financial conditions is a major cause of the slowing of growth, because those in lower income/wealth groups have higher propensities to spend than those in higher income/wealth groups. Said differently, if you give rich people more money, they probably won't spend much of it, whereas if you give poorer people more money, they will probably spend more of it, each motivated by the extent of their unmet needs and desires.

I intuited poor people spent more than rich people, but never understood why, but this actually makes a ton of sense.

<comment><USER3> It's the flip side of regressive taxes like sales tax. If Bill Gates buys another Ferrari, percentage-wise he spend far less of his resources than you did, even if you buy a ten year old Hyundai.

It applies at even a more realistic level. Take me, for instance. Our needs are met. We have no trouble making the payment on the house we bought fifteen years ago, food is always on the table, and our cars are long paid off. We have tech incomes, so that leaves us with surplus. Do we go buy Ferraris? No, we have no need of a Ferrari. Gadgets? We've got more gadgets than we need. We've run out of things to spend it on, so we save it.

Whereas the poor family will never run out of things upon which to spend their meager earnings, because they're barely keeping their heads above water at best. _" As a result, according to a recent Federal Reserve study, most people in this group (lower 60%) would struggle to raise $400 in an emergency."_ I'm sure there is more than one person reading this comment that could raise 1000 times that if they had to. Might hurt, but you could do it. I could, and I'm not even a $HOT_STARTUP millionaire, just some dude that caught the tail end of the Microsoft gravy train as it was leaving the station (and regardless, most of our money is capital gains and saving like a squirrel before winter).

And that's why I don't support the currently proposed tax cuts, even though we would probably benefit. Other people need those cuts far more than my wife and I do, and we'll get along just fine without them.

<comment><USER4> It's always amazing to me that people can't raise 400$ in an emergency as I'm in my mid 20s and make 70k a year and I have 100x that in the bank. It reminds me that I make a decent amount more than the median household income in the US and how lucky I've been overall.

<comment><USER3> _It reminds me that I make a decent amount more than the median household income in the US and how lucky I 've been overall._

We would all do well to remember, as it's easy to forget when you see your fourth Tesla on the way to work, amid a sea of BMWs (hi, Redmond!). Then I go visit my parents in Florida. Oh, yeaaaaah, I forgot that I'm fucking rolling it and I'm lucky as can be. And I did _not_ grow up rich, so you'd think it would stick better. <shrug>

But I do wonder if some of the political decisions made are a result of an extreme version of that. Take our sitting president, as one example. The man has never known want, never once has the price of a pair of shoes ever factored into his decision making. Is he a _complete_ dick, or just clueless and tone-deaf as a result of his environment? Kind of like how George W. Bush famously didn't know the price of a gallon of milk. You know who has two thumbs and _also_ doesn't know the price of a gallon of milk +/\- $1? This guy. I'm not ridiculously rich, and even I don't know. But I remember a time when I needed to know. But I can't remember the last president we've had that might have ever needed to know the price of a gallon of milk at any point in their life. Maybe Clinton, if one believes the story of his upbringing to be completely true.

<comment><USER5> > Kind of like how George W. Bush famously didn't know the price of a gallon > of milk.

Well, not famously enough for people to remember _which_ President Bush this story is usually told about, apparently (George H. W. Bush, in his 1992 re- election campaign.)

Also, AFAIK, it didn't actually happen, but is a myth that has grown up by mixing a common description of out-of-touch politicians with the actual story of George H. W. Bush seeming surprised by (at that point, common for many years) grocery scanners.</comment></comment></comment></comment></comment>


Donald Knuth Reflects on 50 Years of 'The Art of Computer Programming' - <AUTHOR> https://dentondaily.com/donald-knuth-reflects-on-50-years-of-the-art-of-computer-programming/ <comment><USER2> Isn't this heavily "adapted" from this NYTimes article from last year??

[https://www.nytimes.com/2018/12/17/science/donald-knuth- comp...](https://www.nytimes.com/2018/12/17/science/donald-knuth-computers- algorithms-programming.html)

<comment><USER3> Whoops! Indeed: [https://news.ycombinator.com/item?id=18698651](https://news.ycombinator.com/item?id=18698651).

I was wondering why Knuth set aside an entire precious Sunday for the "Denton Daily". Big NYT profile makes more sense.

Googling a sentence from their "David and Victoria Beckham keen to present a unified front!" article reveals the same plagiarism—albeit not from the NYT that time—so we have banned the site.

<comment><USER4> Why ban the site but leave this clickbait intact? (Rather than change the URL)

</comment></comment></comment><comment><USER5> I've wanted to dive into this book for a long time. For anyone who's taken the dive, is it worth the time it takes to read it?

</comment><comment> jerome-jh "He emailed an excerpt to [...]"

Has M. Knuth not stopped using email 40 years ago?

</comment><comment><USER6> So the Denton Daily isn't about Denton, TX

</comment><comment><USER7> With the utmost of respect for Knuth and his work... I sometimes joke that this book is the ultimate example of programmers being bad at estimating how long their work will take.

<comment><USER8> Think of Knuth as the Niagara Falls of "waterfall". In super slow-motion. The water has travelled about half of the distance down.

"Agile", he is not.

<comment><USER7> Stopping to create TeX was a world-class bout of yak-shaving. Like everything he's done, we're the better for it, but what a detour!</comment></comment></comment>


Show HN: Gradoid – Ask and Explore Nearby - <AUTHOR> https://play.google.com/store/apps/details?id=com.gradoid <comment><AUTHOR> Hello HN!

I am Shmi from Serbia and I have left my 3 years job as a software engineer to finish an idea I had in 2011. Gradoid was finally released in March on Play Store. It is an app that lets you ask questions and share information with people nearby and find places and events around you. I would like to hear your thoughts and feedback and hopefully you will find it interesting and helpful :)

Thank you!</comment>


Rickshaw: A JS interactive charting library based on D3 - <AUTHOR> http://code.shutterstock.com/rickshaw/

<comment><USER2> _(Completely irrelevant, but 2 minutes ago I found out that 'gnuplot' has a 'canvas' terminal. Check the demoes here:<http://gnuplot.sourceforge.net/demo_canvas_4.6> \- Not as pretty as Richshaw or D3, but very helpful if you don't have time to convert your plots to the new syntax)_

</comment><comment><USER3> [full disclosure, I used to work with the fine folks at Shutterstock, who created Rickshaw]

Rickshaw has been talked about here before, when it was released (original thread: <http://news.ycombinator.com/item?id=3340089>)

It's nice to see Rickshaw getting some love with the new scatterplot renderer based a subclassable base renderer, a test suite, and an updated home page.

Nice work!

</comment><comment><USER4> This looks good, what about the non standard browsers (IE<9, what did you think?)? I have been looking into d3 a lot lately, but if there is no good support for IE, then no way this can be used for business apps.

<comment><USER5> Agree. I'm not seeing any graphs in IE8. Graphs is for business, and businesses love their bad browsers.

<comment><USER6> From what i read rickshaw is based on d3. So if rickshaw essentially works as a high level wrapper around d3, then there is a possibility that we can get it working on older IEs with the usual d3 hacks.

<comment><USER4> A link to some of those hacks?

</comment></comment></comment></comment><comment><USER7> This looks really great, I've been looking for a fast charting library for my current project. I had been using flot but it's just a little too limiting. I was looking into building something like this <http://square.github.com/crossfilter/>, but I guess now I won't have to. I'll look into adding the handlebars that they have there to filter though, that's the one thing that's missing from Rickshaw imo.

</comment><comment><USER8> Well-done! I was wondering when someone would do this. d3 is brilliant -- I use it and find it incredibly powerful -- but it's fairly low level (although Mike Bostock may disagree). I'm happy someone put together a higher-level interface.

My only suggestion would be to revisit some of the colors used in your visualizations. Obviously, we all have different opinions about color, and you may be perfectly content with your choices. But if you ever revisit your color schemes, some useful resources to consider are:

<http://colorbrewer2.org/>

<http://www.colorsontheweb.com/colorwizard.asp>

<comment><USER9> To be fair, Mike has repeatedly talked about the importance of higher-level charting libraries in the d3 Google group.

</comment></comment><comment><USER10> Entirely random question, but is the CSS used to generate the homepage completely custom, or off a preset like Bootstrap? Looks quite nice.

<comment><USER11> I just did a view source to see if I could determine that and found some interesting results.

It does appear to be custom CSS, and very minimal, but what surprised me was that the HTML was as minimal as possible as well. There are no HTML, HEAD, or BODY tags.

Maybe not technically valid, but an interesting way to save a few bytes.

<comment><USER7> As mentioned by orftz it is valid HTML5, but what I did find interesting is that the footer is being inserted with javascript, does anyone know the reason for that?

<comment><USER11> My best guess is that it becomes a client-side include, making it easier to change one file and propagate out to all the pages without any server-side processing. Seems a bit silly for so small a thing, though.

</comment></comment></comment></comment><comment><USER12> This looks very nice, but I have to say its a little bit slow here (last Chrome, low-end comupter but not worse than users computer).

<comment><USER3> That's surprising. Is it the example here ([http://code.shutterstock.com/rickshaw/examples/extensions.ht...](http://code.shutterstock.com/rickshaw/examples/extensions.html)) that is slow? How is it slow (when you click on controls to customize the view, drag a slider, mouse over plots)? When it's slow for you is there something else on your computer chewing up a bunch of CPU?

A lot of the hard work is being done by d3, which is pretty well optimized for the tasks its doing. I'd be surprised, even on a 4-5 year old commodity desktop, to see laggy or jumpy behavior with fewer than a million or so plot points.

<comment><USER13> > fewer than a million or so plot points.

If you're using an SVG renderer, you'll get significant slowdown with many fewer than 10^6 points. It's not D3's fault. SVG backends build a complete DOM for the representation (so using JS with it is trivially simple), but browsers do not appear optimized for million-node trees. In my experience, you'll see noticeable slowdowns starting with ~30k points or so.

If you're using canvas, that's an altogether different story. (But then you're stuck doing object location yourself, for example)

</comment></comment></comment><comment><USER14> Would love to see some animation options.

</comment><comment><USER15> Using jquery on my current project throughout the site. For this reason I choose flot for my graphs...if I was to switch to rickshaw then I would need to use D3 + Rickshaw + Jquery. That is a lot of javascript library overhead. :-/

<comment><USER9> What you get for the amount of code that makes up d3 is a bargain in my book.</comment></comment>


Master of web puppets: abusing web browsers for persistent and stealthy - <AUTHOR> https://blog.acolyer.org/2019/04/12/master-of-web-puppets-abusing-web-browsers-for-persistent-and-stealthy-computation/ <comment><USER2> Service workers are a terrible mis-feature. Ask anybody and they won't know that things can keep running in the background when tabs are closed. Even most developers don't know about it.

<comment><USER3> That's great until you click "Send email" and close the tab. Then you expect things to continue to work.

<comment><USER4> The page could use an _onunload_ handler to ask the user if they really want to close the tab before the email has been sent.

<comment><USER3> That's what happens now, but it's really not great UX.

Typically by the time the user reads the modal dialogue telling them not to close the window, the email will be sent. The page then needs to make clear "hey that thing we just said? You can ignore it now".

I appreciate the suggestion, but it's just a very confusing and disruptive approach to solving the problem.

</comment></comment></comment></comment><comment><USER5> PeriodicSync is not part of any specification according to MDN.

The article says: "This page installs a service worker (the Servant) when loaded in the browser, and uses background sync registrations to keep the Servant always alive."

Without periodicSync is this a realistic scenario?

</comment><comment><USER6> It doesn't make sense for service workers to need to keep running after I have closed a tab. I then need them terminated for sure. No exceptions.

<comment><USER7> Service workers are used to listen for events for browser notifications.

That's the only legitimate use I know for a service worker to be alive after the tab is closed.</comment></comment>


Fonts for web design: a primer - <AUTHOR> http://dev.opera.com/articles/view/fonts-for-web-design-a-primer/

<comment><USER2> I don't understand one thing & I will really appreciate if someone can answer this for me. Suppose, I've made a PDF for my customers and PDF uses either Calibri or Gerogia then will these fonts be available on all platforms? I mean will customers be able to read the PDF that uses Calibri or Georgia on all OSs? Please enlighten me. Thanks.

<comment><USER3> Fonts can be embedded into PDFs, if I remember correctly. Most PDF creators handle this for you automatically by default.

<comment><USER4> They can also be fairly easily pulled out of PDFs, if you need it for another purpose.

<comment><USER5> Which probably infringes the copyright on the the fonts.

</comment></comment></comment></comment><comment><USER6> All right, answer me this question.

If there's anything that proves that you're hip and cool and just the smartest thing since Einstein, I'd guess that even more than trashing PHP, it's got to be trashing Comic Sans.

Why does Comic Sans get berated for "being used too often", when nobody says that Times or Arial, for example, are used too often?

Is it trashed for "being ugly"? It can't be "ugly" and "used too often" at the same time, any more than an ugly house can be photographed too often. Also, what does "ugly" mean? Illegible?

Personally, when I'm judging how legible a font is (how easy it is to read when it's small, for example), I have to say that Comic Sans does very well.

Perhaps it's a polarizing design, where some people just hate it, and it's better to bore everybody than to cause that level of heartburn to those of a more sensitive persuasion. Is that it? If so, who are these people, exactly? The general public, I think, really has more important things to worry about than somebodies font choice, so who are these delicate flowers that we're protecting?

I would just be interested in knowing where this animosity is coming from, and whether it's based on anything real, or is it like metro-sexual fashion preference, and it's only based on "what's in"? (Or in this case, "what's out")

<comment><USER7> Typography has a long history and tradition. Rules that might seem pedantic to the outsider. But those rules and traditions give anything touched by someone who know's what she is doing that special polish. "So what?" you might ask, but sometimes it's nice to see that someone cares about small things. Like correct quotation marks.

Truth is, there is nothing wrong with Comic Sans as a font. It is perfectly alright to use it for your children's birthday invitations. Or if you are a peditrician for your door sign. There are nicer fonts for such jobs but if you don't want to spend any money, using Comic Sans is perfectly alright.

But you cannot just use any font for any job. Well, you can, and Comic Sans may be every bit as legible as Verdana. But there is always a aesthetic side to the question, which font you should use. It's not just about legibility. It's about using the right tool for the right job. Comic Sans was never intended to be used in menus of classy restaurants. You just don't do that. And in that respect, Comic Sans has just become overused. Comic Sans may be the most visible sign that it's no longer professionals who are in charge of picking fonts. I (not being a professional myself) don't think that is such a huge problem. But it would be really nice if the general public knew a little bit more about typography so that everything's not lost.

<comment><USER5> _"Comic Sans was never intended to be used in menus of classy restaurants."_

No, they must use Vivaldi, ditto wedding invitations. ;0)>

</comment></comment></comment><comment><USER8> There are lots of good articles out there on font choices for the web and this seems to be a reasonable, if cursory, introduction. I personally dont care for either Times and prefer Georgia for a serif typeface that works for both monitors and print. Verdana is a good choice for headings.

If you havent thought about fonts, I recommend spending an afternoon googling around. There are lots of good articles. Font selection is one of he areas where a lot of web developers fall down, usually by using too many or ones with poor readability.

<comment><USER9> _usually by using too many or ones with poor readability_

Very true, and if I had to distill the advice in the article down, most developers would go far by starting with these guidelines:

1) only use serifs for headings.

2) only use sans-serifs for body copy.

3) keep the number of different fonts on the page under 3 at most, including the logo and any other graphic flourishes.

<comment><USER7> Guidelines one and two have no empirical support. It seems to be the case that choice of font is merely a aesthetic decision.

See:

[http://scholar.lib.vt.edu/theses/available/etd-102999-110544...](http://scholar.lib.vt.edu/theses/available/etd-102999-110544/unrestricted/WeisenmillerDissertation.pdf) (PDF)

<http://www.laurenscharff.com/research/AHNCUR.html>

[http://sigchi.org/chi95/Electronic/documnts/intpost/tst_bdy....](http://sigchi.org/chi95/Electronic/documnts/intpost/tst_bdy.htm)

<http://www.surl.org/usabilitynews/22/font.asp>

[https://eldorado.tu- dortmund.de/dspace/bitstream/2003/24419/...](https://eldorado.tu- dortmund.de/dspace/bitstream/2003/24419/2/dissertation_liebig.pdf) (PDF, German)

<http://www.designtagebuch.de/die-gefuehlte-lesbarkeit/> (German)</comment></comment></comment>


The myths of bioinformatics software - <AUTHOR> https://liorpachter.wordpress.com/2015/07/10/the-myths-of-bioinformatics-software/ <comment><USER2> Much of this is equally applicable to other fields, but I very much disagree with point 2. Every lab should have one or more _programmers_ , people who are professionals at writing software, and who guide researchers in their software development. For both efficiency and accuracy reasons.

But of course a software developer at a university is, at best, a 'lab assistant', but more likely regarded to be on the same level as the janitor (both in respect and in pay). With the result being thousands upon thousands of shitty programs you wouldn't wish work on to your worst enemy.

But hey, cool with me, I carved out a consulting niche in cleaning up such messes in exactly that environment. But man could a lot of money be saved, and a lot of much better work be done, if only researchers (and the hierarchy above them) would recognize that software development is both _critical_ to pretty much any research today, _as well_ as something they cannot just pick up on the side.

<comment><USER3> Problem is that scientists get paid pretty terrible wages, though this is expected and pretty much drilled into you since undergraduate 'If you wanted to be paid for your brains, you should have gone into finance' and so on.

On the other hand, programmers and software developers are not likely to put up with being paid peanuts when there are plenty of well paying jobs out there. I can't see much reason why many of them would stick around.

<comment><USER2> "Problem is that scientists get paid pretty terrible wages"

I can't claim to know the situation everywhere, but apart from the postdocs (and I guess the 'adjunct' temp positions endemic in the US), assistant and full professors actually get paid quite well (I know of Western Europe, AU/NZ, Canada, and I think it's the same in most places in the US too - although I don't know first hand there). Funding agencies _would_ fund software people. There is no _will_ to change it though, because hey I wrote 5000 lines of C or Fortran back in the 80's when I was a grad student, so why can't you do the same today? I have a CD-Rom with a very good C++ compiler I've been using since the early 1990's, I'll send you a copy, you should try it out! (I paraphrased that last line, but I was actually told this less than 4 months ago).

</comment></comment></comment><comment><USER4> And the most long standing myth, which first started after the Human Genome was sequenced by Francis Collins and Craig Ventor (now working on human longevity) over 14 years ago: Bioinformatics software will single-handedly be responsible for discovering billion dollar drug targets. This is in large part why most early bioinformatics companies failed - due to lack of deliver on this front along with jangled software approaches that were being moved into the commercial world from academia. The reality is that most bionformatics software relies on old formal methods and is not geared toward true highly innovative discovery and data interpretation.

I do think however that we are entering a new age of bioinformatics and its associated data mining, interpreation, visualization and discovery tools which hopefully will push the bounderies of being less formal and more experimental. We need to make discoveries faster when it comes to Life Sciences.

I think new approaches in bioinformatics/datamining/data science/visualization will have the greatest impact in the areas of extending human lifespan. This is what Craig Ventor, Google Calico Labs, SENS, GenoPharmix, Buck Institute are all working on now.

<comment><USER5> I also think it has to happen on the web (open or closed), instead of the desktop software.

Also, d3 wont be able to pull it off. If we do a comparison, i think that d3 is MooTools, wee need to get to ES6/angular/react kind of libraries.

<comment><USER6> What do you feel that ES6/Angular/React do that d3 won't? They are for building user interfaces. d3 is for charting.

(Most bioinformaticians I know seem to use R).

<comment><USER5> It was a comparison. Once MooTools was the library to use, now its dead.

</comment></comment></comment></comment><comment><USER7> An important point in this article is the vital distinction between academic software and "general purpose" software. The goal of research software is to prove or exemplify a point explained in one or more papers. It should do so in the most direct and economical way for the researcher(s). It makes no sense to create multi-platform, software-engineering friendly software for this kind of use. In the last few years we have seen an untold number of complains that research software is not robust, user-friendly, etc., and it entirely misses this important fact.

<comment><USER8> The problem is that the "direct and economical way" tends to basically enforce bit rot and lack a reproducibility. It also tends to screw whoever inherits the project.

<comment><USER7> Reproducibility is an issue in all scientific fields, it is not something unique to computer science. Can someone easily reproduce experiments performed in a particle accelerator? What about an extremely complex chemical reaction? The answer to these problems is to have more people doing research in that area to make sure that the problem is well understood, instead of requiring that scientists slow down the research because it needs to first achieve some kind of "engineering reproduction" standard.

<comment><AUTHOR> Speaking for the chemical reaction - yes. That is exactly what should be possible. Some reactions are hard to reproduce and labs spend years trying to figure out how to do so. Without that you really don't have good science.

The key is .. can someone read your paper and reproduce your experiment and the results. If not, it's not valid; it's just a paper.

<comment><USER9> That's not true. Some types of chemistry cannot (legally) be reproduced, but they are still good and valid science. For a trivial example, consider the many chemistry papers based on measuring fallout effects from nuclear testing.

More prosaically, some things can be verified even when a chemical process cannot be reproduced. Protein crystallization is a tricky process with many irreducible results. Yet if you have a crystal, and can use the crystal to determine the protein structure, then you can verify that the crystal indeed contains that protein - even if you are unable to reproduce the chemical process used to create the crystal in the first place. Others can use the same sample to re-verify the resulting x-ray structure even though they also might be unable to reproduce the crystallization step.

</comment></comment></comment></comment></comment><comment><USER10> The first opportunity to comment on bioinformatics since my non-compete/nda is over!

This seems like a very sloppily put together list of _myths_ , but I'll bite anyway.

1\. Not true, but I think that's largely because much of the software used is closed so the FOSS community is largely anemic in the bio world. For the tools that are FOSS or BSD, I saw plenty of contributions, but the other thing to keep in mind is that it's not just about the programming. You have to have a certain level of understanding of the application domain to program a solution for it properly, and there are very few of these people around. I predict a huge uptick in demand and salaries for bioprogrammers.

2\. Is true. You need your own people on salary to program for your needs. I was the sysadmin part of a phd, sysadmin, programmer team and we were doing stuff that no-one else was going to do for us. You need to have your own programmer, and a good sysadmin, full stop.

3\. Is also true. Picking the right license is important because many labs are pretty tight on cash flow. Sure, they probably have millions going through them a month, but operating costs are super high and margins are lower than you may think. It was during my time in the genetics lab that I fully realized why FOSS was so important, and I think it's the future. (with a few key proprietary exceptions that no FOSS has matched yet, (think Elmer vs Comsol))

4\. Using a FOSS license makes this a moot point to address. Use GPLv3 code people, stop using BSD!

5-9: not worth addressing.

Anyway, my overall view of the field is this: with sequencing getting cheaper, the problem is in managing the levels of data being generated (sysadmin issue) and in interpreting the data for meaningful results (programmer/phd issue). Personally, I think that machine learning is going to be the right breakthrough to follow and apply to bio, and once we do that I expect it to take off to crazy levels. I'm talking sequencer in every doctors office, and artificial genetic manipulation becoming much easier and with more accurate predictions.

Also, the other thing everyone underestimates is the microbiome as an entity. You are more the bacteria that lives in you than you are you. Of course, I struggle to understand the science sometimes, I'm just a sysadmin, so take what I say with a grain of salt.

<comment><USER9> 1\. "the FOSS community is largely anemic in the bio world"

I'm shocked by that. I think of the bio world as having a lot of FOSS software. With BOSC it even has its own yearly (satellite) conference. By comparison, I work in chemical informatics, and think that FOSS availability in chemistry is rather less than biology. I've blamed money - chemists have a longer history of making money from their research than biologists.

Which research field do you think has a robust FOSS community and where there are also for-profit companies developing commercial in the same field?

2\. "You need to have your own programmer, and a good sysadmin".

You say that myth is true, while Pachter thinks it's false. Your disagreement is really more one of team size. Pachter's myth concerns "a large team." You have a team made of a handful of people. That is, Pachter wrote: "I agree with James Taylor, who ... stated that "... Scientific software is often developed by one or a handful of people."", which is what you have.

I can agree that it's not clear from the text that the myth concerns, having ~6 or more people in the team.

3\. Could you explain why your explanation makes the myth true?

Pachter gave the example of the UCSC genome browser. From its web site, "The Genome Browser, Blat, and liftOver source are freely downloadable for academic, noncommercial, and personal use. For information on commercial licensing, see the Genome Browser and Blat licensing requirements." Were you working in a for-profit genetics lab when you realized that FOSS was so important? Otherwise, how would a restriction like the UCSC one have affected you?

4\. I actually think the FOSS vs. licensing cost are somewhat orthogonal issues. I distribute my software under the MIT license, but only to those people who pay me about US $25,000. This is something the FSF encourages, as a way to bring revenue to a project. However, it only works because I'm not trying to establish some sort of "community" but prefer a vendor/customer relationship.

BTW, I think points #1, #2, #3, and #5 can be recast as "you need to build a community around your project." I think that's a myth in its own right.

<comment><USER11> "4\. I actually think the FOSS vs. licensing cost are somewhat orthogonal issues. I distribute my software under the MIT license, but only to those people who pay me about US $25,000. This is something the FSF encourages, as a way to bring revenue to a project. However, it only works because I'm not trying to establish some sort of "community" but prefer a vendor/customer relationship."

Why the MIT license then? Do you figure that people who paid $25k for the software aren't going to go upload it to github for all to see?

<comment><USER9> Correct. My clients are drug development companies. Very few of them distribute any sort of software, in part because often they would need to get legal to sign off on it. Even fewer provide support for the software.

</comment></comment></comment></comment><comment><USER12> As [https://twitter.com/madprime/status/619503684838387716](https://twitter.com/madprime/status/619503684838387716) points out, the argument that you're cheating the US Government out of public money by releasing without a non-commercial clause is bizarre -- everything the US Government releases is required by law to be released into the public domain.

<comment><USER13> Except that's not true? Most things release "by the government" had a contractor involved somehow, and government contractors have a different set of rules.

<comment><USER14> Are you suggesting scientists are "goverment contractors"? Never thought of myself as one.

<comment><USER15> What did you think you were doing when you got a grant from the NIH, NSF, or DOE? You entered in a research contract with the government.

</comment></comment></comment></comment><comment><USER16> Your data is more important than your code. Is the often neglected fact in bioinformatics. Whatever you do document your file formats.

</comment><comment><USER17> As someone how actually makes a living selling bioinformatics software, the problem is mainly due to how scientist view software. The code you write is seen the same way lab books are - basically raw data. Nobody publishes their lab books and all too often software is thought of as just an electronic lab book. It would be great if this changed, but it needs a change in how scientist look at software.

</comment><comment> bmir-alum-007 Disclaimer: I used to work at a Stanford bioinformatics shop.

There's a clear need of AWS-like features for bio/biomedical informatics specifically enabling sharing, security, reuse and anonymization of data (PHI), libraries (like R's bioconductor) and infrastructure (IaaS/PaaS/SaaS).

The issue is that some labs archive still archive their data on actual hard drives (USB and bare drives), making their data much less useful than somewhere readily available and sharable.

I think it's a huge (billion+) opportunity where the right execution would need loads of smart, consultingish customer service reps (huge overhead costs) to help researchers with coding, sysadmining and bio to some degree. Basically, a full-service (with self-service, a-la carte features) hosting company for bio / medical.

This space is only going to grow deeper and wider as more is discovered and confirmed about each gene, protein, pathway and each accompanying expansion in nosology. This sort of research knowledge is vital and unlikely to shrink. The main issues are that it would be a cash-intensive and undefensible business model because it requires paying lots of consultant/scientist brains and anyone can copy the model.

<comment><USER18> > There's a clear need of AWS-like features for bio/biomedical > informatics > specifically enabling sharing, > security, reuse and anonymization of data > (PHI), libraries > (like R's bioconductor) and infrastructure > (IaaS/PaaS/SaaS).

I tried to build a startup like this, basically a Heroku for bioinformatics, with a bunch of experienced biologist / genome folks. They just didn't get it and on my part, I guess I couldn't sell it to them. Part of it was snobbery, and institutionalized thinking. It was a big disappointment. Some one will do it, but until then it will crappy bioperl scripts, with no version control etc.

</comment></comment><comment><USER19> The article mentions code quality and license issues, and one of my favorites (MEME) seems to suffer a bit from both. I believe the first aspect is simply the result of being developed in a sequential fashion by different contributors (which is reasonable given the environment).

The main problem is that the license rules out using the software for 'commercial purposes' except under unspecified terms that would need to hashed out with the tech transfer office. I completely support the spirit of that construct, but it makes it difficult to advocate for in practice. At least in this case, GPL or LGPL would be a significant improvement.

<comment><USER9> The MEME commercial license is at [http://techtransfer.universityofcalifornia.edu/NCD/Media/MEM...](http://techtransfer.universityofcalifornia.edu/NCD/Media/MEME%20suite%20site%20license%20template%2004June2015.pdf) . How is this "unspecified terms that would need to hashed out with the tech transfer office"? The license is US$2,500 for a license, which as Pachter correctly points out is a small cost for most companies.

Also, while it would be a significant improvement to you, would it be a significant improvement to the science?

For example, I can't speak to MEME but I know of a couple other projects where the software is at low/no cost to academics and has a license fee for commercial use. This money is used to fund future development, which gives a funding source that is independent of grant funding. Pachter also points out this possibility.

It can be frustrating if some people cannot use a package due to license terms or costs. But it can also be frustrating to use a package where no one is available to answer questions or fix bugs - which is something that funding can address.

<comment><AUTHOR> If you are bootstrapped it is a huge barrier. And Meme is not that bad. There are others that are far worse. I once tried using Modeller purely for hobby projects (science was not even my day job) but was denied. That's a problem.

<comment><USER9> Not all business models are economically viable, and others are not obligated to make it easy to support your choice of a bootstrap business model.

My experience is that people who get a piece of software, even if for free, often want some support. If you don't give them support, some will complain. A company may decide that it's easier to deal with complaints about the lack of a free version for hobbyists than to deal with complaints about a user not getting sufficient (unpaid) support.

<comment><USER20> That's news to me, most companies seem to understand full well that if they want support on a free program they have to pay for it.

<comment><USER9> bbgm made two comments; one about a company under bootstrap, the other about "using Modeller purely for hobby projects".

My first paragraph was a response to the first comment. My second paragraph was about the second.

<comment><USER20> Oh, you were talking about the hobbyists?

That's easy. Tell them to RTFM, and if something doesn't work, have them submit a patch. That's not a heavy burden.

<comment><USER9> There are very few people who do bioinformatics as a hobby. The term "hobbyist" generally refers to people who are in a related field and want to dabble with a different set of tools, with no firm intention to do serious research in that field.

However, these hobbyists tend to be experts in their (related) field, and talk with actual customers or potential customers of the company. Word of mouth is important, and if the company tell someone to RTFM and submit a patch, then this may lead to a bad vibe. Or it might not. But it's easier to say "only paying customers" and have _no_ burden than to take on even the light burden of responding to non-paying users.

Also, some hobbyists will use their "hobby" status to do research on the cheap. (For a related example, some professors have their own company, doing work related to their research, and use their educational status to get software that ends up being used for work that helps the company.) They might, for example, have an idea that they want to "play around with", which might be competitive with the product. It's not a serious idea, "just a hobby", but they are curious to see if it's something interesting, so get a copy of the software, and use that to judge if the idea should be investigated more seriously. Or start a competitive company. Or publish a paper where they demonstrate that when the tool is used poorly, by someone who doesn't the tool, then it produces poor results.

Is that really a hobby, or is it self-delusion used to avoid committing oneself to a project?

I can't tell, and neither can a company. A policy of "paying customers only" makes it easy to decide. There are certainly other solutions, but is there a concrete advantage to taking on that burden, no matter how light?

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER20> Insisting bioinformatics software be non-free is pretty rules out any possibility anyone is going to build on your code. If this is the case, that's regrettable, but why seal the fate?

If they are afraid of companies using and abusing the software, just put it under the GPL and they will at least have repay the favour to the users and the community.

<comment><USER9> The essay gave an example of non-free project that others have built upon:

> One of the most widely used software suites in bioinformatics (if not the > most widely used) is the UCSC genome browser and its associated tools. The > software is not free, in that even though it is free for academic, non- > profit and personal use, it is sold commercially. ... As far as development > of the software, it has almost certainly been hacked/modified/developed by > many academics and companies since its initial release (e.g. even within my > own group).

Therefore, by demonstration, using a non-free license does not "seal the fate" and rule out others from building on your code.

Also, GPL does not require anyone to "repay the favor." There's no requirement to distribute modifications upstream or to "the community."

<comment><USER20> >There's no requirement to distribute modifications upstream or to "the community." No, that would obviously be a onerous requirement. The GPL strikes a reasonable balance between the individual user and the community of users.

I'm just saying the customers should be allowed to get the derived software on the same generous terms as the company received the original on. The customers are obviously not required to redistribute anything, but it encourages good behaviour.

<comment><USER9> If it's "obviously [an] onerous requirement" then what does "they will at least have repay the favour to the users and the community" mean?

You clarify that "customers should be allowed to get the derived software on the same generous terms as the company received the original on", but that assumes that the companies _have_ customers. Very few companies that use academically produced bioinformatics software have downstream customers of that software.

For the vast majority of companies that only use the software in-house, which is likely 99+% of all companies, how does using the GPL or any other free software license lead to the company repaying the favor? What's wrong for asking for payment in cash instead of other more nebulous contributions?

<comment><USER20> >If it's "obviously [an] onerous requirement" then what does "they will at least have repay the favour to the users and the community" mean?

The users will get the sources and the permission to use those sources so they do not have to be powerless and dependent on the company's good will to provide patches. I can't imagine why this is a difficult concept to comprehend.

>You clarify that "customers should be allowed to get the derived software on the same generous terms as the company received the original on", but that assumes that the companies have customers. Very few companies that use academically produced bioinformatics software have downstream customers of that software.

Yes, if they have customers, no matter how few, those customers should have all the permissions associated with free software. I don't see the problem here. It's not an unreasonable assumption that a nonzero number bioinformatics companies have a nonzero number of customers.

>For the vast majority of companies that only use the software in-house, which is likely 99+% of all companies, how does using the GPL or any other free software license lead to the company repaying the favor? What's wrong for asking for payment in cash instead of other more nebulous contributions?

If nothing else, the burden of maintaining a private fork, and integrating upstream changes with your own, can be an incentive to just send your changes upstream.

<comment><USER9> I have studied how this happens in my field, which is cheminformatics, not bioinformatics.

One company decided to 'sell' a GPLv2 product, that is, provide the product for free and sell a support contract. They had about 12 paying support customers. They ran into a problem in that some of their customers made local changes in order to add new features. This is one of the well-known advantages of having the source code.

However, it was difficult for the customers to contribute the code upstream. One reason is that some of the changes were considered, or could be considered, proprietary. This means they would have to deal with legal in order to get permission to send upstream, and they didn't want to do that.

As a result, when the vendor distributed new releases, the customer would actually integrate the changes each time. Or rather, _not_ integrate the new changes at all, because it was too much work each time. They ended up with code that was out of date (and buggy) because of the decision to make local changes that were difficult to integrate upstream.

The "right" solution would have been to work with the vendor to change the code and/or provide new APIs for what the customer wants in order to integrate the proprietary methods, but without fully integrating those methods. However, when you have the code Right There it's very easy to just go ahead and do everything. Talking with upstream to get consensus on changes, even from a vendor that you are paying, is more difficult than cranking out code.

As you can tell, this short-term decision to get code done NOW can to long- term problems. Frankly most of the customers don't have the software development experience to handle those problems. They are chemists who learned to program, not software developers.

The vendor polled all of their customers and found that while the customers _liked_ having the source code but had no real _need_ for the source code, and were more willing to use the traditional vendor/customer route to add new features than the free software/contribute upstream/"community" route. Another way to say it is that they had the money to pay for support, but didn't have the time to go through the community process.</comment></comment></comment></comment></comment></comment>


Skype launches integrated code editor for remote technical job interviews - <AUTHOR> https://www.geekwire.com/2017/skype-launches-integrated-code-editor-remote-technical-job-interviews/ <comment><USER2> Isn't this old news ?

<comment><AUTHOR> About 1/2 weeks, so I guess so, I didn't see it yet and found it interesting ;)

<comment><USER2> Yeah this is indeed interesting! I think a platform like hackerrank isn't the solution to tech interviews. Nor is whiteboard demonstration a solution. It's somewhere in between, and Skypes integrated code editor seems like a good fit for tech interviews - it takes into account the human factors. :)</comment></comment></comment>


Show HN: Bel language guide and source code with formatting - <AUTHOR> https://github.com/alephyud/bel <comment><USER2> This looks pretty good. The only thing I don't like is the coloring of tokens in the examples. It doesn't make them easier to read; it's just distracting.

<comment><AUTHOR> This is partly due to the fact that Common Lisp rules are used for syntax highlighting - so the function, macro and special form names are highlighted somewhat randomly.

<comment><USER3> You could change:

      ```lisp
      foo
      ```

To

      ```
      foo
      ```

It would probably look better with no highlighting. The original arc tutorial was just a plain text file.

EDIT: Submitted a PR [https://github.com/alephyud/bel/pull/5](https://github.com/alephyud/bel/pull/5)

You can see what it looks like here: [https://github.com/shawwn/bel/blob/085b39f5b8ee9e50b9776972b...](https://github.com/shawwn/bel/blob/085b39f5b8ee9e50b9776972b31a325dd458b0b3/README.md)

</comment></comment></comment><comment><USER4> Bel announcement and discussion: [https://news.ycombinator.com/item?id=21231208](https://news.ycombinator.com/item?id=21231208)

</comment><comment><USER5> How can I use Bel?</comment>


Ask HN: Best Tips and Pratices for a wannabe software consultant - <AUTHOR>

Hey guys. Just had a failed startup and I don't feel any desire to start all over again in the short run.<p>My team has the opportunity to get a contract, to make a mobile app for another company. So, I wanted to know from you guys, what are the best practices to make a software shop. I ask in a Software Engineering way, and in a marketing way. Thanks so much! <comment><USER2> Running a development firm is a lot more than just engineering and marketing. It's a full fledged business and everything that comes with it.

<comment><AUTHOR> Thanks! Do you have any experience running it? Could you help me?

<comment><USER2> I recommend reading this post: [http://www.kalzumeus.com/2010/03/20/running-a- software-busin...](http://www.kalzumeus.com/2010/03/20/running-a-software- business-on-5-hours-a-week/)

Some other gems are in here: <http://www.kalzumeus.com/greatest-hits/>

That is patio11's blog, he is a well respected member here.</comment></comment></comment>


CouchDB 3.0 - <AUTHOR> https://blog.couchdb.org/2020/02/26/3-0/ <comment><USER2> CouchDB is awesome, full stop.

While it's missing some popularity from MongoDB and having wide adoption of things like mongoose in lots of open source CMS-type projects, it wins for the (i believe) unique take on map / reduce and writing custom javascript view functions that run on every document, letting you really customize the way you can query slice and access parts of your data...

Example: I'm building a document analysis app that does topic + keyword frequency vectorization of a corpus of documents, only a few thousand for now.

I end up with a bunch of documents that have "text": "here is my document text..." and "vector": [ array of floating point values ...].

What I can do with couchdb is store that 20d vector and emit integers of it as a query key:

        var intVectors = doc.vector.map(function(val){
          return Math.floor(val)
        })
        emit(intVectors, 1);

Then I can match an input document's vector (calculated the same as corpus documents), calculate a 'range' of those vectors, pass it as start and end keys, and super quickly get a result from the database of 'here are documents that have vectors similar to your input'...

Super fun, quick and flexible to work with!

<comment><USER3> >CouchDB is awesome, full stop.

The problem I had with CouchDB is integrating it into a framework like Rails. CouchDB on its own does so much cool stuff. The "free" HTTP API and client replication via PouchDB are the two huge ones. But it just wasn't smooth enough to get the data out, use it where I wanted, and then save it back.

<comment><USER4> I had to write my own libs/helpers to interact and make it feel friendly to the developer when I used it with Rails in the past.

But after that, it was very nice.

<comment><USER5> Did you open source these by chance?

</comment></comment></comment></comment><comment><USER6> One interesting thing you can do with CouchDB is that you can have a webapp where a user can specify their own database and credentials and it works over HTTP(s). That's pretty unique. I'd love to see a SaaS using CouchDB and their "on-premise" offering just means the user provides their own database. I'm not sure how payment would work though - perhaps some verification proxy?

Firebase is the gold-standard for offline apps (as a service). CouchDB replaces Cloud Firestore, and Keycloak replaces Authentication. I haven't seen OSS equivalents of Cloud Functions, ML Kit, and the other things (e.g. In-App messaging, and Cloud Messaging). It'd be nice to have the entire stack of Firebase bundled as a group of OSS projects, including CouchDB.

Sad to see that per doc access control didn't make it in 3.0. Hopefully it'll be in 3.1.

<comment><USER7> Cloudant on IBM Cloud is CouchDB API/replication compatible and offers support for Apache CouchDB (1). Also, OpenWhisk integrates nicely with CouchDB/Cloudant and can even be a backing persistence for it (2)

(1) [https://www.ibm.com/cloud/blog/announcements/announcing- supp...](https://www.ibm.com/cloud/blog/announcements/announcing-support-and- a-kubernetes-operator-for-apache-couchdb) (2)[https://github.com/apache/openwhisk/blob/master/tools/db/REA...](https://github.com/apache/openwhisk/blob/master/tools/db/README.md)

<comment><USER6> Cloudant is awesome, but it's way too expensive IMHO.

<comment><USER7> Send me an email (in profile.) Would love to chat and see what we can do for you.

<comment><USER8> If you indeed work for Cloudant, please consider trying to convince someone to invest in PouchDB. It looks mostly unmaintained and it would be in IBM's and the community's interest to keep it running!

</comment></comment></comment></comment></comment><comment><USER9> I built two products on CouchDB 1.x starting in 2010 ... version three is another amazing step forward! For my more recent projects, I've replaced CouchDB with clustered PostgreSQL using JSON columns as I really enjoy the ability to write SQL queries for against the JSON and to use the built-in full-text search capabilities. I think both CouchDB and clustered PostgreSQL are amazing tools and it's nice to be able to choose between them as needed. The best advice I've heard is to choose CouchDB when you know your queries ahead of time and the data "schema"[1] is variable and choose PostgreSQL when you know your data ahead of time and your queries are variable.

[1] In this case, a JSON document but either with a JSON-schema or marshaled/unmarshaled into a strict type.

<comment><USER10> I've gotten the impression that clustered Postgres still isn't very straightforward to run. Do you mind elaborating on your ideal setup and point to some resources?

Thanks!

<comment><USER9> It's not straightforward at all but it's better than it was five years ago ... you can use something more "meta" like SymmetricDS ([https://www.symmetricds.org/](https://www.symmetricds.org/)). I haven't used it personally but a dirt simple way to get an HA, scalable PostgreSQL instance would be to use Amazon's Aurora DB.

</comment></comment></comment><comment><USER11> CouchDB is awesome and feels way ahead of its time. Its design docs are extremely powerful, to the point that you can build entire web apps with CouchDB alone (not that that's recommended anymore). Plus with PouchDB you can create offline-first apps that sync with a remote CouchDB instance.

<comment> code-is-code If you like PouchDB, you should also check out RxDB. It is build on top of PouchDB and is optimised for realtime-applications where you can subscribe to queries and stuff.

[https://github.com/pubkey/rxdb](https://github.com/pubkey/rxdb)

</comment></comment><comment><USER12> I haven't heard of CouchDB in quite some time, great to see it still improving.

I used it years ago when I was experimenting with Ionic[0]. What appealed to me was that I could use CouchDB (cloud) and PouchDB[1] (device) to and have a replicated copy of the data locally. The application was used in areas where network connection was very limited. Using this strategy I was able to ensure the mobile devices data was as recent as the last time it had a network connection.

[0] - [https://ionicframework.com/](https://ionicframework.com/)

[1] - [https://pouchdb.com/](https://pouchdb.com/)

<comment><USER13> I can confirm that the stack still works well :) We've been developing a cross-platform app for the German market - therefore the need of offline capability - since 2017 and never had any real issues with Pouch/Couch, that part just worked. The upgrade from Ionic 3 to 4 was was quite painful though.

For user authentication I've forked the nowadays unmaintained superlogin package [1], which still does a great job when keeping the dependencies up to date.

[1] [https://github.com/LyteFM/superlogin](https://github.com/LyteFM/superlogin)

</comment></comment><comment><USER14> Reducing max document size from 4GB down to 8MB seems hyper-restrictive.

For those interested, looks like the guts of CouchDB are going to be swapped out for FoundationDB.

[https://blog.couchdb.org/2020/02/26/the-road-to- couchdb-3-0-...](https://blog.couchdb.org/2020/02/26/the-road-to- couchdb-3-0-prepare-for-4-0/)

<comment><USER2> If you're trying to store single GB documents in couch, you're doing it wrong... Unless those are binaries you can usually fragment data logically across many documents, then write custom views to aggregate however you need to.

Updates on huge docs would be painful!

<comment><USER15> I agree in large with your point that multi-GB documents is perhaps excessive but this does create a heck of a migration problem for a lot of users that aren't even close to 4GB.

<comment><USER16> It does, but keep in mind for 3.0 this is a change to the default settings, not a hard cap. The idea is to give people lots of warning and time to do any migrations necessary prior to 4.0.

</comment></comment></comment></comment><comment><USER17> > – Updated to modern JavaScript engine SpiderMonkey 60

Yes ^^ !

Congrats to the team. These people are some of the nicest and most supportive devs I know of in the OSS community (or whatev').

They show a great deal of patience in their slack channel and are always welcoming and answering stupid questions from idiots like me.

<comment><USER18> <3

</comment></comment><comment><USER19> At this point why would you use CouchDB over something like MongoDB?

Seriously asking...

Over the past 5 years MongoDB has gotten a great storage engine, transactions, distributed transactions, multi master replication, first class change streams and is very very solid as a foundational piece of infrastructure you can rely on while CouchDB has languished. I can't imagine reaching for it in my tool belt when I need a document store over MongoDB but I'm obviously biased so I'm wondering if there is a lot I'm missing.

Obviously it's cool from a more open source databases standpoint — I love learning about how things are built and evolve over time.

<comment><USER20> MongoDB has _suspiciously_ amazing SEO and marketing. CouchDB's by contrast is awful.

As silly as that sounds as a reason to choose CouchDB it demonstrates where the respective company's priorities lie.

<comment><USER21> MongoDB is a an actual for-profit company, so of course it has marketing. CouchDB is an open source apache project. You are comparing apples to oranges.

<comment><USER20> Its not just CouchDB, I did a lot of searching a little while back and I generally just don't like how tightly they've wrapped up almost all of the results. If you go by searching alone its overwhelmingly MongoDB positive to such an extent that its hard to believe its organic.

It's definitely impressive marketing but when I'm deciding on which tool to use that arguably works against them as opposed to for them.

<comment><USER22> So you are choosing software on it's technical merit and not just on popularity and hype!? What if there are no breaking changes every third month, what are you gonna do? Solve actual problems!? :P

<comment><USER21> It sounds to me like they are choosing their software based off their marketing techniques.

<comment><USER22> Interesting. So they are catching a ride in the hype train by adopting the hyped technology... So this is why the tech stack is picked by and marketed to the business/directors rather then engineering.

</comment></comment></comment></comment></comment></comment></comment><comment><USER23> Has anyone here tried to use couchdb __directly __within an elixir /erlang OTP application? As like, "mix install"? Would kill for couchdb as a library!

</comment><comment><USER24> Other than being a great solution for some problems I wanted to highlight the fact that CouchDB has commited to SpiderMonkey (the Mozilla JS engine) since the very beginning and is one of the few projects helping to fend away the V8 monoculture.

</comment><comment><USER25> Congrats to the whole team.

Looking forward to CouchDB 4.0/FoundationDB goodies. Do we have any roadmap details on this.

</comment><comment><USER26> Oh wow, this is great news. I though the project was effectively long dead. Is there a new/up-to-date "couchapp" too?

> Default installations are now secure and locked down.

More good news!

Anyone have recent experience with couchdb?

I see the (quickstart) docs use plain http - should one terminate ssl in front, eg with a recent version of haproxy?

<comment><USER8> I wish couch was used whenever users ask for an app to "sync to Dropbox". I don't know if this changes with 3.0 but couch is naturally database per user, took me five minutes to install on my rpi with docker, very good admin interface, the database is the frontend (no driver or separate process), and let's the application layer handle conflicts.

</comment></comment><comment><USER27> I'm surprised to see so much love for CouchDB in this thread. I don't think it's been widely adopted in corporate america and has lost the war to MongoDB closed source or not.

I joined a company where it's being used backing a mobile app with couch/pouch in production. We can't wait to get off of it. Writes are slow. Reads are worse. Having a DB per user is a scaling and backup nightmare. If you run into any issues, it's a ghost town.

I'm glad the CouchDB Team is forging ahead, but who is really using this database?

<comment><USER18> I sadly can't name names, but rest assured the fortune 500 is heavily involved.

OTOH, publicly known big companies using CouchDB include Apple and IBM.

And I worked on a team that used CouchDB's offline capability in the 2015 Ebola crisis in West Africa. That work also lead to the first Ebola vaccine ever.

That's why we do CouchDB :)

</comment></comment><comment><USER28> CouchDB/PouchDB looks very promising for offline first apps, but I can't understand how to restrict bad clients. Client potentially could insert document of huge size or execute expensive query and degrade experience of other clients on the same server. Is it any way to prevent this?

<comment><USER16> A couple ways:

One you implement validation functions [1] on user databases to control what kind of data can be inserted into couch. These functions can only be changed by database admins, not users, so can act as a security mechanism controlling what goes in.

As mentioned by others you can also implement a proxy. This doesn't have to interfere with sync functionality, you just have to make sure you proxy all the endpoints in the replication protocol [2]. Envoy [3] is one such proxy that essentially applies document level permissions to a CouchDB database without interfering with sync.

If the goal is just to limit document size, or throttle clients trying to hammer the API, this doesn't even have to be a custom proxy, and reverse proxy with the needed control knobs (such as NGINX) will do. You can of course combine this with validation functions, using validations to ensure the everything that comes in is the right "shape" and using NGINX and it's ilk to apply throttling and sane request limits.

At scale there's a decent chance you want a proxy in front of your Couch instance anyway, since Couch is truly multi-master, meaning you probably want to balance your clients across all your nodes anyway.

[1] [https://docs.couchdb.org/en/stable/ddocs/ddocs.html#validate...](https://docs.couchdb.org/en/stable/ddocs/ddocs.html#validate- document-update-functions) [2] [https://docs.couchdb.org/en/stable/replication/protocol.html...](https://docs.couchdb.org/en/stable/replication/protocol.html#) [3] [https://github.com/cloudant-labs/envoy](https://github.com/cloudant- labs/envoy)

<comment><USER28> Thank you for pointing at validation, I'll check it. It's not completely clear what is it possible to limit not only particular document but database, or how to handle conflict if document changed on pouch, but rejected on couchdb server.

I'm not sure about current time but previously it was a problem that couchdb file grow until some limit on filesystem and couchdb just crashed.

Start of the envoy readme: it's not battle tested or supported in any way. Also it doesn't do any validation apart from limiting permissions for different users.

It's easier to reimplement couchdb than to create smart proxy that will estimate is this query expensive or not.

I'm not saying about rate-limiting proxy or load-balancing to different backends which could be implemented on nginx or something else.

<comment><USER16> I'm not clear what you mean by limiting "not only particular document but database". As far as a document changing in pouch and rejected on the server, that's one of two scenarios.

1) The client you wrote is bugged and generated bad data. This scenarios can occur just as easily using Postgres and an application server. What does your app server do if a client tries to send bad data? (Answer: Whatever you told it to do. Most likely throwing a 500 when your databases refuses the incoming data.)

As for what will happen when pouch syncs to couch the server will let everything else sync, but not the bad document. The return value from the API call will tell you what documents didn't sync.

2) Someone is intentionally trying to shove bad data into your database. In this case it's worked as advertised and rejected the bad data. What do you care if a malicious client breaks?

What kind of "expensive" query are you envisioning? Mango queries don't support joins, and only simple equality filters, so in general the worst thing someone could do is send a query that doesn't use an index, but why are you letting the client query the server in the first place? Just have the client sync and query client side. Or don't allow access the the _find endpoint and restrict them to the map/reduce view you handwrote.

If you must let them send arbitrary queries (which to me implies a relatively trusted user, but let's pretend their not), then run the query with a limit of 1 or 0, and examine the execution stats to see if they are using an index, and check their query to see if their limit is reasonable. But at this point you've now entered into a scenario that's going to be _very_ difficult with a custom API too.

<comment><USER28> > I'm not clear what you mean by limiting "not only particular document but > database".

I've limited document size to 10mb and ratelimited updates to 10 per second. Client starts to update document with random data 10 requests per second. As far as I understand couch stores all versions at least some time. This means that this one client could fill space on my server 100mb/s. There is no such issues with postgress, and no one allow clients execute raw queries on database without any application server. Document only 10mb but database is huge.

> What kind of "expensive" query are you envisioning?

I have never used couch, so I don't know what could be expensive. May be some lookup without index or something like this.

Sorry for my ignorance, is it true that if I limit couch only to replication it will not be any not indexed lookups?

Looks like implement secure system with couch is very hard but I can't find any best practices, mostly only authentication and basic validation.

<comment><USER16> > I've limited document size to 10mb and rate-limited updates to 10 per > second. Client starts to update document with random data 10 requests per > second. As far as I understand couch stores all versions at least some time. > This means that this one client could fill space on my server 100mb/s. There > is no such issues with PostgreSQL, and no one allow clients execute raw > queries on database without any application server. Document only 10mb but > database is huge.

Ah! Now we are getting somewhere! Your concerned about someone filling your disk.

OK, let's modify your scenario a little. Instead of updating an existing document, they create a new document. This a malicious client, why do updates that'll get cleaned up in a few minutes when I can make it permanent?

So, CouchDB allows these writes, and now your disk is full.

What does Postgres with a custom API do? Allows these writes, and now your disk is full.

Your allowing 10MB documents because that makes sense for your application right? So your Postgres table is going to have a binary column or some other column meant to hold bulk data, and your API is going to accept it.

If it doesn't make sense, lower the max document size. Apply validations to limit what fields can be written to, and how big they can be. In Postgres this is called your "schema". Couch being "schemaless", it's now your validation function. Couch is no different from any other schemaless database such as Mongo, RethinkDB and FoundationDB in this regard.

Also your rate limiting here is weak. If I can post to your sever at 100Mb/s second, I can saturate a 1GB link with only 10 clients. Doesn't matter if you reject my posts, if I can send them to the server, I can DOS you pretty easily.

The main thing Postgres gives you here is that it requires you to define your schema upfront (unless you use JSON columns, in which case it joins the schemaless club above). Couch will happily let you not, in which case someone wants to write a record of their car maintenance into your recipe book app? Couch is good with that. But take a step back. what actually stops them from putting that in the "description" column of your Postgres recipe app? Not much. So you have to think about what's important. Do I actually need to make sure these are all the same "shape"? If so I need a validation function. If I can just shrug and say "garbage in, garbage out", then I just need controls around how much data they can insert, but hey, I needed that for Postgres anyway.

> Sorry for my ignorance, is it true that if I limit couch only to replication > it will not be any not indexed lookups?

Correct (enough). The entirety of CouchDB is built around efficient replication. While it's not going to use a formal "index" getting all of the changes after a specific rev is an efficient operation.

<comment><USER28> It's trivial to limit number of created documents in postgres, couchdb or application server though validation, I'm talking about updating document not creating new. In posgres if I update 1mb document used space will not always grow. In couch db situation is different. In case of relation db you have application server with custom logic and validations, couchdb from other side is accessible from outsize.

My idea that it's very hard to create safe couchdb based system and most recommendations limited to setup nginx proxy and authenticate users which is not enough.

<comment><USER16> > It's trivial to limit number of created documents in postgres, couchdb or > application server though validation, I'm talking about updating document > not creating new. In posgres if I update 1mb document used space will not > always grow. In couch db situation is different. In case of relation db you > have application server with custom logic and validations, couchdb from > other side is accessible from outsize.

It is? It's unclear to me why I'm allowing 10 updates to a (largish, 10MB! Use a file or store it in S3!) document per-minute, but not 10 creates. Maybe I'm building Google Docs? Except I'd want old revisions, so those are creates. Plus 10 Mb is a huge spreadsheet. But sure lets roll with it. Actually Couch does _not_ keep old versions of documents around, only old revision numbers. When a document is updated, the old version becomes eligible for compaction (basically garbage collection). So your attacker has to be fast enough to outrun the compactor, while being slow enough to not get temporarily banned from your service. It seems like less effort to me to use this power to flood your network I/O, which is almost certainly lower than your disk I/O. Or just choke your Postgres server on it's 100Mb/s disk I/O for updates + whatever is required to maintain your indexes.

I'm not actually advocating for Couch over Postgres. In my mind Postgres should be the default choice, and you switch to something else if you have a reason. For Couch, the biggest reason is sync is built in, in such a way that you can leverage it for your own applications with minimal effort. In my experience sync can be devilishly hard for non-trivial cases, so depending on your app, that can be pretty compelling.

But so far you seem to be focused on DOS attacks your not going to find separate advice for Postgres vs Mongo vs Couch, because the backing system doesn't matter. The attacks and mitigations are identical no matter the back- end, namely stop the traffic before it consumes your resources.

<comment><USER28> Couch is not equivalent to mongo or relational because it accessible to clients if we want synchronisation. Securing app server is manageable problem and there is huge number of resources how to do it correctly.

In case of couch I've not seen any secure open-source example.

I'm not focused on DOS attacks, I'm just proposing different attack vectors.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER29> Many commenters here still think CouchDB is the same thing it was many years ago.

CouchDB was a simple but very powerful idea (that still needed improvements), but it was coopted into something not very nice nor good nor useful.

See my old rant about it and why it failed: [http://web.archive.org/web/20170530122143/http://entulho.fia...](http://web.archive.org/web/20170530122143/http://entulho.fiatjaf.alhur.es/notes/about- couchdb/)

</comment><comment><USER30> is the lucene search indexer synchronous with couchdb days updates?

I'm wondering how people solve the common search after create pattern when using external indexes

<comment><USER18> Yup, works with clustering and everything: [https://blog.couchdb.org/2020/02/26/the-road-to- couchdb-3-0-...](https://blog.couchdb.org/2020/02/26/the-road-to- couchdb-3-0-easy-fulltext-search/)

</comment></comment><comment><USER31> I once read that the right way to use CouchDB is for every user to have its own database. However, how does this work with BI? Or with public data that should be known by all users? Do I create a single centralized DB just for that kind of data? Maybe aggregate data from all users' DBs? Genuinely curious.

<comment><USER32> For public data, you can try to partition it in such a way that writes can be merged without any potential conflicts. E.g. a user's posts are in a separate partition.

I have never done this with CouchDB, but the technique is described in Martin Kleppman's __Designing Data Intensive Applications__.

</comment></comment><comment><USER33> Can't wait to see what CouchDB 4.0 with FoundationDB at it's core does for the db.

This is a great release too!

</comment><comment><USER34> anybody acquainted with pouchdb devs ? just to know if there are plans to migrate already or not

<comment><USER35> [https://github.com/pouchdb/pouchdb/issues/7987](https://github.com/pouchdb/pouchdb/issues/7987)

</comment></comment><comment><USER36> I haven't used CouchDB in years. I just downloaded and installed it. Interesting that there are no apparent links to client libraries in different languages. Perhaps most people just use the HTTP API Reference and roll their own.

<comment><USER37> In Ruby there is a CouchRest gem, which I've used, but to be honest a REST interface that talks JSON is _so_ easy to use that I've often thought we'd be better off without anything specific.

<comment><USER36> Thanks, that makes sense.

</comment></comment></comment><comment><USER38> CouchDB is good. Yes. I still dream of the day when the cluster will balance shards automatically and recover better from losing and replacing nodes. :D

</comment><comment><USER39> Maybe I'm being petty, but it doesn't fill me with confidence when the ssl certificate on their website isn't even configured properly (valid for uberspace.de domain).

To clarify: seems their main site is on apache.org. But, their www.couchdb.org site (hosted on uberspace.de) doesn't have a correct cert.

<comment><USER40> For me I get a valid Let's Encrypt certificate that has blog.couchdb.org in its SAN list.</comment></comment>


David Heinemeier Hansson's Setup - <AUTHOR> http://david.heinemeier.hansson.usesthis.com/ <comment><USER2> So how about we turn this into a what's your set up thread?

Hardware: I'll get started. I have three Macs: a Mac Pro, a MacBook Pro, and a MacBook Air. I also have an iPhone. The MacPro and the Air were bought by my company, the MacBook Pro is my personal machine.

I find myself using the MacBook Air a lot. I can take it anywhere with me. When I'm not using it, I'm using the iPhone. If the Air had a SIM card slot I'd probably use it even more.

On the MacPro I have a 24" Samsung monitor. All the other machines I use with their native screens. I also have a Kindle.

Software: I use emacs for writing and coding. I use a mixture of Firefox and Chrome for most everything else since so much of my computer life is in the cloud. Bits of software I love are: Dropbox, Notifo, Evernote and TweetDeck.

<comment><USER3> Dell XPS M1530 laptop; FreeBSD 7.3; KDE 3.5.10. Konqueror for websites where it works, Firefox when necessary. Thunderbird for email. Text editing in kwrite unless I'm in the middle of doing something in a Konsole, in which case I'll probably use nano. Backups via tarsnap, of course.

On servers, mostly FreeBSD 8.0 (a few boxes are still 7.x), along with djbdns, qmail, ezmlm, apache, stunnel, and tarsnap.

On my android phone: Twidroid, ConnectBot, NetCounter.

<comment><USER4> Upvoted for XPS M1530 - what an amazing laptop.

For work I use an XPS M1530 with Windows 7, VMWare and a collection of images with different OSes for various purposes. Notepad++ for editing, Eclipse + PyDev for development, Ollydbg and Immunity Debugger for vulnerability research, too many tools to list for penetration testing, OpenOffice for documents and spreadsheets, Google Talk, Thunderbird for mail and TSK and Responder for Disk and Memory forensics.

We have some servers at work, mostly Mac Mini and Linux (to host VMWare, various images from Beos to Sco Unixware), Solaris Sparc box and an old Vaxstation running VMS.

At home I use a 9 year old Vaio SRX-51P/B with a P3 850, 256mb of RAM and Arch Linux. I mostly use Mutt, Chromium, Irssi, centerim, Vim, MC and snownews.

At home I use an Ubuntu 8.04 server mostly for media, printing, DNS (was using djbdns but switched to dnsmasq after a rebuild) and backups and a separate Arch Linux desktop as a MythTV Front/Backend.

<comment><USER3> _XPS M1530 - what an amazing laptop._

Actually, I rather dislike the M1530, at least compared with my previous laptop, a D600. The M1530 tends to get _very_ hot.

</comment></comment></comment></comment><comment><USER5> Is it just me who expected to see a list of hair styling products? ;)

<comment><USER6> Currently, American Crew medium hold/shine. Occasionally, Bubble & Bubble #5.

But of course the real secret is in how you apply just the right swirl.

<comment><USER5> Thanks. Might have to check those out :)

I always end up with half my hair like its been dipped in honey, and the other half dry as a bone when I use anything. I'm probably making some n00b error though :/

<comment><USER7> Rub it into your hands first and then apply it to your head.

And don't use so much.

</comment></comment></comment></comment><comment><USER8> Cool site. If you want a laugh, check out RMS's: <http://richard.stallman.usesthis.com>

<comment><USER9> pg presented his setup, too: <http://paul.graham.usesthis.com/>

<comment><USER10> Re-reading that makes me think pg is thrilled about his iPad (which I'm assuming he bought)

<comment><USER11> I bet he isn't thrilled about iPad - can't connect it to HD screen and he wasn't such a big fan of iPhone OS either.

</comment></comment></comment></comment><comment><USER12> David HH's lamborghini

[http://gilesbowkett.blogspot.com/2009/11/coyotes-pulitzer- an...](http://gilesbowkett.blogspot.com/2009/11/coyotes-pulitzer-and-dhhs- lamborghini.html)

<comment><USER13> I went to a DHH talk in Copenhagen when he left Denmark for the US. One of his major stated reasons was the insane Danish car tax (180%). He would probably not have been able to afford it had he stayed behind :-)

<comment><USER14> That explains the robust Danish automobile industry.

</comment></comment></comment><comment><USER15> I really admire dhh and what he's done. His talk at SUS '08 was phenomenal. We had a chance to chat and he seems like a cool guy. He's one of my many sources of inspiration.

That being said, who cares what _anyone's_ setup is? It's not like, "Set up like this guy and you will perform like this guy." There is about zero correlation between setup and performance. A better post would be, "What dhh does and why he does it."

As for me, I have a single monitor with 2 sessions, one with lime green code on a black background in textpad and the other a test session in a browser. Both are full screen. Alt-tab is my friend. I prefer an underpowered box. If I can make it work there, I can make it work anywhere.

Is this the secret to my success? Of course not. Put 10 programmers in a room and get 11 different setups.

Use whatever setup works best for you. If you want to find out what makes someone else successful, dig a little below the surface for the wisdom waiting to be extracted by those not so obsessed with the superficial.

<comment><USER16> I think the point of the site is not really to imitate someone's setup. It rather serves as a kind of anecdote at best, and in some cases (like RMS) gives interesting insight.

"As for me, I have a single monitor with 2 sessions, one with lime green code on a black background in textpad and the other a test session in a browser. Both are full screen. Alt-tab is my friend. I prefer an underpowered box. If I can make it work there, I can make it work anywhere."

That too, is be kind of interesting to read, especially the ending. I will not go on and imitate your setup now, since i got my own, but the underpowered-box stuff is good enough to remember.

</comment></comment><comment><USER17> Cool site! I wonder what stuff are most popular among these brilliant guys so i # curl "<http://www.usesthis.com/> | egrep -o "http:\/\/. _\\.usesthis\\.com" | xargs curl | egrep -o " >[^<]+<\/a>" | sed -e "s/>\\(._\\)<\/a>/\1/g" | sort | uniq -c | sort -nbr | less

         20 MacBook Pro
         20 Firefox
         18 Safari
         16 iTunes
         15 iPhone
         14 Mac Pro
         13 Tweetie
         13 Mail
         12 TextMate
         10 Twitterrific
         10 Photoshop
         10 iChat
         10 iCal
         10 Gmail
         10 Dropbox
          9 Twitter
          9 Time Machine
          9 Terminal
          9 MacBook
          9 Google Reader
          8 Xcode
          8 Things
          8 iMac
          7 Quicksilver
          7 NetNewsWire
          7 LaunchBar
          7 Flickr
          7 Coda
          7 Adium
          6 Transmit
          6 Instapaper
          6 Illustrator
          6 Google Chrome
          6 Evernote

</comment><comment><USER18> And it has _why's as well (including a photo of him??)

<http://why.usesthis.com/>

<comment><USER19> _reads link_

Wait - what?!

<comment><USER18> Check the date (Feb 2009)

</comment></comment></comment><comment><USER20> In addition to learning about their setup, it's great to put a face to so many interesting online names. Thanks for putting this together waferbaby. Direct link: <http://usesthis.com/>

</comment><comment><USER21> DHH in California? what's going on there?

<comment><USER22> Living it up in Malibu, like Iron Man.

</comment></comment><comment><USER23> The one thing I'm surprised about is the external SSD for the 27" iMac. I can't see how it would be faster running the whole system through the Firewire bus. Here are some throughput benchmarks of SSD drives I found from OWC (a well known Mac accessory online retailer):

7200 rpm external drive:

eSATA - [http://eshop.macsales.com/images/Items/OWCMEQM7500GB16/HIT0A...](http://eshop.macsales.com/images/Items/OWCMEQM7500GB16/HIT0A72335/eSATA.png)

FW800 - [http://eshop.macsales.com/images/Items/OWCMEQM7500GB16/HIT0A...](http://eshop.macsales.com/images/Items/OWCMEQM7500GB16/HIT0A72335/fw800.png)

SSD external drive:

eSATA - [http://eshop.macsales.com/images/Items/OWCMEQMSSD050/eSATA.p...](http://eshop.macsales.com/images/Items/OWCMEQMSSD050/eSATA.png)

FW800 - [http://eshop.macsales.com/images/Items/OWCMEQMSSD050/fw800.p...](http://eshop.macsales.com/images/Items/OWCMEQMSSD050/fw800.png)

Summary: Via eSATA, the 7200rpm drive tops out around 100MB/sec while the SSD drive hits > 200MB/sec. Via FW800 both drives only max out around 80MB/sec which is the approximate upper limit of FW800 I believe.

DHH, if you're reading perhaps you can provide a more subjective take on the real-world performance? I'm curious as I have a 27" iMac and would love to be able to get the SSD speed boost without taking off the glass and voiding warranties.

<comment><USER6> The main speed benefit of SSDs is not throughput, but random access speeds. That's what makes it feel so magically fast. SSD over FW800 still gives you that.

<comment><USER24> Very interesting. I've considered putting an SSD in my Mac mini, but opening them is a pain and I was under the vague impression that latency would suffer over Firewire. Glad to hear it works well, what enclosure are you using?

</comment></comment></comment><comment><USER25> I second the SSD recommendation. It's a must have on any Macbook Pro.

</comment><comment><USER26> Spoiler Alert: It's all Mac.

<comment><USER27> It's not actually all Mac, fwiw. I try to find interesting people more than interesting setups, and this is what they tend to use. :)

<comment><USER28> I was surprised to see the woman that works for Microsoft Research talking about her iPhone, Mac and so on. Or is that not surprising?

<comment><USER29> Not _too_ surprising: [http://www.macrumors.com/2010/03/15/10-of-microsoft- employee...](http://www.macrumors.com/2010/03/15/10-of-microsoft-employees- using-iphones/)

</comment></comment></comment></comment><comment><USER30> That was short and sweet. I had never heard of the SnapSnap... it looks fantastic. It definitely has a better positive/negative review ratio than most products I've ever checked out on Amazon.

</comment><comment><USER31> Totally off-topic: What font is that?

<comment><USER32> Droid sans. Don't you have Firebug installed?

<comment><USER33> Following the links to the CSS stylesheets works well, too: [http://david.heinemeier.hansson.usesthis.com/stylesheets/scr...](http://david.heinemeier.hansson.usesthis.com/stylesheets/screen.css)</comment></comment></comment>