Ask HN: I feel like I'm in a filter bubble. How can I "expand my horizons"? - <AUTHOR>

Hi! I've noticed that I've stopped rapidly expanding my knowledge about the world. I hang out on the same websites(HN, reddit), learn the same topics(programming plus couple of hobbies), hear the same ideas.
Nothing has dramatically "expanded my mind" or changed my opinion in the past couple of years. I try to read a lot but it seems like all the books I read are on the same topics, and just repeat the same ideas.
How do I fight that?
I think there's a lot of great areas of knowledge and new ideas in the world that I have no idea about, but I don't know how to find them.
I feel like I've explored pretty much everything that I care to know about the world, and all that is left is to go deeper into the areas I'm already aware of(science, tech, etc), but of course it's probably not true.
What do you do about that? And what are some things that you've discovered in the past 5 years that you weren't aware of before? <comment><USER2> Go to the library. (Yes, the place with all the books. ;-) ) Wander through the nonfiction section and scan the titles. If anything catches your eye, pick it up and read the first couple pages. If it seems at all interesting, check it out and read it.

This technique is responsible for my reading in depth about the history of shipping containers, learning just a little bit about how to do interior design, and reading a large number of gardening books. (And doing some gardening!) Among other things.

You could probably come up with something similar online. (For example, clicking "Random article" on Wikipedia and actually reading it.) But I find that if I'm at a computer, I'm more prone to revert to narrow interests. Going to the real, physical library seems to make me less distractable -- or more so, depending on how you look at it. :)

<comment><USER3> I'll add that one shouldn't exclude older books for being old. I've been reading scientific literature from the 1960s, and it's full of similar topics to now (information explosion, data science, organizational principles). They, like we, are in a bubble formed by the general cultural expectations of that era and topic.

Only, it's a different bubble than now.

It also ended up making me less interested in following the new hotness, when I realize it's often little different from the new hotness of a few decades ago. Makes me jaded before my time ;)

</comment></comment><comment><USER4> Most of my knowledge exploration comes from real world encounters.

I moved to an older, partially-decaying, partially-gentrifying U.S. city and wanted to learn all about its history. What happened to all these crumbling old buildings? Why are certain areas blighted? Where did all the old ethnic communities go?

Back in 2008, shortly after I started earning money and investing in the stock market, the market crashed. So I went a long reading project trying to figure out what causes booms and busts, bubbles and crashes.

Then there are all sorts of political questions in the world. What drives terrorism? Who is right or wrong about policy argument X?

There are endless historical arguments. Why did the Roman Empire fall? Were the American colonists really right to rebel from the British, or is that just winner's history? Where did our modern customs and mores come from?

I've gone down other reading rabbit holes with other life knowledge areas - dating & relationships, management, startups, etc.

If there are certain areas that pique your interest, perhaps myself or someone else could make you a reading list that will break you out of your filter bubble. I've certainly come across a lot unorthodox material that is both edgy, novel, and more true than not. But it is hard to give you advice if you don't know what you want to learn about.

<comment><USER5> Please do! I at least would enjoy reading about any and all of those topics. The learning about new things is what fascinates and interests me and I would prefer reading about things I have previously no idea about. Very much appreciated if you could share some of these things you've learned.

<comment><USER4> Do you have one or two of the topics you are most interested in? It would take up too much time to dig up a worthwhile list for them all :-P

<comment><USER5> A study of the economy would be great. Also interesting would be as you described "Were the American colonists really right to rebel from the British, or is that just winner's history?"

A study of "dating & relationships" would be good too (I assume this would cover all interpersonal relationships, i.e. how to be a good friend and win friends over)

</comment></comment></comment></comment><comment><USER6> You're in a filter bubble because you're doing your own curation. Historically, many if not most thinking people let someone else do their curation, ie they read a good newspaper or magazine.

Magazines such as The Economist and New Scientist have journalists and editors who keep a close eye on significant parts of the world and then report them in digestible form.

With a good newspaper or magazine, you're exposed to a lot of subjects that you wouldn't normally see in your own filter bubble. Some of those you will find interesting enough to read, and reading even a few of those stories will expand your horizons.

<comment><USER7> The Economist is particularly good. Definitely worth reading if you don't already do so.

Although they have a filter bubble of their own, it probably doesn't perfectly align with yours.

<comment><USER6> Great point! It's certainly true that The Economist (like similar publications) has its own filter bubbles, but (a) it's based on input from hundreds of people; and (b) the editorial intent is to find and present new and disruptive ideas. It's the opposite of, say, Fox News, where the aim is to reinforce existing stereotypes.

I guess you have to choose your publications wisely....

</comment></comment></comment><comment><USER8> Take advantage of the fact that everything is connected to everything. You know one of those programming blog posts you're already reading? You know how there's that link you didn't follow because it was a reference to a show you've never heard of or something? Follow it. You know that article you read that yells something or other about what somebody else said, and has you nodding your head vigorously about how stupid that person must be, but, suspiciously, doesn't link to the original content, or worse, fails to even quote it? Go seek out the original content. Then follow a couple of _those_ links. You get linked to a YouTube video... actually look at the "similar video" links that YouTube spits out, try out a couple that you don't know what they are. (This works surprisingly well for "real content"; linkbait viral videos will of course produce just more linkbait viral videos but when you hit the good stuff the first few links are often also quite good.)

And if you've got some spare income, be willing to start buying a book here or there related to what you find.

I mean, if you have the desire and the stamina to make one of the big leaps here, do not let me stop you; those are good too. But you can incrementally escape from your current filter bubble, too, by growing it. There is no such thing as not being in one, because you _have_ to have filters, it is literally impossible not to, so there's not much point in angsting about it, but it _is_ possible to _upgrade_ your bubble.

</comment><comment><USER9> Get a copy of Merriam Webster's Visual Dictionary and just go through its approx. 1000 pages of high-quality illustrations. It efficiently introduces you to countless tip-of-the-ice-berg topics/industries that are very much remotely related to tech. It humbles you and evokes that feeling of self- insignificance like when you look at aerial view of cities through an airplane window.

<comment><USER10> > It humbles you and evokes that feeling of self-insignificance like when you > look at aerial view of cities through an airplane window.

What does it matter how small you are compared to a city, the world, or the Universe? How is that supposed to be humbling? It's more inspiring than "humbling" to know that there is a vast world which I am not knowledgeable about. Being as big as a city, the world or the Universe wouldn't fill me with self-importance; it would fill me with "what's the point".

</comment></comment><comment><USER11> Go read about stocks/etfs/etc. This topic is very underrated, but it's so important! Getting to know more about this topic changed the way I read the news and see the world/politics. Also money.

<comment><USER12> Can you recommend any good introductory material or websites?

<comment><USER13> A good place to start learning about finance is always [http://www.investopedia.com/](http://www.investopedia.com/). Further I can recommend reading about modern portfolio theory and the correlation between risk and return: [http://en.wikipedia.org/wiki/Modern_portfolio_theory](http://en.wikipedia.org/wiki/Modern_portfolio_theory)

</comment></comment></comment><comment><USER14> I would try any one of these:

* Volunteer

* Take up an outdoor hobby

* Learn a new spoken language

* Read a seminal work in a vastly different field from computer science (say, "The Interpretation of Dreams" by Freud)

[Edited for formatting]

</comment><comment> francis- Quit your job. Drop LSD repeatedly over the course of a week. Stop reddit usage (reddit is a watering hole for morons). Learn LISP (it is more of a trip than acid). Find controversial people, read and understand their viewpoint.

Do mathematics. Good luck.

<comment> francis- I almost forgot - don't interact with people for several months at a time - the meaningless interactions of everyday life get in the way of significant thoughts.

</comment></comment><comment><USER15> Go bankrupt/totally broke, start using website blockers.

I got some serious depression when I got to the point of non-expanding (if you can name it like that).

I sold out all my business, throw a glow on everything else. Went full blown bankrupt. Do not drag your family in to this, it is lone journey. I went to very close of zero - barely possible to afford food. Rewritten myself and started from the beginning. It is amazing how you can rewrite yourself when back to basics.

6 months it took me to rewrite all the "downs" and once I started business it took me 2 weeks to earn as much as in last 6 months. Now everything is so much easier.

</comment><comment><USER16> It's been more than 5 years, but researching the science behind 9/11/01 has been extremely rewarding for me (in the sense that you seem to be asking about). It's difficult to articulate this to someone who has not looked into it (for all I know you have), but things that didn't make sense become much more intuitive. It's a very interesting window into human psychology. I couldn't have explained this to myself 10 years ago, I would have tuned my older self out. There's links in my profile and I make a comment about it from time to time. The biggest hurdle is that the subject is (by no accident) littered with disinformation designed to poison the well. I'm more than happy to talk about it, but some folks have a negative reaction (I did) if it's brought up so I usually dont.

The AIA's upcoming convention program has some solid starting points: [http://www.aia.org/aiaucmp/groups/aia/documents/pdf/aiab1058...](http://www.aia.org/aiaucmp/groups/aia/documents/pdf/aiab105885.pdf)

</comment><comment><USER17> Pick a random interesting page from a reference below, then use a search engine to find and connect with _people_ who care about the topic:

 _Harper 's dictionary of classical literature and antiquities_, [https://archive.org/details/harpersdictiona00peckgoog](https://archive.org/details/harpersdictiona00peckgoog)

David Rumsey Map Collection (includes old "maps" of human knowledge, today could be called infographics), [http://www.davidrumsey.com](http://www.davidrumsey.com)

 _The Ancient Engineers_ , by L. Sprague de Camp, [http://www.amazon.com/The- Ancient-Engineers-Sprague-Camp/dp/...](http://www.amazon.com/The-Ancient- Engineers-Sprague-Camp/dp/0345482875)

 _Oxford English Dictionary_ , 1888 Edition, 15000 searchable pages as a Windows app, [https://archive.org/details/oed11_201407](https://archive.org/details/oed11_201407)

</comment><comment><USER18> Check out the local poetry scene. If you're in/near a big city it will almost certainly exist and you'll definitely be exposed to a whole host of new ideas from all sorts of socioeconomic strata. The events are generally free or you can donate. Often the poets will have self-published (or small-time-published) chapbooks for a few dollars.

</comment><comment><USER19> I hear you and you raise a valid point, especially for the Internet generation. NYtimes stated this elegantly - Algorithms lead us to anagrams.

My suggestion is go to a library.

Even after 15 years of living in the US, I am surprised at how few Americans use its impressive library system.

I have heavily used the public libraries in NYC and London.

NY Public Library for example, at 53 million titles, is the fourth largest library in the world. The books and other media available is just mind boggling.

The Editors Picks (both fiction and non-fiction) in NYPL is fantastic and has yielded many gems. I am sure it is similar in other library systems as well.

A few years ago, I decided to "outsource" all my book needs to NYPL and as a result donated all the books I had. Now I use NYPL as my knowledge search and discovery "tool".

They also have a e-books issuance service, which I use even when I am not in NYC (where I continue to pay taxes).

</comment><comment><USER20> Email me at firstname.lastname@example.com. I'm solving this _exact_ problem right now at peruse.meteor.com. It could be valuable for both of us to exchange ideas.

As people have mentioned here, wandering bookstores and libraries are excellent ways to get out of a filter bubble. That's exactly what we're simulating at Peruse.

EDIT for reference, I'm the one who recently posted on this topic, because it's an issue I've been having too: [https://news.ycombinator.com/item?id=9458829](https://news.ycombinator.com/item?id=9458829)

</comment><comment><USER21> The best thing you can do is travel, and also aim to learn a new language (it'll open up your eyes to how much else is out there). Particularly today, where most cities have co-working spaces with strong communities & community platforms like StartupDigest.com are active around the world with weekly events, it's easier today to travel & work for a few weeks than ever before. Whenever I find myself in a predictable routine as well, I like to attend conferences; I find the energy there is always helpful.

</comment><comment><USER22> Besides looking for different topics as many have suggested, look for different authors. If you find that everything you read is written by people from your own country, search out readings from authors of other nationalities. If you find that everything you read is written by people of your own race, search out readings from authors of other races. If you find that everything you read is written by men, search out readings by women.

</comment><comment><USER23> Find a random person using facebook, try to become friends.

One unbiased procedure goes like this. Choose a sufficiently large number N. Choose a sufficiently large number M(N). Choose yourself as starting person. Now, do the following M times. Generate a random number r between 1 and N. Change the current person to be the r'th friend of the previous person. Or if r is less then number of friends, then the person in question does not change.

</comment><comment><USER24> The world is not all described in English. Not all ideas originate from the English sources like HN. If you have friends from other parts of the world ask them what books/blogs they read in their own language. This goes along with comments about learning a new language

</comment><comment><USER25> Why don't you try reading outside of the subject areas with which you're familiar? Or perhaps you could take up a hobby that requires a different frame of thought to the ones you already do? There's plenty more out there beyond science & tech.

</comment><comment><USER26> how many hours a week do you spend outdoors and interacting with people face to face?

</comment><comment><USER27> Here's one interesting strand you can pull on..

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

</comment><comment><USER28> Travel, and do it without excessively researching your destination online.

</comment><comment><USER29> Previous discussion (10 days ago) [https://news.ycombinator.com/item?id=9458829](https://news.ycombinator.com/item?id=9458829)

</comment><comment><USER30> The Stuff You Should Know podcast is a great way to get introduced to all sorts of topics. Josh and Chuck are super funny guys, and usually know what they're talking about.

</comment><comment><USER31> edge.org, long now, london literary review, are good starting points.

Also regarding books - try to find books that abstract the patterns out of a field, since it's a useful way to maximize learning - and having everything in a format that's easy to use in the future(problem -> pattern).

</comment><comment><USER7> I'm working on a tool to deal with at least some aspects of this. It's very simple but might help. Look for a "Show HN" soon.

I'm also in communication with one other developer who has a very clever idea to achieve the same goal. Again, look for a Show HN soon.

And of course, if you want to chat more about these solutions off HN, email me - my address is in my HN profile.

</comment><comment><USER32> Biomimicry.

It is when you study nature and animals to find an innovative idea to solve a man made problem.

</comment><comment><USER33> Learn a new (human) language. It will change the way that you think (literally).

</comment><comment><USER34> _What do you do about that?_

Here's one easy option:

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

Beyond that, if you think about it, this is actually a sort of paradox. Anything you consciously choose to do to break out of your filter bubble, could just be part of the very filter bubble you're in! How do you ever really "take the red pill"? I think one of the best ways is to interact with other people, who have different hobbies, interests, and ideas. Go to meetups and user group meetings, but make it a point to talk to people you wouldn't usually talk to, or identify and try to connect with the people who say things you instinctively find yourself disagreeing with, etc.

Try to cultivate friendships with people outside of your chosen field and discipline. If most of your friends are people you know through work and tech related stuff, start looking to make friends from other venues. Take up a hobby - salsa dancing, mountain biking, cooking, poetry, whatever, and start going to events that cater to those hobbies, and make friends with those people.

</comment><comment><USER35> Learn a a new language.

<comment><USER36> This suggestion is simple and lower down the rankings, but it's very much the best.

Learning a new language isn't just reading and writing some stuff in a different way. It exposes you to new TV programmes, new styles of music, new fashions and fads. You'll see different kinds of politics, where the duopoly of Liberal/Conservative simply doesn't apply. A different view on history. Different ways of separating people than "race" and different ways of grouping them together than rich or poor.

While the other suggestions have merit, I don't think any of them almost literally open up a whole new world to you the way learning a language does. It will help you view your own culture in a new way too.

[similar applies to computer languages ;-) ]

</comment></comment><comment><USER37> Read "Inside the Spaceships" by George Adamski.

</comment><comment><USER38> You could do worse than spending a few hours on TED.

</comment><comment><USER39> It may sound cliche, but as I've gotten older I've started taking more and more interest into history, and specifically the history of things we hold commonplace. I like to play a game of "connections" (a la James Burke) and learn about things by unfolding knowledge.

Take something familiar like amazon.com.

\- It's an on-line department store

\- department stores were designed to consolidate various shopping venues under one roof

\- Sears was an early department store

\- they launched their stores to cater to working classes and farmers outside of city centers and in concert with their catalog business

\- their catalogs were common in rural general stores

\- general stores used them to expand the merchandise they could offer to rural customers

\- rural customers frequented general stores to pick up items they couldn't manufacture on their farms

\- they came into the town where the general stores were to sell the stuff they grew on their farms

\- towns sprung up along major navigation routes: roads, rail, rivers and canals

\- before roads and rail, there were rivers and canals

\- rivers are hard to reliably use to move commodities from rural areas to market

\- canals offered a more controlled environment to move commodities to market

\- once canals were established goods could easily move both ways

\- this made it more convenient to live in rural areas

\- early canals were fed by gravity, tapping into nearby rivers for water, this operated the locks and gates

\- an investor and promoter of canals was George Washington

\- George Washington, other than being a General and President was a businessman

\- Among his business ventures he invested in farming, whisky, canals, tobacco, horse breeding, weaving (a diversified portfolio)

\- one of his investments was the C&O canal

\- the C&O canal reached Harpers Ferry in 1833 and connected it with Washington D.C.

\- Harpers Ferry was named after Quaker Colonist Robert Harper and the ferry service he established

\- It's at the confluence of the Potomac and and Shenandoah rivers

\- Before the industrial revolution and steam power, it was used as a military manufacturing center and the rivers powered manufacturing equipment used to carve wood and metal into guns

\- Equipment used to manufacture weapons were standardized and the invention of interchangeable parts was pioneered there by Captain John Hall between 1820 and 1840 establishing patterns used later in the industrial revolution and gives us today everything from Cars to iPhones

Each one of these things can be chased off into different directions and the game of Connections can continue. Along the way you can learn about mechanical engineering, hydrolic power, logistics, commercial models, and so on as the web of connections grows out and grows more complex.

Suddenly you'll start to fill in knowledge gaps in other areas, frontier life, colonization, labor saving devices, information transmission, etc. You'll start to understand motivations and first principals behind the modern world. The "why?" behind things. Before too long you'll be able to make seamless connections up-down and across time. The whole of human history will start to take on a vividness it doesn't from just reading a linear textbook.

Even better, at particularly interesting stopping points, you can probably go visit those places and see those things yourself and continue to unfold knowledge and ideas.

Imagine my surprise when I saw how much of ancient Rome was built out of brick and not marble, and the implications that arise from an industry built around supplying brick to the ancient empire and not quarrying marble! Or seeing Roman concrete in the Pantheon and then climbing the Duomo in Florence and seeing Brunelleschi overcoming a thousand years of ignorance and figuring out how to build a dome again -- and then climbing other domes and seeing Brunelleschi's idea repeated over and over again for centuries. Or seeing the Mosque of Muhammad Ali in Cairo, built from Pyramid stone and adorned with a French clock, and then going to Paris and seeing the Luxor Obelisk at the Place de la Condorde in Paris and thinking through the problem of that exchange in detail (it was like a brain explosion for me). Or walking the restored fortifications at Rhodes and understanding how difficult the approach by the Ottomans was, and then seeing Malta right after and learning about the Knights of Saint John. Or seeing Hadrian's Arch in Athens, Hadrian's Wall in the U.K, Castel Sant'Angelo in Rome and so many statues of Hadrian that you realize you can recognize him by sight, 2,000 years after his death, from across the room in Washington D.C. Or visiting Dasan's grave in South Korea, and then seeing the fortifications at Hwaseong Fortress and then realizing he was Catholic and reading about Christianity in Korea and finding out it started in China!

The world is a mindblowing place full of problems that so many smart people throughout history have tried all kinds of interesting ways to solve. I find I'm often inspired and in awe at what those who have come before us have solved, in far more primitive times and without any of the means we have available to us today. It puts in perspective things we still struggle with today, and connects me to people and their thoughts from thousands of years ago. Time starts to flatten out and appreciation starts to creep in.

</comment><comment> bra-ket dig deeper into one topic

</comment><comment><USER40> Keep asking questions like this one.

:-)

</comment><comment><USER41> get off your computer</comment>


Gene mutation leads to decreased fear and anxiety and increased social behavior - <AUTHOR> https://www.sciencedirect.com/science/article/pii/S0028390819301388?via%3Dihub <comment><USER2> Say I have my genome on 23andme is there a related SNP I could search for to see if I have the variant of the gene ? Not that I'm anxious about this or anything

</comment><comment><USER3> in mice

</comment><comment><USER4> When CRISPR?

</comment><comment><USER5> give me the pill</comment>


Ask HN: When does the Summer 2013 YC batch application process start? - <AUTHOR>

Looks YC was accepting applications ~10 days ago this time last year. <comment><USER2> Curious to know too... Even an estimate of when will be good :-)

</comment><comment><USER3> You should ask PG</comment>


Google has 'outgrown' its 14-year old mission statement, says Larry Page - <AUTHOR> http://www.theguardian.com/technology/2014/nov/03/larry-page-google-dont-be-evil-sergey-brin <comment><USER2> I would go so far as to suggest that this link be ignored and this one be viewed instead: [https://news.ycombinator.com/item?id=8539114](https://news.ycombinator.com/item?id=8539114)

</comment><comment><USER3> How about "Enable knowledge of good and evil."

</comment><comment><USER4> With its Search products Google is already shaping the Western World views and culture in subtle ways not everybody's noticing. In doing that, almost always in a purely algorithmic way without human intervention, the "evil" threshold has been passed many times. Again, without anyone really noticing. In other words, it was an old motto already.

<comment><USER5> I'd consider it far more evil if it were _with_ human intervention.

<comment><USER6> It is always with human intervention - whoever controls the ranking algorithm controls the display results. That's power of Google. Simple change of ranking algorithm can drop some website's traffic by 80%-90% for good or bad.

</comment></comment></comment><comment><USER7> when you so vastly outgrow your mission statement, antitrust issues are likely present

</comment><comment><USER8> The Guardian's headline is very misleading. Google's mission statement is not "don't be evil" \- it's "to organise the world's information and make it universally accessible and useful."

Larry Page is clearly referring to the mission statement that may need to change, not "Don't be evil." This is all made very clear in the original FT article The Guardian cites, they just chose to go for a more inaccurate and salacious framing of the entire story. [http://www.ft.com/intl/cms/s/2/3173f19e-5fbc-11e4-8c27-00144...](http://www.ft.com/intl/cms/s/2/3173f19e-5fbc-11e4-8c27-00144feabdc0.html#axzz3I1Ga58zO)

[edit: the guardian changed the headline!]

<comment><USER9> "Don't be evil" is the corporate motto [http://en.wikipedia.org/wiki/Don%27t_be_evil](http://en.wikipedia.org/wiki/Don%27t_be_evil) That's a very difficult motto to change. Removing it would mean "we're free to do evil now" and that won't be received well. Anyway, I wonder if is there anyone left who thinks Google is still faithful to their motto.

<comment><USER10> > Removing it would mean "we're free to do evil now"

It's a subtle distinction, but the motto is "don't be evil", not "don't do evil." The former allows you to do evil things in service to noble purposes. For example, "don't do evil" would have required the company to shut down services rather than sharing information with the NSA. "Don't be evil" allowed them to balance that evil action against the good created by those services to realize a net-positive societal benefit from offering those services.

<comment><USER11> Perhaps a better example: Censorship in Google China. The "don't do evil" vs "don't be evil" was almost exactly how they pitched that conversation.

<comment><USER12> Doing evil is being evil. End of discussion.

<comment><USER13> Well, everyone is evil then.

</comment></comment></comment></comment></comment></comment><comment><USER14> > This article previously stated that "don't be evil" was part of Google's > mission statement, and has been corrected.

Change the title.

</comment><comment><USER15> Are they now actively planning on being evil?

<comment><USER16> Considering their recent acquisitions on the cutting edge of robotics and artificial intelligence research, I certainly hope not.

</comment></comment><comment><USER17> It's like trying to figure out a new mission after you've already taken over the world. What the heck comes after that?

<comment><USER18> They really haven't taken over the world, but they have run out of relatively low hanging fruit to attack.

As gets pointed out a lot, their fundamental problem is an allergy to business models which involve humans in the workflow, and this will continue to be their problem as they simply haven't learned how to deal with people properly.</comment></comment>


UK police arrest man via automatic face recognition tech - <AUTHOR> https://arstechnica.co.uk/tech-policy/2017/06/police-automatic-face-recognition/ <comment><USER2> Large discussion from a couple of days ago: [https://news.ycombinator.com/item?id=14500184](https://news.ycombinator.com/item?id=14500184)</comment>


Ask HN: Does anybody know of a great way to track migraines? - <AUTHOR>

I need a easy way to keep track of migraines.  Currently just using a text file but it's a bit unmanageable.  Does anybody have any recommendations? <comment><USER2> There is a recent Show HN (not mine) that might be the solution you're looking for: [http://www.statlogger.com/](http://www.statlogger.com/)

</comment><comment><USER3> I would use Reporter app if you're on iOS. Here is a recent Ask HN thread: What apps or tools do you use to track things about your daily life? [https://news.ycombinator.com/item?id=8146114](https://news.ycombinator.com/item?id=8146114)

It allows you to quickly fill out customized surveys (Your questions would be like: "Are you having a migraine right now?") and export the data in JSON or CSV formats.

</comment><comment><USER4> Try "baby esp" smartphone app. Designed for parents to track newborn eat/sleep/poop habits; may require you to mentally reclassify "migraine" to "breast feeding" or some other supported category. But gives easy recording tools, data on a central server, accessible from multiple devices, graphing, etc.

</comment><comment><USER5> [https://ifttt.com/sms](https://ifttt.com/sms)

Send a text message to an IFTT (If This, Then That) number with #migraine as the message body. Append the date and time as a new row to a Google Drive spreadsheet.

</comment><comment><USER6> I've been using Lift ([https://www.lift.do/](https://www.lift.do/)), but you may find the UX a bit cluttered for your use case (they're primary a habit tracking app). Nice UI though.

</comment><comment><USER7> I'm working on a habit tracker which might be useful to you (only Android though) [https://play.google.com/store/apps/details?id=com.oristats.h...](https://play.google.com/store/apps/details?id=com.oristats.habitbull)

</comment><comment><USER8> I think the key question is what is special (if anything) about tracking migraines versus any other event. Have you looked at the many generalized QS (quantified self) applications and SaaS?

</comment><comment><USER9> How about using [http://peabrain.co/](http://peabrain.co/) ? One can update via SMS, and there's no need to download any apps.

</comment><comment><USER10> I guess you could move it up a notch and use a spreadsheet which would make graphing etc. much easier than a text file.

<comment><AUTHOR> There needs to be an easy way to get the data into it though. lets say I have a migraine when out to dinner I can't really open a spreadsheet and edit it. Needs to allow me a easy way to add.

</comment></comment><comment><USER11> I use My Headache Log, an app for my Android phone. It is very comprehensive.

</comment><comment><USER12> I usually just keep track of them in my head.

<comment><AUTHOR> That gets difficult when you have 10-12 a day but the next day have 2 or none</comment></comment>


Identitymind Launches Low-cost Compliance Services for Bitcoin Startups - <AUTHOR> http://www.coindesk.com/identitymind-launches-low-cost-compliance-services-bitcoin-startups/

<comment><USER2> I'm having a hard time finding a use case. Unless Identitymind also handles money transmitter licenses (one for every state), which was not mentioned in the article, that is still a huge hurdle to regulatory compliance for exchanges.

Startups which simply want to accept Bitcoin can leave that to BitPay or Coinbase.</comment>


Apparently, employers are still asking for Windows 95 and Windows 3.1 skills  - <AUTHOR> http://www.indeed.com/jobs?q=%22Windows+95%22&l=

<comment><USER2> Many of the postings for 95 and 3.1 appear to be in the field of health care.

Perhaps this is an important message to companies attempting to create rapid innovation in the health sector...

<comment><USER3> If it's anything like the way specialist science-lab IT works, I can definitely see that. There's plenty of chemistry labs with ancient OSs on some machines because they have some piece of equipment that doesn't have drivers for anything newer. Basically a disconnect between lifecycles: a good piece of chemistry equipment is supposed to last 20+ years, especially if it's doing something relatively routine and well-understood, whereas software seems not to usually be intended to stick around for 20 years.

<comment><USER4> > Basically a disconnect between lifecycles: a good piece of chemistry > equipment is supposed to last 20+ years, especially if it's doing something > relatively routine and well-understood, whereas software seems not to > usually be intended to stick around for 20 years.

This is a good observation, and would probably make a great topic for a much larger discussion/essay.

<comment><USER5> Consistency is huge. It's amazing what some of those guys will get out of their equipment. I spent some time talking with a guy who builds data acquisition equipment. Most of his customers started using his sensors in the 80s and until the system either breaks beyond repair or the entire team of scientists has retired, they want to keep the exact same setup. Amazing dedication, but the benefits of testing with the same equipment over many years can lead to some great observations over the long term.

</comment></comment></comment></comment><comment><AUTHOR> And Windows 3.1 also: [http://www.indeed.com/jobs?q=%22Windows+3.1%22&l=](http://www.indeed.com/jobs?q=%22Windows+3.1%22&l=)

They may have been copying and pasting the same posting for years.

And these are the ones who glance over resumes to see who is qualified. That's very disturbing and discouraging.

</comment><comment><USER6> Last year I worked for a company that runs a huge (hundred of thousands of lines) Ms Access 97 software.

The migration to Access 2003 needs lot of changes and (worse) they don't have a version control tool, schema of the application, any documentation... The code is a mess and written by bad programmers.

So what to do? Start programming for Office 2007 from scratch? This decision took them around 2 years after failing to integrate their access tables with Microsoft SQL (The speed is insanely slow for large corporations).

<comment><USER7> I need to find companies/projects like these. I would have loved to solve this problem in one way or another.

a) Rewrite as a web-app in platform of choice.

b) Put the entire DB in RAM on a really fast Windows server using SuperVolume. I'm guessing the MDB is less than 16GB in size. Setup Citrix/XenApp on it and deploy MS Access 97 as a standalone Xen application. Users only need to log on to <http://citrix.company.com> and click the "Access 97" icon. It will launch Access as a local app but it actually runs on the server. You get local disk speeds on the DB with minimal network usage. XenApp licenses are very cheap compared to even new Office licenses, let alone a full rewrite. If users do not need to change the Access 97 code/queries, you can deploy Access runtime instead of the full-access.

c) I'm guessing they already tried to move the tables to MS SQL while just linking it from Access 97. If that isn't possible because the code uses tons of Access specific queries, mirror every table to MS SQL periodically, depending on the frequency of updates. Convert the slowest read-only reports to use the data from SQL while data-entry continues to use Access 97 tables.

d) Break up the single Access DB into multiple DBs if possible. If Finance and Warehouse modules share almost nothing in common, they don't need to be on the same DB. If the 'employee' table is used to authenticate logins, put that table on MS SQL and link it from both Finance.mdb and Warehouse.mdb.

e) Implement a decent ERP system if this application is really core to the company's operation. MS Dynamics NAV would probably be their best bet.

<comment><USER6> Thanks for your insightful comment. Here are my comments on your points.

a) They have currently started doing it.

b) Companies don't need it. They aren't really bothered with Access 97 and Windows 2000 or XP. All they need is our application. Low OS/Application means low and cheap hardware.

c) Tried the simple linking in MS Access, no improvement in speed. We need to re-write all the queries from scratch. Many problems showed and since the code base is huge, rewriting from scratch seemed more feasible and easier.

d) The application is huge, it has dozen of DBs

e) I don't know what you are talking about, but will do a little research.

<comment><USER7> Those were just five different ways you could have gone. (a) is what I would have suggested too. I'm going to guess the main reason for the speed issues is bad queries (m*n joins, no/few indexes etc). The best solution is often a rewrite in these cases.

What I meant by (b) was to put the entire database in RAM and let users access it by logging on to the server directly. You can put the MDB files on a file- server network share (like P:\Database\Company.mdb) and 10 people can use it at the same time as long as they all have Access 97 on their local machines and have read/write access to the P:\Database folder. Instead of doing it this way, try this for super speed: setup a fast Windows server with tons of RAM, create/format a 2GB-16GB partition as drive D:, install SuperVolume to load that entire drive D: to RAM. Move the MDB files here.

Don't make users open the MDB files from their PCs directly. Let them log on to a Windows Server as Terminal Server (TS) users and access it from the D: drive. If you have some money, install Citrix so logging on to the TS could be done by just visiting a website and logging in. This would let people from all over the world use the Access MDB at exactly the same speed as anyone physically logged into the server. With Citrix, you'll only need 20-32kb of bandwidth for most users.

<comment><USER6> Users working over the same database crash it. It seems that when users send requests in the same time, the DB crash (it can be fixed, but that's annoying). It doesn't always happen, but when you have more than 10 users, this increases the odds.

So the short term solution was Terminal Server. It worked great and speed was fine, until in some days something happened in the Windows Server that slowed it down (some kind of caching or somewhat), so the illiterate technician just said that Windows Server is bad.

We are now (Ok, I left) reckoning on an advanced/new Web or Desktop platform. They are aiming to finish a part in the software this year. Will see what they do ;)

</comment></comment></comment></comment></comment><comment><USER8> Windows 95 is still used extensively in embedded programming due to the unparalleled direct hardware access that it provides. When you are developing code for devices that use 8086, or even older FPGA's, you don't need the latest OS. In fact, the newer versions of Windows have more security and device layers which block the operation of the older programs used for uploading code to those older microprocessors.

As a result, some of the old chipsets can only be programmed using old software which only works on 95. For a business that does embedded programming it isn't feasible to switch to a new chipset that would require a complete code rewrite just so that they can use a newer OS.

Interestingly embedded programming is also an extremely high paying job because there aren't that many people who can do it.

<comment><USER9> Why wouldn't you just use Linux for embedded systems? Seems wasteful to use a GUI-based OS for something that will most likely be a single-purpose device.

<comment><USER10> Toolchain and development cycle. Windows 95 systems programming is trivial, and not in a good way. You can access privileged system registers and memory areas directly, until you crash your box. Once you learn how to write a VxD it's a matter of tweaking it for other purposes, since the great difficulty lies in just getting the skeleton to work.

<comment><USER11> Linux is mostly that easy, in my experience. It may be easier, since there are probably already drivers for most of your chips. At any rate, once you have a skeleton kernel mode driver, it's just a matter of tweaking it for other purposes.

</comment></comment></comment></comment><comment><USER4> How many point-of-sale systems have you seen that run on Windows 3.1 or old curses-ish UIs? I'm sure it's even more common out of public view: in airport ticket kiosks, warehouse inventory systems, and the like. I saw my share of anachronistic systems working for a Midwestern public library system.

Legacy code hell doesn't just apply to codebases.

<comment><USER10> LOL @curses; those are Borland BGI and Turbo Graphics, man. To run curses at that time, you needed a 25k Sun Workstation.

<comment><USER11> Some of them probably were curses-based, running on a central server feeding a dozen Wyse terminals around the building.

</comment></comment></comment><comment><USER12> I was already to laugh about this when I saw the first ad was for a job in my home town!

Actually, it wouldn't surprise me if there are jobs out there that require knowledge of DOS. It seems nothing ever truly dies.

<comment><USER13> Was it Joel that said "obsolete hardware goes in the trash heap; obsolete software goes into production tomorrow"? I can't find the quote right now...

<comment><USER12> ha ha. good one

</comment></comment></comment><comment><USER14> Hey, don't be hatin' on Win9x - it's allegedly got greater market share than the iPad or Blackberry:

[http://www.netmarketshare.com/operating-system-market- share....](http://www.netmarketshare.com/operating-system-market- share.aspx?qprid=10)

<comment><AUTHOR> Does the internet even "work" with Windows 95/98?

<comment><USER10> Did you not exist 10 years ago? Sheesh. I still get Windows 98 hits in my server logs, mostly zombie boxes running bots.

<comment><AUTHOR> Is there a need for your first sentence, the praiseworthy one?

I was asking if most of the sites would work with browsers in that day...and I didn't know Opera and Firefox still support them.

<comment><USER10> I apologize for being a dick. Your question was about the internet, which _did_ work with Windows 95, and so did the web, in fact, the whole dotcom era was powered by Windows 95 more than any other OS.

Windows 95 had a native implementation of sockets, Winsock2, it also had telnet, and a serial communication utility. I ran Opera, IE and Netscape Navigator Gold on it. Eudora for Email, and Agent for a newsreader. Windows 98 shipped with Internet Explorer and had Active Desktop, the precursor to all the gadgets that you see today. The Windows SDK included even more controls, including MS HTML control that allowed you to embed web views (i.e. html frames) inside your apps. All MS help was converted HTML format as well, and the help compiler could convert HTML documents to CHM. It was, only, 10 years ago :-)

I still use the email account I opened using Windows 95 :-)

</comment></comment></comment></comment></comment><comment><USER15> OK, the support ones make some sense, but I'm baffled by the one that wants experience with Matlab and Windows 95. Who uses Matlab under Windows 95 today? A scientific organization that hasn't been able to buy new hardware for more than a decade?

<comment><USER16> Assuming it's on the same machine: perhaps they have an instrument which runs on Windows 95 and they do some light data processing, or use Matlab to make it interoperate with another device?

We've had a similar need in my lab, although it was Windows 2000. We buy new machines alright, but some instruments can't be easily upgraded due to the computer being integrated with it, the drivers being proprietary and specific to the OS, etc.

</comment></comment><comment><USER17> I believe some hotel interactive systems (i.e. through the TV) use Windows 95 or 98.

</comment><comment><USER18> I have a client still running an old NT box because it's the newest computer that can run a $100k+ piece of equipment. The piece of equipment it is attached to is in excellent shape and is still considered state of the art.

</comment><comment><USER19> This shows the great disconnect between IT and HR at most companies.

</comment><comment><USER20> Apparently, everyone's copying Google's layout.

</comment><comment><USER21> i'd rather work at taco bell

<comment><AUTHOR> Or Subway, unless you want to live on the toilet.</comment></comment>


Playtech buys Yoyo Games for $21.7m - <AUTHOR> http://www.globes.co.il/en/article-playtech-buys-yoyo-games-for-217m-1001010618

<comment><USER2> My first thought is that that figure seems somewhat low for an established company with 750k users (even if a significant proportion are not paying customers).</comment>


Plain Old JavaScript - <AUTHOR> http://odetocode.com/Blogs/scott/archive/2012/02/24/plain-old-javascript.aspx

<comment><USER2> As far as almost every major JavaScript framework coming with it's own style/approach to inheritance -- I don't blame the frameworks, I blame JavaScript.

Inheritance in JS is at best awkward and unintuitive; if this wasn't the case you wouldn't have so many people trying to fix it. And let me just add that it's not this way because it isn't "classical", it's because it's also not really "prototypal" either. The awkward in-between mix of the two approaches means that no one can decide which, if any, direction is the "true one" to go in.

You have a bunch of people claiming theirs is the fastest and how JS is designed, but then others are claiming theirs is more elegant and fits better with JavaScript's semantics, then another focusing on how inheritance would have been had they probably not decided in the last minute that "oh no, this is too weird, it needs to be more like Java".

I just find it quite ridiculous because I can't think of another language that has these types of problems over something as fundamental and basic as inheritance in an OO language.

<comment><USER3> I'd agree that I find the inheritance model JS's primary faltering. I really wish they had decided to follow the same ECMAScript standard that Actionscript 3 followed in that I find AS3 to essentially just be Javascript with some simple and sane OOP constructs.</comment></comment>


Ask HN: What is a rough standard for ownership split when Angels/VC invest? - <AUTHOR>

I have been thinking about approaching Angels for a new project but am unsure about how ownership should be split. Are there any rough guides? <comment><USER2> Various facts applying I have heard as little as 8% and as much as 30% for a typical Angel round. Venture backed Seed funding usually being within that range.

It's good to be flexible but to have enough of a belief in what you are doing that if the first offer isn't the right offer you are willing to walk away in search of the right deal. Having a ceiling is generally good.

You want to make sure you can last 2-3 rounds before giving up a majority stake.

</comment><comment><USER3> See [http://indexventures.com/news-room/blog/a-letter-to- german-e...](http://indexventures.com/news-room/blog/a-letter-to-german- entrepreneurs) \- it's about the German market but the numbers are in the right ballpark for most major markets.

<comment><AUTHOR> Very insightful, thanks.</comment></comment>


U.S. Wants Prison Sentence for Facebook User Who Pirated 'Deadpool' - <AUTHOR> https://torrentfreak.com/u-s-wants-prison-sentence-for-facebook-user-who-pirated-deadpool-180916/ <comment><USER2> If I created a site where people could create their own groups and upload files such as this, and then ignored that people were uploading movies like Deadpool, I would be chased by the authorities.

Facebook allowed more than 6 million downloads of what must have been quite a large file without doing anything about it.

Why is Facebook seemingly immune to prosecution?

The cynic in me thinks it could be somehow related to the fact that facebook would actually have the means to fight such a case.</comment>


Peter Thiel's moral sleight of hand - <AUTHOR> https://techcrunch.com/2016/08/15/peter-thiel-explains-gawker-suit/ <comment><USER2> Look at what the Daily Beast did _today_ when they ran an article outing olympians. They took the article down and apologized:

[http://www.thedailybeast.com/articles/2016/08/11/a-note- from...](http://www.thedailybeast.com/articles/2016/08/11/a-note-from-the- editors.html)

Had Peter Thiel not done the public service he did by backing that lawsuit, I'm not sure that the (aptly-named) Daily Beast would have backed down.

The media doesn't have the right to dig into anyone's bedroom, and Thiel is a hero for standing up to them.</comment>


Stripe Test Numbers Module - <AUTHOR> https://github.com/phoenixbox/stripe-test-numbers <comment><AUTHOR> Stripe test numbers in a module so no more copy and paste from the Stripe docs :)</comment>


Ask HN: What was your experience using a graph database? - <AUTHOR> I have an idea that I want to work on during the break. And I think this is something that would suit a graph db, (a service that would link users together depending on their choice profile). So what was your experience of working with one? Which graph db did you use?<p>Edit:  What sort of problems are well-suited to graph databases? In other words, what are some scenarios where something like Postgres is not suitable anymore? <comment><USER2> Graph databases are the NoSQL of this half decade. Move cautiously. Just because you conceptualize it in your mental model does not mean you need a graph database. Further, recognize most (all?) implementations are not yet as performant or scalable as traditional data storage solutions.

Design your data schema first, then design your queries and finally your data lifecycle pipeline. Run some estimates on the order of magnitude for inserts, query rates, query types and storage sizes - then compare those numbers to the real-world perf of the various graphdb solutions. In general, compared to more typical solutions, you have more expensive inserts, query costs and storage sizes in exchange for more expressive queries. There aren't many application where those cost tradeoffs make sense.

Source: Twice now (2012 and 2018) I've reviewed available graphdbs for storage of enterprise security data when doing the initial platform technology selection. Both times the team fell back onto more traditional approaches.

<comment><USER3> I agree completely with this. move cautiously. I personally found the entire space very immature.

neo4j is the most mature solution I found (in the Java space). if you want to use something else go for it, but you may be surprised at the low quality.

op: I strongly recommend implementing most/all of your pipeline using graph & non-graph approaches. choose the graph approach iff you can demonstrate with hard evidence that it makes sense.

</comment></comment><comment><USER4> Disclaimer: I'm an 8 year Neo4j user and 6 year employee.

Neo4j is a great database if you learn how to use it and are willing to get your hands dirty every once in a while (write Java). I keep a blog at maxdemarzi.com on the things you can do with it. See the dating site blog series it may be relevant to what you are doing.

We have thousands of videos, slideshares, blog posts trying to teach graphs. If you take the time to learn you will be successful. If you connect with us on Slack and ask you will be successful.

If you treat it like an rdbms you will fail. See [https://m.youtube.com/watch?v=oALqiXDAYhc](https://m.youtube.com/watch?v=oALqiXDAYhc) for a primer and see [https://m.youtube.com/watch?v=cup2OyTfrBM](https://m.youtube.com/watch?v=cup2OyTfrBM) for the crazy stuff you can do that most DBs can't.

<comment><USER5> Every time that Neo4J is mentioned here, the pricing issues are raised.

No exception today: I used Neo4J at a previous startup, but after using the "free" non-scaled version of it, we got into a hard bottleneck due to a lack of scalability. When we looked to scale Neo4J, we almost had a heart attack when seeing the price. Being this a 50 people "developing country" startup we could not afford to pay the very steep prices.

<comment><USER6> Disclaimer: I know nothing about Neo4J or their pricing structure. To be fair, though, niche products are often very expensive because there aren't many customers to pay for the development. If you have a million paying customers you can charge them $10 a year each and fund a reasonable sized company. If you have 5, then you need to charge them $2 million each ;-) Having said that, I tried to find pricing information on their website and couldn't find it. For me that's a sign of "If you have to ask, you can't afford it" level of pricing...

</comment></comment></comment><comment><USER7> New graph DBs implemented with the GraphBLAS linear algebra model will be orders of magnitude more performant than previous gen DB models. RedisGraph 1.0 is the first public GraphBLAS database implementation. And things are about to get even faster with the GraphBLAS GPU implementations in the works.

See previous discussions on GraphBLAS [https://hn.algolia.com/?query=GraphBLAS&sort=byPopularity&pr...](https://hn.algolia.com/?query=GraphBLAS&sort=byPopularity&prefix&page=0&dateRange=all&type=all)

<comment><USER8> Thanks for this link, very interesting talk from the graphblas author:

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

I've never seen any advantage to graphdbs over relational models until I saw this talk. Raising graph analysis to the level of linear algebra is brilliant.

<comment><USER9> > Raising graph analysis to the level of linear algebra is brilliant.

Adjacency matrices is how graph problems were handled by APL programmers in the 1980s, mostly because there was no alternative before nested arrays. At the time, there was not a lot of vectorized hardware, and main memory sizes were too small for many problems, so the adjacency matrix representation was more of a problem than a good solution. It's really the advances in vectorized hardware and main memory sizes that have made this technique practical for large graphs.

<comment><USER7> Yes, a lot of innovation had to occur to make the GraphBLAS linear algebra model practical, which has been in the works for more than 10 years. It began with Jeremy Kepner and John Gilbert's work formalizing the linear algebra model over semi-rings [1]. And then working with Intel, IBM, Nvidia and the other hardware vendors to define and implement a standard set of hardware primitives. But you could really see the stars align a few years ago then when the deep-learning ML wave hit because it paved the way with a surge in demand for GPU/TPU accelerators in the data center. A lot of things had to happen in to make this all come together. It's been an industry-wide effort.

[1] _Graph Algorithms in the Language of Linear Algebra_ , by Jeremy Kepner and John Gilbert [https://epubs.siam.org/doi/book/10.1137/1.9780898719918](https://epubs.siam.org/doi/book/10.1137/1.9780898719918)

</comment></comment></comment></comment><comment><USER10> Actively using ArangoDB. It has good performance and features. The only thing lacking is something akin to "views" but you can always denormalize into another collection albeit managed by the application. Graphs are a very natural way of thinking about entities and relationships and in its simplicity my development sped up. I personally like to try and schema out in MySQL Workbench etc. but if you want to get started doing something you can basically just make a mind-map and that's effectively your schema, very intuitive and quick. Great for proof of concept.

Oh and the ability to query for shortest path and similar graph computations, and the DB does all the heavy lifting, is super nice.

<comment><USER11> One of the latest releases added views to arangodb in what they call "ArangoSearch"

[https://docs.arangodb.com/3.4/AQL/Views/](https://docs.arangodb.com/3.4/AQL/Views/)

</comment></comment><comment><USER12> I have worked on a few projects where graph databases were used. I have not personally seen a case where I feel they add much value relative to their complexity and tradeoffs.

One of the projects was a business workflow application centered around validating business processes by collecting and reporting on process data—think manufacturing quality control. A graph database was used in an attempt to allow application users more control in defining their workflows and give them more expressive semantic reporting abilities. We tried several graph databases. In reality what happened was that the scheme became implicit and performance was truly awful. The choice of a graph db was a strategic decision; we wanted to enable a different user experience. We probably could have done this project in 20% of the time with a standard database and wound up with a better result.

I have also worked on a problem related to storing and retrieving graph data for image processing. The graph db was obscenely slow and inefficient despite the data models being actual graphs.

Both of the projects I worked on involved people who are experts in graph databases. The level of nuance and complexity was astounding. Even simple tasks like trying to visualize the data became monumentally complex.

My takeaway from both of these experiences was that unless you intend to ask questions about the relationships, a graph might not be a very good fit. Even in that case, other databases will likely perform just as well.

(edit: add last sentence)

<comment><USER13> Holy crap, have we worked on some of the same projects? GraphDB inappropriately applied to a process definition/exploration application. In my case I'm pretty sure the correct solution taking into account all desired functionality and existing support was a desktop (sigh, maybe Electron I guess) app and good ol' SQLite, but nooooo, we did a web app with server-side storage in Neo4j. I tried to sell PostgreSQL as it was 100% for sure a better fit for the kind of queries we'd be running, but that didn't fly. They had a Neo4j "expert" to whom I sometimes had to explain how Neo4j worked. The highest-tier tech manager at the client with whom I interacted was learning about Neo4j from what was mostly a marketing book from the Neo4j folks, turns out.

They burned a shitload of money on those bad decisions, on that and other products they'd previously stuck on Neo4j for no good reason, which were also seeing poor and unpredictable performance and having a rough time with immature supporting tools for the DB. Whole thing's closely related to the "we have big data, it's in the single digit GB range, so big! We need big data tools!" error, I think.

> My takeaway from both of these experiences was that unless you intend to ask > questions about the relationships, a graph might not be a very good fit. > Even in that case, other databases will likely perform just as well.

Precisely the same conclusion I reached, at least in the case of Neo4j. If the main thing you need to do is _answer questions about_ graphs, it might be an OK DB to use. If the main thing you need to do is _extract data from_ graphs, then you sure as hell don't want it as your primary datastore. Maybe— _maybe_ —some kind of supplement to a SQL DB or whatever depending on your exact needs, but it shouldn't be what you're actually storing most of the data in.

<comment><USER12> Your experience sounds identical to my own. Particularly the "marketing book from the Neo4j folks" starting you down this journey.

</comment></comment></comment><comment><USER14> I've played around with RDF/N3 databases a bit, but mostly then from a document-oriented storage angle. I believe this has much of what you're looking for, ie getting away from table-based databases, and moving closer to optimal data architectures.

Also, if you're curious about this sort of database design, NASA shared some interesting work on XDF: TheExtensible Data Format Based on XML Concepts[0][1], which was part of their long-range Constellation Project[2] toolset for building, launching, and operating the Ares spacecraft. They detailed it in this NExIOM slideshow[3], which reading again after quite a while brings back some very good memories. Enjoy!

0: [https://nssdc.gsfc.nasa.gov/nssdc_news/june01/xdf.html](https://nssdc.gsfc.nasa.gov/nssdc_news/june01/xdf.html)

1: [https://github.com/sccn/xdf/wiki/Specifications](https://github.com/sccn/xdf/wiki/Specifications)

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

3: [https://step.nasa.gov/pde2009/slides/20090506145822/PDE2009-...](https://step.nasa.gov/pde2009/slides/20090506145822/PDE2009-NExIOM- TQ_v2.0-aRH-sFINAL.pdf)

<comment><USER15> Datomic (which I already shilled in this thread) is basically immutable RDF with an explicit time dimension, plus an intuitive sql-ish relational/graph query library

<comment><USER16> And very buggy and slow.

</comment></comment></comment><comment> good-idea I have used Dgraph on a couple of projects and enjoyed it. It seems a little more natural to me to think about all of the relationships between my data. It also can be queried using a GraphQL(ish) request.

But, it hasn't been around for long and doesn't have any options for hosting, and the JS client library is pretty basic - so you need to do a lot to have something a little more abstracted like Mongoose.

I enjoyed learning something new and will use it again - but unless I need queries that traverse many relationships, I'll probably use Postgres.

</comment><comment><USER17> My experience with graph DBs: schemas usually become implicit and ad hoc, minimal tooling support and even less _mature_ tooling, difficult to explore and understand your data, performance is often poor, memory usage can be problematic because they usually pull the graph into RAM, and there are few people with real experience (comparatively to traditional DBs) which can create a negative feedback loop.

I have yet to run into a use case where a graph provided more value than a relational model. I'm sure they exist, but I haven't found them yet.

</comment><comment><USER18> What sort of problems are well-suited to graph databases? In other words, what are some scenarios where I will run into trouble using Postgres?

edit: I've previously looked into ArangoDB.com, Dgraph.io, JanusGraph.org, and Cayley.io (to run on top of CockroachDB). I understand all of these are scalable distributed systems, and Postgres is not (CitusData.com aside). Do the benefits of these other systems mainly come when you outgrow single-node Postgres (which has JSONB for "document" storage, PostGIS.net, Timescale.com, etc)?

edit 2: where can I find more technical, concrete examples than [https://neo4j.com/use-cases](https://neo4j.com/use-cases)?

<comment><USER19> > What sort of problems are well-suited to graph databases?

If you have a graph, then a graph database, with built-in graph algorithms, will be able to run operations on your graph without pulling all the data out to a client. I'm not an expert in PostgreSQL but I don't think it has any graph algorithms?

<comment><USER20> _If you have a graph, then a graph database_

How does one know if it's time to migrate to a graph database?

Right now I have a large (6.5GB) database that I have to sometimes work with, and the queries are getting more complex as more features are added to the project.

Right now the data is stored in MySQL, but to get anything interesting out of it requires multiple queries and then sifting through the data later. It all seems cumbersome.

<comment><USER21> It depends on the structure of the DB - 6.5GB is large if its attributes, if its documents then not so much. If its an index of documents then a different problem. Access patterns matter to. Like if its a 6.5 GB database that stores OLTP data, then yes thats large. If its a history of document modifications then probably small. If its historical data for a data cube sort of app, then its pretty small, I'd say tiny - I've worked on ones that get into the TB's.

<comment><USER20> It's all attributes; no documents being stored. About 2m records.

<comment><USER21> So thats a bit over 3k per record. Forgive my curiosity but whats the application domain? Thats a lot of info per record.

</comment></comment></comment></comment></comment></comment><comment><USER15> I gave a talk about this at ClojureNYC in 2017, the second half of the talk is about modeling graphs in various popular databases (SQL, Neo4j, Mongo, Datomic) and the problems you encounter [https://s3.amazonaws.com/www.dustingetz.com/Getz+2017+Datomi...](https://s3.amazonaws.com/www.dustingetz.com/Getz+2017+Datomic%2C+ORM%2C+Hypermedia+-+ClojureNYC.pdf)

Datomic (an immutable database for doing functional programming in the database) is central to my startup [http://www.hyperfiddle.net/](http://www.hyperfiddle.net/) , I don't think Hyperfiddle is possible to build on other databases that exist today. The future lies in immutability, full stop.

Datomic : databases :: git : version control

</comment><comment><USER22> GrapheneDB (Neo4j) on Heroku here - relatively small scale project so far (1000's of users) but very easy to use, no problems, great support. If your problem space is a graph, using a graph will make your life easy once you get over the GraphQL learning curve.

We're on Rails and so use the Neo4j.rb gem which has been around for quite a while and also has a ton of work and support around it. The Ruby DSL for it makes it as easy as you would expect in Rails for most basic relationships and queries, and you can access more advanced features or drop into GraphQL as needed.

For our use case, a graph DB was definitely easier than trying to manage relationships and categories in a relational DB but it will definitely depend on your use case. Good luck!

<comment><USER23> I used the same technologies, but neo4jrb did have a few rough spots. The change from v7 to v8 was a large, breaking change, and I ran into a number of (minor) compatibility issues with other libraries.

As you say, the appropriate use of a graph database is highly situational. I certainly would not advise doing so without a great deal of careful consideration. However, I tend to doubt whether any amount of consideration would be sufficient; it may be that the most reliable way to determine whether a graph database is the best solution is to try it and see. At least, I was never really able to stop wondering whether I might be able to do things just as easily using Postgres; I would defer to those with more experience, however.

</comment></comment><comment><USER24> Couple of quick points a. If you are primarily dealing with categorical data - strings as opposed to numbers, graphs are pretty good for storage, retrieval and visualization. Categorical - genes, diseases etc. and require a lot of graph algorithms eigenvalue, shortest path etc. Biggest difference in querying is - in SQL you say "what" you want, in SPARQL / Gremlin you say "how" you want it i.e. what relationships to take b. Graph as a representation format shines, but as a storage mechanism, have not found it to be optimal. Many go for graph as a layer on top of RDBMS c. RDF is better in terms of standardization instead of prop. Graph Database. This is because you can arbitrarily decide what should be a vertex vs. what should be a property. In things like Neo4J it gets fixed once you decide. Virtuoso comes pretty close since it implements RDF on a RDBMS (my limited understanding) d. It is good for representing knowledge / metadata (atleast RDF) but again I would stay away from representing data. e. Your choice of graph algorithms typically ends up being what comes prepackaged (say gremlin etc.), or you take it intermediary and use algorithms there (Networkx / igraph (igraph is awesome)) or writing your own (this is not trivial typically) f. Many pointed about the schema, I actually think this is the advantage of RDF. My typical workflow is to start with RDF, do my basic stuff on RDF until I have a good understanding of what are the queries and therefore optimal schema and then migrate to RDBMS as needed. Trying to do large scale on RDF on a laptop infra is not optimal

I would try to use some combination of RDBMS with runtime graph like igraph. YMMV.

</comment><comment><USER25> Postgres not suitable? Postgres is probably the most powerful multimodel data store with the lowest TCO on the market today.

Postgres can be used for columnar data, as a graph database (using [https://github.com/bitnine-oss/agensgraph](https://github.com/bitnine- oss/agensgraph)), as a timeseries database (using [https://github.com/timescale/timescaledb](https://github.com/timescale/timescaledb)), and as a KV store (which is astoundingly simple to do using its builtin jsonb column type)

In fact at this point the only thing other than Postgres I would look at is FoundationDB due to the fact that (although it takes some time) you can model and run ANY kind of data store on top of it.

</comment><comment><USER26> Stay away from Orientdb it is a super hyped multi-model database but it's unreliable and hard to maintain. I worked with it for 2 years incl. paid professional support.

<comment><USER27> Can you elaborate a bit on the problem(s) you encountered?

</comment></comment><comment><USER28> We used Neo4j in a prototype rebuild of our primary application for about a month before switching back to MySQL. In that time it crashed and lost all of our data several times. We found it untenable.

My faith in it was soured at that point. That said, this was probably 5ish years ago now, so I cannot speak to how much it's stabilized since then.

</comment><comment><USER29> RedisGraph! it's a module added to redis. very simple and performant, they supply a docker image already running it and clients exist in most languages.

<comment><USER30> I wanted to use it, but it was not compatible with cluster redis on AWS. That seems ridiculous to me

<comment><USER31> You might want to consider using Managed Redis by Redislabs [https://redislabs.com/redis-enterprise/vpc/](https://redislabs.com/redis- enterprise/vpc/)

</comment></comment></comment><comment><USER32> I'm using datomic for 2 years and it's awesome. When I look to others graphdb, I see that they don't have a powerful query engine.

<comment><USER33> I've endured Datomic for 4 years and I really wonder what the folks who enjoy it are doing, because for me it us utter misery.

\- It's miserably slow (if you wish to contradict this statement, please provide numbers) \- Consumes gobs of memory (export our data to JSON and it's orders of magnitude smaller) \- Full text search will consume all your CPU cores for if you given it a short query (seriously, don't touch this feature, it is a basket full of footguns) \- Resource leaks (the Cassandra backend used to leak full databases!)

I've been up to 3:00 a.m. dealing with bugs in Datomic. What use cases does it actually work for?

<comment><USER32> Did you get in touch with cognitect? My datomic is running for more then 2 years with no crashes. I'm using it on dynamodb.

</comment></comment></comment><comment><USER34> Understand the difference between graph querying and graph processing. If you have a question like, "give me all the friends of friends of person X that share a college", then that's a query that a graphdb would be helpful for. Saying, "find clusters of nodes based on relationships of types x, y, and z" is a processing job. You might need to query the graphdb to get the graph data that's then loaded into a graph processing engine.

So be clear on exactly what you're trying to do.

</comment><comment><USER35> I've been using Neo4j to store the bitcoin blockchain. Bitcoin transactions have a graph structure, and so by storing the entire blockchain in a graph database you can easily query for connections between different bitcoin addresses.

If you're interested, I've done some explanation of it here: [http://learnmeabitcoin.com/neo4j/](http://learnmeabitcoin.com/neo4j/)

My experience with Neo4j has been a good one. The database is currently around 1TB and runs continuously without a problem. It's fast enough to use it as a public blockchain explorer, whilst simultaneously keeping up with importing all the latest transactions and blocks on the network.

It took some time to get the hang of the Cypher query language to get it to do what I want, but the browser it comes with is handy for learning via trial and error. I found the people on the Neo4j slack channel to be incredibly helpful with my questions.

</comment><comment><USER36> Consider using Arangodb, a multi-model db. Document store, and graph-db in one. Has a query language (aql) that is easy to understand. Joins and relations are easy to accomplish. Version 3.4 has many new features, like full text search and geojson.

</comment><comment><USER37> Highly recommend you look at JanusGraph. Gremlin query language is quite easy, it's open source and the underlying graph DB for most cloud providers. I've extensively looked at the others. Janus Graph was our choice.

</comment><comment><USER38> As someone who is working on a project trying to visualize person ->company relations, I went trough GraphDb (that's the name of the product) that uses SPARQL and then migrated to neo4j, I prefer ne4js Cypher language over SPARQL for graphs. From what I've found SPARQL cannot do "find all related entities from starting entity X with depth n"

Also I prefer projects that have web UI for queries and visualization

<comment><USER39> This isnt true, you can achieve that easily with SPARQL using property paths. I've been doing that and much more with Sparql for years

</comment></comment><comment><USER40> I worked on a project which employed the Gremlin API on an Azure Cosmos DB instance. This configuration worked (largely) seamlessly, though it is worth accentuating how we worked explicitly with graphs and consequently benefited from being able to actually store and query our data as graphs. An alternative could have been Neo4j, which, based on preliminary research, would have done the job, too. Overall, it was a nice, new experience which arguably presented a learning curve. One piece of advice, however, would be to thoroughly evaluate your requirements and strongly consider whether you actually need a graph database in the first place! If you are dealing with an excessive amount of interconnected relationships, definitely consider this option. If not, chances are you will have something functioning faster with a conventional database.

</comment><comment><USER41> I am thinking about building an app using Neo4j.

I built a prototype with Postgres but there were bottle necks in the IO and querying. Did some research and it turns Neo4j might be better suited.

The app is a beer recommendation system using data scraped from Beer Advocate. It makes recommendations based on the location of the user and beers that the user enters in.

Why a graph database might be suitable for this is that there are no null relationships with Neo4j. In my limited understanding, this means that full table scans don't need to occur for making recommendations based on location.

Supposedly cosine simularity and other recommendation algorithms are built in, so looking forward to using that.

</comment><comment><USER42> We started using AWS Neptune (you can use it either with SPARQL or Gremlin) for a medical knowledge graph and while the AWS service is very good, the problem is the same as with any other NoSQL database:

Schemaless is ok if you just need to throw data and then analyze it in whatever way you find, but for two way data flow (ie: using written data in a user facing application), schemaless is a true headache and you end up keeping your schema in the application level anyway.

Besides that, the experience have been great, our hyphotesis of evolving our schema of concepts and relations between them freely have been proved successful.

</comment><comment><USER43> Not to steal thunder from graph databases, I want to point out that recursive SQL enables support for graph-like data structures in a relational database. You write constraint logic in the form of trigger functions to enforce directionality and prevent cycles and so forth. With this, you may not need a full graph database for your work. It's up to you to decide which is the best tool for the work, but you can't make a sound decision without being aware of the tool in the first place.

</comment><comment><USER44> I'm interested in using graph databases to model history and the humanities. I guess knowledge management, which is something I find RDBMSs are weak on. Not due to the schema, but because if you want to make relationships between _anything_ possible, you end up with one table containing all nodes, and one containing edges. Which if you have multiple types of node (e.g. People, Places, Battles) gets very messy.

I'm keen to hear from anyone who's worked in this field.

</comment><comment><USER45> The problems that are well suited to graph databases are the ones where you tried them on a more practical technology first add compared performance and maintenance costs.

<comment><USER46> ^^This, exactly. First see how far you can push a decent relational DB, then try harder. When you really can't push it any harder, or it becomes uneconomical to do so, _then_ look at graph solutions.

</comment></comment><comment><USER47> I used neo4j on a prototype [0] in 2015 trying to get better insight on how our various business users collected data from external partners. So it was like a giant metadata repository.

It was useful in trying to find connections and shortest paths. Project wasn't build out for reasons unrelated to graph dbs.

[0] [http://jupiter.phiresearchlab.org/#/main](http://jupiter.phiresearchlab.org/#/main)

</comment><comment><USER48> I wrote program that stores code in a DAG using Neo4j. It was fun, I enjoyed it. The performance was ok, but once I had finished prototyping it, I moved it into postgresql and never looked back. Neo4j was excellent for prototyping, but it requires _way_ more memory and cpu for a production instance than postgresql. I want to do more projects with neo4j, but I haven't had the time.

</comment><comment><USER49> Neo4j was easy to get started with though I have not built any really large projects. Graph databases are ideal for when you have lots of entities but are not sure about a classification schema, as you can just create classification entities and connect them to other entities as you see fit. If you like working with linked lists you'll pick up the concepts very quickly.

</comment><comment><USER50> spent months evaluating graph databases, finally implemented it in Cassandra. Don't believe the hype.

<comment> no-such-address Can you explain further? I tend to agree because the claim that "graph databases are good for highly connected data" seems funny - can't relational databases be "highly connected" in the same way? Isn't it really about query languages or maybe writing expressive schemas? I don't see how claims about efficiency stand up to an objective critique.

<comment><USER50> The issue at hand was to define vertexes with relationships and look up and track those. More writes than reads. I wasn't lead on it after the initial review and testing, but if you're doing something super simple, do it on postgress, I'd say. If you're doing something medium complex, use an off the shelf graphDB but beware rough edges and newness bugs. If you're doing something large scale and unique, talk to smarter people than me - I can introduce you :-)

</comment></comment></comment><comment><USER51> I asked a similar question some months ago: [https://news.ycombinator.com/item?id=16542183](https://news.ycombinator.com/item?id=16542183).

</comment><comment><USER52> Slightly related: I've been looking for a distributed graph database (preferably a RDF triple-store) for weeks, and haven't been able to find anything promising.

<comment><USER53> I am working on one on top of foundationdb. See [https://github.com/amirouche/asyncio- foundationdb](https://github.com/amirouche/asyncio-foundationdb). Chime in!

</comment></comment><comment><USER54> I was deeply disappointed. I need very rich algebraic structures, like hypergraphs and lattices, and no graph database seems to be up to the challenge.

</comment><comment><USER55> I'm also curious on this, for those who are using it, are you using it as a primary datastore?

</comment><comment><USER56> One question though . How do people deal with changing schema for a NoSQL database ?

<comment><USER53> They use migrations scripts.

</comment></comment><comment><USER57> Procedural and navigational data manipulation with graph, declarative with SQL. Views in SQL, no equivalent of them in graph.

It should not even take half a brain to understand why [pseudo-]relational replaced and obsoleted graph 4 decades ago.

<comment><USER7> No. Incorrect on all levels. You can do declarative with both, or take a procedural approach with both. You can use SQL or Datalog with both. You can create views with both, materialized or otherwise. Graphs have never been obsolete. Graphs and the networks they represent are the foundation for some of the most sophisticated algorithms we know.

<comment><USER57> 4 decades ago, mate. 4 DECADES AGO. Relational replaced graph 4 decades ago because graph lacked all that functionality 4 decades ago. And that it took 4 decades for graph to merely level up (and mostly by mocking relational-ish behaviour at that) is only telling of how advanced relational has always been.

(And pls note carefully that I didn't say graph was obsoleted as a mathematical theory. What I did say was that graph was obsoleted as an appropriate mathematical theory __* for underpinning doing data management with it __*.)</comment></comment></comment>


Offshoring is not making UK computer scientists largest unemployed group - <AUTHOR> http://www.computerweekly.com/blogs/inside-outsourcing/2010/09/offshoring-is-not-making-uk-computer-scientists-largest-unemployed-group-says-bcs.html?sms_ss=hackernews

<comment><USER2> I know very well from trying to hire decent comp-sci graduates in the UK that it's very difficult right now. They're either very poor candidates, or they're being snapped up on very high salaries. If you're a _good_ comp-sci graduate right now I would say that things are looking great.

<comment><USER2> Sorry, I am just going to reply to myself with a slightly contrarian viewpoint - as the article points out, low skilled jobs are being outsourced. This might make it more likely that it's graduate jobs being replaced with offshore/outsourcing, in which case we'll be left with the classic "foot on the ladder" problem.

Saying that, it's not my experience that this is having a noticeable impact, for what personal experience is worth.

</comment></comment><comment><USER3> To my mind this is the key quote:

"If you have a low skilled job there is a higher chance of your job being outsourced but if you are a software developer developing complex software you are very much in demand."

The fact is that most new CS graduates are "low skilled" as real-world, industrial programmers. A CS education can realistically only provide them a grounding in the core theory of the field; it can't, and shouldn't, be teaching them how to work within the context of massive, old, crufty programs that are the norm in the real world. This is the _responsibility of employers_ , and IMO when employers complain about a lack of "good" CS graduates it just shows that they have abdicated their responsibility to train their employers in their own industry niche and somehow expect cheap programmers who are subject matter experts with years of experience in a dozen hyper-specific tools to drop from the sky.

But of course the outsourcing shops are perfectly happy to peddle the lie that their own people are programming geniuses who are also subject matter experts --and look at all the money you'll save! The IT managers get suckered into hiring boatloads of consultants or sending everything offshore, their own good employees, if they had any to begin with, get fired or jump ship, and the cycle accelerates.

Sure I'm cynical, but I've seen it happen often enough, and heard the same from friends who've experienced the same, to justify it.

<comment><USER4> I disagree, I've been at a company where we had ~1500-2000 applications for graduate developer roles, so we had access to a substantial percentage of CS graduates. About 20% got through CV screening (which is basically have anything on your CV to show you're competent - good uni, an internship, challenging uni projects, open source projects, etc).

Of that 20% most of them failed to be able to handle fairly basic CS questions (implement a linked list, describe how hash-maps work, reverse a string, basic algorithm questions, fizzbuzz, basic language questions on a language the candidate claimed to know). About 5% were able to pass this stage, and of that 5% we made offers to most of them.

We weren't expecting people with a deep grounding in practical programming, we were expecting a decent knowledge of CS and some basic ability to actually produce code. There just aren't enough competent CS graduates on the market.

</comment></comment><comment><USER5> Funny, I have a software development with AI degree, and I can't get anything - not even tech support. Why do they come out with these stupid stories?

<comment><USER6> Why? Because despite surface appearances, the BCS is a lobbying group for employers. They want talent to be a commodity. That means "cheap" and "interchangeable". And it doesn't matter if engineer A isn't any good from that point of view; what matters is that engineer B is a 1-for-1 replacement.

I saw this as well when I was doing Mech Eng at college: time and time again, we were told, by the IMechE, our supposed professional body, that there was a huge shortage of mechanical (and other) engineers. I gather from physicists and chemists that they are told, there is a huge shortage of scientists. But any fule kno, the laws of supply and demand apply. I still get contacted by recruiters in engineering, offering me in some cases less than half of my present salary to go back...

<comment><USER7> I have cancelled my BCS membership after one year. My membership wasn't even marginally useful for me in any way, their magazine constantly reminds me that they have absolutely no idea what's really going on in technology and they keep spamming me with their stuff I don't care about.

<comment><USER6> Lawyers and doctors professional organizations are more like guilds. But the IMechE, the BCS et al actively work against the best interests of their individual members! The IMechE at least has the basic function of granting CEng to those that need it; there is no reason for anyone to be a BCS member at all.

<comment><USER5> Actually one of the magazines I got from the BCS (circa 2005) was saying how great outsourcing is. I wasn't so enthusiastic and didn't agree with the article.

</comment></comment></comment></comment></comment><comment><USER8> So if it isn't outsourcing then presumably it's because we are educating too many people with CS degrees? That should be easy to fix....

<comment><USER9> The article quotes people who claim that there is a _shortage_ of CS graduates.

<comment><USER7> Oh no, as someone who regularly interviews CS graduates in the UK, there's no shortage of graduates. There's a shortage of very good graduates, which is incidentally exactly the same type of graduates I would like to hire. Personally, I blame university admissions for that.

</comment></comment></comment><comment><USER10> What are examples of low skilled software development jobs?

<comment><USER4> The article talks about low skilled IT jobs (desktop management, support, etc.) rather than dev jobs, but low skilled developer jobs could be consider things like standard CMS customization, db migration scripts, web-scraping, simple psd2html work. Basically legwork stuff that's pretty mechanical but still needs a human to do it.</comment></comment>


Orange - Open source data visualization and analysis - <AUTHOR> http://www.ailab.si/orange/ <comment><USER2> From what I hear this is a pretty powerful data mining package (developed at the faculty I attend). Personally I haven't gotten to play around too much with it, never had the time to figure it out properly.

Protip: use it as a python library, a lot of stuff doesn't make it into the GUI.

<comment><USER3> It looks really cool; is it going to be the WEKA killer for '10?

</comment></comment><comment><USER4> Speaking as a rubyist, now that's a compelling reason to use Python more.

I would be happy to use this to read some MongoDB data as well (I guess it's probably possible).</comment>


Hey Google: Please Don't Create Another Facebook - <AUTHOR> http://www.thechromesource.com/hey-google-please-dont-create-another-facebook/ <comment><USER2> Even Google's CEO agrees: in Wall Stree Journal article, Schmidt says, "the world doesn't need a copy of the same thing."

[http://online.wsj.com/article/NA_WSJ_PUB:SB10001424052748703...](http://online.wsj.com/article/NA_WSJ_PUB:SB10001424052748703292704575393531040685308.html)</comment>