Google personalizes search results even when you're logged out, new study finds - <AUTHOR> https://www.theverge.com/2018/12/4/18124718/google-search-results-personalized-unique-duckduckgo-filter-bubble <comment><USER2> Welcome to 2009, I guess

"Today we're helping people get better search results by extending Personalized Search to signed-out users worldwide (...)"

[https://googleblog.blogspot.com/2009/12/personalized- search-...](https://googleblog.blogspot.com/2009/12/personalized-search-for- everyone.html)

<comment><USER3> There's a difference between Signed out, and Incognito (no cookies)!

\+ People generally tend to miss the point that Incognito doesn't prevent sharing the IP of the user.

\+ I think DuckDuckGo's study missed out using VPN in their analysis. i.e., SignedIn vs Incognito vs (Incognito+VPN)

<comment><USER4> The "even in Incognito" part of this is certainly the biggest result I see. And I agree on the study limitation; attempting to clean up localization effects after the fact doesn't feel like a strong fix. It should be possible to isolate device and location effects by using multiple devices in one location, then VPN-ing one device to multiple 'locations'.

One thing that caught my eye was Google's response about Incognito:

> _The company did confirm that it does not personalize results for incognito > searches using signed-in search history, and it also confirmed that it does > not personalize results for the Top Stories row or the News tab in search._

Since it's a corporate reply, the standard question is what's _not_ present: a statement that Incognito isn't personalized, or isn't personalized beyond device type and location. Perhaps I'm too cynical, but "we don't personalize using X" parses as "we do personalize in other ways".

<comment><USER5> _it does not personalize results for incognito searches using signed-in search history_

To me this sounds reasonable. A very large number of searches are locality based, and it is entirely reasonable to localize them based on IP address (and - as you note - the device type).

It's also reasonable to customize based on recent (session based) search history (refinements, spelling corrections, etc).

The difference between this and personalization seems mostly about semantics IMHO.

<comment><USER6> > To me this sounds reasonable. A very large number of searches are locality > based, and it is entirely reasonable to localize them based on IP address > (and - as you note - the device type).

I wish this was trivial to disable. I regularly search for things where I want the global result, and instead get weird local results that I don't care about. It's much easier to narrow a global search to a local one by adding an appropriate region name to the search than it is to expand a local search to a global one via search terms.

</comment></comment></comment></comment></comment><comment><USER7> I remember Paul Graham gave a keynote at one of the Pycons some years ago. It was about interesting ideas that you might want to work on in the future.

One idea was to build a search engine that returns unpersonalized results. He talked about how Google will be moving into a "it's true, if it's true for you" kind of world. His idea was that it will open new opportunities. I think DuckDuckGo is one example, and they've grown and are doing pretty well. I think a lot of it comes as a reaction to Google, Facebook and other such things.

"It's true, if it's true for you" is also a great phrase worth remembering. It describes so much about the current world and where things are headed, and why some things seemed to have gone off rails.

<comment><USER8> It use to be that DuckDuckGo would let you contribute to the search engine years back providing interfaces to various 3rd party data. I am not sure if that is still the case?

Has anyone written anything for DuckDuckGo?

<comment><USER9> You used to be able to contribute to those info cards at the top of searches but about a year ago they closed it off from external contributions.

</comment></comment></comment><comment><USER10> The problem is, these "personalized results" have become mostly useless. For more technical (or simply specific) queries, Google seems to vomit useless only vaguely related links instead of, you know, pages that cover what i searched for.

This does more to encourage me switching to some other search engine than any privacy concern.

<comment><USER11> That's a separate issue, but a real one.

Practically speaking, many non-technical users _do_ want to formulate their query in an imprecise, sloppy manner and have the search engine figure it out.

Programmers are capable of and accustomed to putting a lot of care and precision into exactly how they communicate (especially when communicating with a computer), but regular people don't usually do that. They may not even be capable of it.

The only solution I can see is for a search engine to support both styles of communication. It could either learn/guess (on a per-person or per-query basis) or just let you tell it how to behave.

But yes, Google web search could definitely use improvement here. There are times when there are VERY obvious clues that I'm being precise, and Google totally misses it. For example, my printer is a DCP-L2550DW. If I search for "DCP-L2550DW margins", it will include results that don't have "margins". I could have just typed the model number, but I went out of my way to keep typing. If that's not a strong enough signal that I definitely want results related to margins, I don't know what is.

<comment><USER12> If you put the word "margins" in quotes in your query, all of your results will contain that word. Similarly, you can force words not to appear by prefixing them with a "-".

> _The only solution I can see is for a search engine to support both styles > of communication._

Isn't this exactly what you're asking for? Non-technical users can be imprecise and let Google figure it out, while technical or power users can get more precise results with the various search operators?

<comment><USER13> _If you put the word "margins" in quotes in your query, all of your results will contain that word._

This seemed to be true at one time, but I noticed last night that it doesn't always work.

These days it seems to put include results without the word, then provide a tiny link below each deficient result with a link to "must include" the missing word in a new search.

That used to be the previous behavior, but now it's inconsistent.

<comment><USER12> Do you have an example where adding quotes doesn't work? As far as I can tell, it always works for me (yeah, we may be getting different personalized results, but still...)

<comment><USER14> It's kind of hard to share links because google personalizes results against our wishes. But a search for '"monkeys" burritos san diego "fries"'[0] returns a first link [1] that doesn't include 'monkeys.'

There are also other results [2] that include 'monkey' not what I asked for.

It's infuriating. I just want to grep the internet. Is that too much to ask?

[0] [https://www.google.com/search?client=safari&hl=en- us&ei=P1oH...](https://www.google.com/search?client=safari&hl=en- us&ei=P1oHXIK8FNee1fAPvaqMuAc&q=%22monkeys%22+burritos+san+diego+%E2%80%9Cfries%E2%80%9D&oq=%22monkeys%22+burritos+san+diego+%E2%80%9Cfries%E2%80%9D&gs_l=mobile- gws-wiz- serp.3..33i22i29i30.9381.13230..13512...0.0..0.381.2078.2-6j2......0....1.........0i71j33i160j33i21.IFT8IIfOgZk)

[1] [https://www.pinterest.com/pin/481463016388903842/](https://www.pinterest.com/pin/481463016388903842/)

[2] [https://www.tripadvisor.com/ShowUserReviews-g55543-d4580159-...](https://www.tripadvisor.com/ShowUserReviews-g55543-d4580159-r298090202-The_Proudest_Monkey- Bryan_Texas.html)

<comment><USER12> In your first example, >90% of the text on the page is in the "More Like This" section which is heavily personalized by Pinterest. So I'm seeing different content than you are, and Googlebot saw different content than either of us. Given the complete randomness of the content in there, I wouldn't be surprised at all if "monkeys" appeared on the version that was indexed.

In your second example, the word "monkeys" does appear on the page, in the "Show reviews that mention" section.

More importantly, did you have a result in mind for this query that isn't showing up? It seems somewhat nonsensical.

<comment><USER14> Thanks for the reply. I'm on mobile and searched on mobile and I don't see "show reviews that mention." I do see "read reviews that mention" but that includes stuff but not monkeys [0].

The Pinterest page perhaps has monkeys at some point, but doesn't now.

This isn't a real search, I just added something whimsical (and I miss San Diego burritos). This is behavior I remember but don't typically track so it's hard to remember on command.

Note you can use search tools | verbatim and it will return pages will all terms. The Pinterest page is still there, but the trip advisor page is missing [1].

[0] [https://imgur.com/gallery/Xlp8lsk](https://imgur.com/gallery/Xlp8lsk) [1] [https://www.google.com/search?q=%22monkeys%22+burritos+san+d...](https://www.google.com/search?q=%22monkeys%22+burritos+san+diego+%E2%80%9Cfries%E2%80%9D&client=safari&hl=en- us&prmd=inmv&source=lnt&tbs=li:1&sa=X&ved=2ahUKEwiA7cCViYjfAhWJF8AKHWTPBaAQpwV6BAgNEBM&biw=375&bih=635#ip=1)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> I think I agree with the complaints about this study. Unique doesn't mean personalized. IP geo-location, ISP... Don't forget browser and OS versions... there are lots of things you can sample over without actually representing any info leak from your logged in session.

Someone searching "at the same time" could technically be different times (remember time zones!) for the purposes of the algorithm (is the search during "work hours" or not, etc).

Users checking results on mobile phones compared to desktops... Without more details of how they controlled for these factors, the conclusion doesn't really follow.

Edit: I think to really measure the conclusion, they'd need 87 people in the SAME geo location, perhaps on fresh out of the box devices. That would be the best way to create the "placebo" group for their test, which they don't seem to have done.

<comment><USER16> containers

</comment></comment><comment><USER17> I'm the last one to say you shouldn't scrutinize what Google does, but this is complete non-news.

In the beginning, I was suspecting actively used logged-out cookies like Facebook infamously uses for example (try it, they're showing your face and keep tracking you all over the web). Reading on about differing search results in private mode, I was then expecting something like Google actually using IP + Fingerprint matching, which would be way more devious.

In the end, this was purely about Google showing a different page to everyone. Playing the devil's advocate, this is about the only way to escape the exploration/exploitation dilemma.

Is DuckDuckGo seriously complaining that Google is basically A/B testing everything, all the time? Because if that's the case, their data scientists should take some notes here.

<comment><USER18> Maybe it's complete non-news _to you_. Facts aren't simply pointed out once and ubiquitously committed to the public consciousness. There's nothing wrong with a healthy reminder.

<comment><USER19> Well, this has been public for the past 9 years...

[https://googleblog.blogspot.com/2009/12/personalized- search-...](https://googleblog.blogspot.com/2009/12/personalized-search-for- everyone.html)

<comment><USER20> God forbid somebody joined the internet or became aware of privacy issues in the past 9 years.

</comment></comment></comment></comment><comment><USER21> Am I missing something? Google gives me the creeps as much as it does to any sane person, but if I understand correctly, DDG is comparing just the variation of results on each page. This doesn't mean that you're still in the (same) bubble when you log out.

How about comparing the logged-in data with logged-out / private tab data? Did they find these two sets related? If not, G could be just implementing some sort of A/B testing on grand scale (learning from clicks and making search algorithm better).

</comment><comment><USER22> I always assumed they would, just like Youtube 'recommends' videos for you whether you're logged in or not. This is one of the reasons why I don't use Google / Bing / etc directly anymore, instead I use them through a meta-search engine (using a local instance of Searx [1] with some extra code to have it search my local content as well [2]).

[1] [https://github.com/asciimoo/searx](https://github.com/asciimoo/searx)

[2] [https://github.com/asciimoo/searx/pull/1257](https://github.com/asciimoo/searx/pull/1257)

</comment><comment><USER23> The study's result seem to be that users often get unique results. That's not the same as "personalized", and it certainly isn't evidence of "bias" as the spreadprivacy.org-link suggests.

A good faith interpretation would point to google running learning algorithms on their results. That would also seem to be a far better explanation for Google changing parts of the page layout, such as the position of news and video results.

The use of the term "bias" for describing differences search results also trips my conspiracy theory detectors.

</comment><comment><USER24> I think this should be considered the original source instead?

[https://spreadprivacy.com/google-filter-bubble- study/](https://spreadprivacy.com/google-filter-bubble-study/)

<comment><USER25> So much Vox media blog spam on HN - yesterday their Tumblr story (wrapping Tumblr's official announcement and adding very little) hit front page, and the official announcement (posted earlier and modded up first) was marked as dupe.

</comment></comment><comment><USER26> I'm not sure I'm comfortable which a critique written by an economic competitor (DuckDuckGo) that obscures its identity and doesn't disclose its conflict of interest.

<comment><USER27> Well it does say that it's the DuckDuckGo Blog, and it has the DuckDuckGo logo at the top. That's not very obscure.

[https://spreadprivacy.com/google-filter-bubble- study/](https://spreadprivacy.com/google-filter-bubble-study/)

</comment></comment><comment><USER28> Here's where Google (barely) exposes an option called "Signed-out search activity" retention: [https://www.google.com/history/privacyadvisor/search](https://www.google.com/history/privacyadvisor/search)

Make sure to access it while not signed in to Google, but using a browser mode which persists cookies (ie, not incognito mode). The actual control is [https://www.google.com/history/optout](https://www.google.com/history/optout)

Here's the equivalent for YouTube signed-out watch and search history: [https://www.youtube.com/feed/history](https://www.youtube.com/feed/history) . Click "Clear All Watch History," then click "Pause Watch History," then choose "Search history" and repeat those 2 steps again.

Do all of this from each device you use Google or YouTube from.

</comment><comment><USER29> Here's Google's search liaison clarifying things 2 hours ago on Twitter. Localization shouldn't be confused with personalization. Disclaimer: I work at Google, but not in search

[https://twitter.com/searchliaison/status/1070027261376491520...](https://twitter.com/searchliaison/status/1070027261376491520?s=21)

<comment><USER4> That clarification is appreciated, but it seems to contradict or ignore several of the results listed?

In particular, DuckDuckGo attempted to check for the effects of fresh browser windows, changes from localization, and A/B testing or incomplete rollouts.

\- The study results found that the 'distance' between two people's incognito results was 2.8 times larger than the distance between one person's normal and incognito results. If this is correct, the tweet's claim that you can use Incognito to see the impact of personalization for yourself is seriously misleading.

\- The study attempted to control for localization by tokenizing all local results, so that two result sets which each had a local story in the same spot would be treated as identical.

\- The study attempted to control for rollout and testing effects by running all searches at the same time and assuming that those forces would lead to most users seeing similar results, with a few differing. Instead, they found substantial variance across all users.

I can certainly come up with explanations for how each of these changes could be non-personalized. Incognito variance could be a consequence of region and device effects which are user-independent. Tests might be scaled up near 50/50, and rollouts may not hit all datacenters at once, invalidating the "changes for a few users" assumption. And most significantly, DuckDuckGo's localization control looks completely inadequate to me. It would completely fail the given "football" example, and might fail for the given search terms: 'vaccine' produced highly-localized results they adjusted for, but 'gun control' could produce pseudo-local results like a preference for national stories with the user's state as a keyword, and that wouldn't have been identified.

A better version of this study would presumably try to alter its variables separately, for instance by using multiple devices in one location and one device in multiple locations via VPN. As is, the controls seem seriously lacking.

But I'm just making up reasons, and frankly they don't seem likely to explain the sheer size of the differences. When I run those searches, I don't get "football" and "Paris" level customization, I get a bunch of national-scope results that have no obvious reason to vary between incognito users. I wish the tweets here had touched on _any_ of that. As is, they explain general search mechanics while frustratingly bypassing the most significant claims.

<comment><USER30> Frankly, everyone always misunderstands and underestimates the impact of location. Location affects _all_ queries, not just "local" queries.

That's literally what is being demonstrated here.

<comment><USER4> Yes, and I responded quite directly to that.

DuckDuckGo's control definitely wasn't adequate, but in return Google's examples ('football' and 'Paris') have unambiguous localization value that's not present for two different Americans searching "immigration".

Quite a lot of the variance was link reordering and result changes that didn't have any clear regional aspects, whether at the domain or story level. If localization _is_ the active factor, it's still pretty interesting to know that where I live determines whether to show a Wikipedia link and how to order HuffPo against the Tribune.

</comment></comment></comment></comment><comment><USER31> It sounds like they found a lot of variation but not that the differences are biased in any particular direction? Could this be random?

The use of "filter bubble" doesn't seem justified if it looks like random variation.

</comment><comment><USER32> Beeing hooked on rust the programming language and rust the game at the same time has been interesting google-wise. I used to take it granted to get rust programming results. And now google seems really confused. And I'm not getting good results for either. "Personalized search matters". And also. Fuck privacy invasion.

</comment><comment><USER33> I've observed this a lot when working on SEO for my webpage. I'll be like, "Cool, I'm the top result for my name!" And, yes, this will be true for people searching from Berkeley, where I live. But if I go to an IP address over in SF, I'm not even on the front page.

</comment><comment><USER34> This is honestly the worst thing ever, I've started noticing this too while testing SEO for different projects.

What if google becomes like Netflix? Only shows you results you expect, honestly a progression towards that has already rendered google search quite useless for most of my searching. I prefer searching HN on Algolia, Reddit, Medium and other websites (not at the top of my head) to find unexpected resources that I expect google "search engine" to give me.

</comment><comment><USER35> Why is a study required to know this? Google, surely, should make this known in their privacy policy?

<comment><USER36> They literally announced it on their blog in _2009_.

[https://googleblog.blogspot.com/2009/12/personalized- search-...](https://googleblog.blogspot.com/2009/12/personalized-search-for- everyone.html)

I'm a DDG fan, but they doth protest too much sometimes.

<comment><USER4> That 2009 announcement makes several very specific promises which conflict with these results. It promised signed-out customization based on prior search history (which Google has confirmed Incognito doesn't use), with a notification and option to disable that customization.

This result finds substantial variance with no notification and no toggle, which extends almost unchanged into Incognito. I think Occam's Razor says this is about localization and device type than fingerprinting, but it's definitely not just the thing they announced in 2009.

</comment></comment></comment><comment><USER37> I'm pretty certain, based on experience in my household, that Google's display network, Facebook, and Amazon are all doing some sort of targeting outside of cookies/pixels. My assumption is that it's based on your IP address.

</comment><comment><USER38> Localization != personalization.

<comment><USER39> I agree, they are completely orthogonal features. The only personalization that's happening is inside the new session that the person creates when using incognito mode, which is understandable.

</comment></comment><comment> rv-de Maybe that explains why Google gave me 1st-page results about "shrooms" few days ago while my search term was specifically asking for "Champignons" and "pizza" and whether to pre-boil or use them raw.

</comment><comment><USER40> Youtube does that as well, and it has for a long time I guess, since I have been consistently able to reproduce the following:

1\. open Youtube's home page in your main browser, while logged out and after clearing cookies

2\. open the same page in a "virgin" browser (e.g. a newly created VM or even just using an incognito window)

observe that 1 has some amount of "personalisation".

When I saw this the first time I was baffled, so I did some research and found out that it's because of local storage. As per step 1, I was clearing just the cookies but not local storage.

Lesson learned: don't just clear cookies, remember to clear local storage as well

</comment><comment><USER41> To me, constantly complaining about sites/companies doing this stuff or wanting laws to make them stop... It just feels silly and pointless.

In the long term, companies will gather and use what data they have access to. Companies will tailor their UI, product, etc. in order to keep that data flowing. A ruleset based on permission and consent is not practical, unless the goal is "better paperwork."

The solution (imho) has to come from browser software or w3c. The browser should control permissions, in broadly the same way mobile OSs/appstore control permissions and _login state._

ATM Google de-anonymizes you. This should just be impossible, unless the browser tells it who you are.

^I know gdpr is popular with a lot of people here. I think it has some good parts, but I disagree with other parts. We can still be friends and disagree :)

<comment><USER42> _> To me, constantly complaining about sites/companies doing this stuff or wanting laws to make them stop... It just feels silly and pointless. ... companies will gather and use what data they have access to_

Yet every time there's an equifax or quora data breach at the top of the front page the consensus is _almost always_ that companies should get less data, should keep it for less time, and end users should push back against the constant data grab.

How do we square that circle?

How do we avoid FaceGooBook when it has its fingers everywhere? Even if you avoid their front end services there's countless sites using FaceGooBook for logins, captcha, fonts, frameworks that can't simply be uBlocked away without breaking something.

Are we meant to simply trust FaceGooBook that data from those sources isn't added to the others?

Without the pushback of things like GDPR (I think it has parts that won't go remotely far enough - mainly national budgets for ICO enforcement), end users seem to have neared a point of "tough, you lost".

<comment><USER43> Safety/Quality regulations reduces choices and quantity. This hits poor the most, as they can no longer buy inferior but cheap products and services. See China.

Instead regulations should be focus on reducing scam and misleading offerings. If someone wants to buy/use despite knowing the risks, let him.

<comment><USER42> > Safety/Quality regulations reduces choices and quantity.

They also prevent people dying when they plug in their appliance, or dying because there's lead paint on the product, or buying flour that's adulterated with alum, plaster of Paris or chalk.

The history of food and electrical regulations, on both sides of the Atlantic, are enough to convince me that rich and poor (I have been both) are better served by enough regulation to ensure basic standards are met. In the case of the US and food, prior to such regulation, adulteration was more common than not[0].

> If someone wants to buy/use despite knowing the risks, let him.

This is _never_ the case. The risks are hidden, the product masquerades as a genuine iPhone charger, or contains unsafe substances that cannot be known without laboratory testing. Data is taken "to provide a better service", without mention of the 206 places it's sold to, or other uses for which it is mined, or the fun psychological experiments staff might run on their users.

To relate it back to the original discussion about data, I am fully in favour of regulations that demand adequate safeguards and protections of personal data, and high expectations of diligence from companies that must use such data. It goes without saying that I am in favour of severe penalties for egregious breach of such regulations.

[0] [https://www.abc.net.au/news/2018-11-04/harvey-wiley-us- chemi...](https://www.abc.net.au/news/2018-11-04/harvey-wiley-us-chemist-who- fought-to-ban-poison-from-food/10427832)

</comment></comment></comment></comment><comment><USER44> [https://en.wikipedia.org/wiki/Profiling_(information_science...](https://en.wikipedia.org/wiki/Profiling_\(information_science\))

</comment><comment><USER45> My search results have been personalized for years without being logged in. I didn't realize this was surprising.

<comment><USER46> It's a little more shocking when they can identify 3 different users on 1 pc behind one ip in roughly 1 search.

Seriously, freaks me out. I search on youtube for airplanes on the computer tv and suddenly a ton of music I like pops up. Kid searches for some kids show, and many more pop up. Wife searches for reviews or some shitty trash tv shows, and she get's all her interests recommended next. They _know_ us on one computer on one ip without being logged in.

</comment></comment><comment><USER47> study finds in 2018. I found out google was 'listening' when I got youtube recommendations on my friends laptop in 2012, when I wasn't signed in, that I get on mine. Btw our youtube habits are different. Given his playstation had different recommendations.

</comment><comment><USER48> So if I search for the value of PI while visiting Indiana it could show "3?"

</comment><comment><USER49> we have known this and they state it publicly... who funded this?

</comment><comment><USER50> Well .. they certainly do a shitty job at personalizing my results. These days I can never find what I want on Google. I've resorted to using other search tools (github search, reddit search, stack overflow search, ddg, etc)

<comment><USER51> I feel like this has happened everywhere. YouTube included.

</comment></comment><comment><USER52> Safari 12 is impressive when it comes to preventing browser fingerprinting and cross-site tracking. I wish it was cross platform. Not sure though how much it can do against Google.

</comment><comment><USER53> New study ? You just have to open two different browsers and open use them for a couple of days and its quite obvious. Question is whats the problem with this ?

</comment><comment><USER54> my own private Idaho['google']

</comment><comment><USER55> What's been a shame is that there is still no open source Search Engine despite this being a "solved" problem. Like not even something like there is a docker image that you throw at your cluster that gets you faster and faster search results. That's the real shame.

We should've commidified the core of search engine by now with programmatic and API access as commonplace and yet here we are where search engine software is still dominated by proprietary services.

<comment><USER56> I'm guessing that it's impractical to self-host something big enough to be useful.

<comment><USER57> I am sure this already exists even as I type it, but this sounds like a great job for a distributed system running a federated search protocol.

<comment><USER55> The hard part is already solved, you don't even have to crawl the web to build the index. There is already a periodically refreshed index of the web that you can download: commoncrawl.org

Now someone just needs to configure, Apache Lucene as a proper docker image that can consume this index.

</comment></comment></comment></comment><comment><USER58> Even if I use an addon that deletes my cookies from Google every time I close the tab?

<comment><USER59> Do you switch IPs, browsers, computers, etc every time you close the tab too? If not, Google tracks you.

<comment><USER60> Even if you did all that Google will track you. Whether they match up all your identities or not is another story.

<comment><USER46> Bring a laptop from your home back to your folks place and I bet they can make the connection...

<comment><USER59> No doubt whatsoever. A lot of those "Facebook is listening to my conversation" claims come from the fact that they'll associate people based on network locations, IPs, etc.

For example: You're at your friends house with the Facebook app, your friend clicks on an ad for socks. The next day you start seeing ads for socks despite not having any sock-related activity. This is just an oversimplified example.

</comment></comment></comment></comment></comment><comment><USER61> This would all be fine if it were opt-in but all these companies who insist on excessive reliance on algorithms just end up making their service worse.

</comment><comment><USER62> Strange as it is, I was just researching whether it was possible to search Google truly anonymously - stumbled upon a Firefox add-on called Searchonymous [0]. Planning on trying it out today.

If all else fails, can always use another search engine ;)

[0] [https://addons.mozilla.org/en- US/firefox/addon/searchonymous...](https://addons.mozilla.org/en- US/firefox/addon/searchonymous/)

</comment><comment><USER63> Is anybody the least bit surprised? It's been obvious forever that google has absolutely zero respect for privacy.

Yes, this can be rationalized as 'improving search results', and indeed the results may be better.

But, it's also building a personal profile without consent, or indeed with implied lack of consent.

If google cared about privacy, they would simply offer people the option not to be tracked, and respect it.

They don't.</comment>


The Rule of the Uber-Rich Means Tyranny or Revolution - <AUTHOR> https://www.truthdig.com/articles/the-rule-of-the-uber-rich-means-tyranny-or-revolution/ <comment><USER2> Babble of the proletariat. Try talking middle-class.

</comment><comment><USER3> The ultimate uber-rich manifestation: libertarianism.

<comment><USER4> What have libertarians ever done to deserve such misrepresentative BS?

Meanwhile in the real world, libertarians have little political power or influence. None of the "uber-rich" in power are libertarian.

<comment><USER3> Libertarianism is all about the individual and that individual's resources. Uber-rich have the vast majority of the resources. The uber-rich only need laws to protect themselves from the non-uber-rich.

The 'middle-class' and poor have no resources and little time to counter the uber-rich. The middle class gains nothing from giving up government protection.

Therefore libertarianism is enables the uber-rich.

And btw, the Koch brothers are very much libertarians and they very much have a lot of power.

<comment><USER4> Libertarianism is all about opposing coercion. The greatest coercive entity is the state.

The uber-rich use the coercive political apparatus to benefit themselves. Libertarians oppose not only this corruption but also the state having that power to be exploited in the first place.

Libertarian policies lead to better outcomes for everyone, with maybe the exception of those benefiting from statist disruptions. More economic freedom leads to more wealth creation and more income mobility. Countries which have more economic freedom do better than restrictive economies. Countries which free up their economies see faster growth, and vice versa.

Moreover, the worst industries for consumers are the most regulated and otherwise distorted industries in the US economy: medical, financial, educational, etc.

The Koch brothers do support libertarian institutions but they are far from the most ideological or principled libertarians. The Koch brothers are not politicians, and them having some indirect political power has not resulted in significant libertarian policies. The lack of libertarian policy at every turn is all the evidence necessary that libertarians have little political power.

I'm now going to copy some Reddit comments I've made regarding the power of market economies and the alternatives. Be aware these are responses to other people.

On the Statistical Arguments for Statism \-----

> According to the OECD database, countries with strong economic regulation in > mature capitalism markets perform best with regards to poverty

I'm couldn't find very recent OECD poverty stats and I'm not sure what that source is referencing, but I think PPP is a good analogue.

Well, I guess if you define "strong economic regulation" as "economic freedom" you could say they correlate: [Chart]([https://i.imgur.com/vDCHsfn.png](https://i.imgur.com/vDCHsfn.png))

Sources:

\- [https://stats.oecd.org/Index.aspx?DataSetCode=CPL](https://stats.oecd.org/Index.aspx?DataSetCode=CPL) \- [https://www.heritage.org/index/excel/2018/index2018_data.xls](https://www.heritage.org/index/excel/2018/index2018_data.xls)

I made the chart in Google Sheets. And yes, I corrected the Economic Freedom rank for only OECD countries.

> Countries with small governments don't clearly win in life span

Is this adjusted for the different definitions of infant mortality across different countries? Regardless, it also correlates with economic freedom: [Chart]([https://imgur.com/AMmDl3g.png](https://imgur.com/AMmDl3g.png))

Sources:

\- [https://www.cia.gov/library/publications/the-world- factbook/...](https://www.cia.gov/library/publications/the-world- factbook/rankorder/rawdata_2102.txt) \- [https://www.heritage.org/index/excel/2018/index2018_data.xls](https://www.heritage.org/index/excel/2018/index2018_data.xls)

> Education

Education could be done a lot better in the US, that's for sure. Too bad it's controlled entirely by governments.

> Safety

The data you linked was missing a lot of countries so I'm not sure how well it actually goes, but with the data I had, it correlates too: [Chart]([https://imgur.com/KXxAzLu.png](https://imgur.com/KXxAzLu.png))

Sources:

\- [https://www.numbeo.com/crime/rankings_by_country.jsp?title=2...](https://www.numbeo.com/crime/rankings_by_country.jsp?title=2018) \- [https://www.heritage.org/index/excel/2018/index2018_data.xls](https://www.heritage.org/index/excel/2018/index2018_data.xls)

I have a spreadsheet with all of the data and charts if you really want to see it.

On the Market Failures of Common Industries \</comment></comment></comment></comment><comment>---

> i would say the extreme privatization of medical services along with the way > insurance systems work in america is overall detrimental to americans.

Medical is the most socialized industry in the country.

> a bill of ~60k ... honestly unacceptable to me that people can go bankrupt > over something that is so absolutely outside of anybody's control

Things outside of people's control is the exact purpose for insurance of all kinds. Car insurance, home insurance, liability insurance, renters insurance all exist to cover the unpredictability of the world. Accidents covered by all of these insurances can affect people's lives as much if not more than medical emergencies. Should every insurance be nationalized?

> i really don't know what kind of legislation is involved in regulating the > medical sector (but it seems to be minimal)

Wow, you couldn't be more wrong. The only sector regulated more than medical is _maybe_ the financial sector, but even that is a stretch.

> i don't know if the problem lies within the market or the government

The government causes issues with the medical sector in many ways:

\- During WWII, the federal government froze wages. For companies to attract workers, they started providing other benefits, like medical insurance. This began the linkage of medical insurance to employment. \- Medicare and medicaid dump money into the medical sector. This causes prices to inflate. \- Companies get a tax benefit for providing medical insurance, whereas individuals do not. \- Companies are mandated to provide medical insurance if they're of a certain size \- Getting FDA approval for a drug or medical device is required for it to be used legally. Getting approval is a long and costly process, driving up the price at which drug and device makers must sell it to break even, let alone make a profit. It also slows down the rate of innovation. \- Patent laws give drug companies temporary monopolies on producing certain drugs. This results in higher prices due to zero competition. It also slows down innovation because using new drug technology requires licensing it from the monopoly. \- People are not allowed to use drugs if they do not have a prescription. \- Marijuana is illegal because of the stupid drug war \- Insurance companies can't compete directly across state lines \- Insurance companies are mandated by the federal government to cover certain things \- Government diet policies pushed for low-fat and high-carb foods, making the obesity epidemic worse \- Government subsidizes corn and sugar production, making the obesity epidemic worse \- Medical licensure is a government-granted monopoly, and they artificially limit the supply of medical professionals

And many, many more

> i haven't seen one persuasive, reasonable argument against socialized > healthcare yet

One argument is "can the federal government do it right?" The government fucked up medicare, they fucked up medicaid, they fucked up Obamacare. I don't trust them to do single-payer right, nor do I trust them to do an NHS-like service correctly. I think states should be able to experiment with that kind of thing if they want, then at least people have a choice.

Another argument is that the free market can do it better. Market-based systems like France and Switzerland (while still involving mandates) work well. If we "reset" the system to enable competition and reduce rent-seeking and bureaucracy, I am confident it would be waaay better than the current system and would be better than "socialized" systems as well.

A third argument is that the _best_ care in the world is in the USA, and that's because companies have the incentives of the market to research and innovate new treatments, and that medical professionals are rewarded for good work.

Do I think that single-payer would be better than our current system? Probably. But I'm also confident that a free-market based system would be even better.

\---

> the huge amount of government subsidies for education actually drives up the > price for everybody, so that's not a capitalism issue

Correct.

> the amount of total student debt is insane. it's not a healthy long term > system.

Thanks, government. Yes, we should _right now_ stop guaranteeing student loans, stop giving out federal grants, and provide a way for those with an enormous amount of debt to become successful. People should take gap years after high-school, and go to trade schools or community college more. There are tons of opportunities for people who go to college, but it's not right for everyone, let alone jumping in right after high school.

<comment><USER4> Continued

On the idea of Capitalism as an Outdated System unfit for the First World \</comment></comment><comment>--

> though, it did also cause that problem

One could make an argument that government subsidization of roads resulted in urban sprawl and general lack of population density, which resulted in a ton of transportation being done with cars, the least efficient form of transportation.

Another argument one could make is that restrictions on nuclear power have had a disastrous effect on emissions. If nuclear power was more widespread, electricity would be cheaper (an economic boon) and much, much cleaner.

> But it is increasingly proving to be inadequate to address the problems of > first world nations.

The market economy created first-world nations.

\- Countries which are more free economically are more prosperous compared to similar countries which are less free \- Countries which free up their economies are more prosperous afterwards \- Countries which restrict their economies are less prosperous afterwards \- Industries which are more free have more innovation and are more consumer-friendly

Free trade is well-known by every version of economics to be a huge boon for every country involved.

> The poor are poorer & account for a larger percentage of the US population > as compared to 30 years ago.

Increasing or stagnating poverty is a result of bad government policy including the drug war and the welfare gap.

> money in politics, sophisticated AI in sales, marketing, & advertising, > unprecedented range of automation, & radically diversified/global scale > business means that the consumer has simply lost any power in the market in > all but the most extreme cases

Citation needed. Also, what kind of policy would you propose to "fix" this without having drastic damaging unforeseen consequences?

> Highly organized & well funded corporations, organizations, & industries > have power in the modern day (both through technology and through politics) > that they could have never dreamed of just a few decades ago.

The amount of power an organization can have through politics is a function of the amount of power the government has. Technology works both ways: it allows organizations to have more power but in the same proportion if not more allows for individuals to have more power. See: the printing press.

> That's why I believe that smart regulation on business is extremely > important in the modern day.

Corporatism and cronyism is a blight. Rent-seeking and regulatory capture are widespread, and the only way of getting rid of them is to reduce the power of the government in those areas.

> I also believe that it's imperative that we start exploring new economic > models, in search of something better than capitalism

Like what? The economic calculation problem is unlikely to go away.

> it might already be showing its cracks

The state creates those cracks by continuously pounding the market with regulation and other distortion factors.

</comment><comment><USER4> > They have seized total political power. These pathologies inform Donald > Trump, his children, the Brett Kavanaughs, and the billionaires who run his > administration.

Ah yes because the _impoverished_ Democrats are fighting for the common man! It's only with the current administration that the "uber-rich" have taken over.

Give me a break. Partisan hacks are ruining political discourse, and framing everything as the end of the world isn't helping either.

The inability of the left to interpret the actions of the right as anything but _evil_ only makes people perceive them as more out-of-touch and pretentious. Studies have shown that rightists (for lack of a better term) are more analytical and understand the positions of the opposition better than those on the left.

<comment><USER5> Can you link some of those studies? Would love to read them

<comment><USER4> Conservatives understand liberals better than the reverse

[1]: [https://www.chronicle.com/blogs/brainstorm/liberals- conserva...](https://www.chronicle.com/blogs/brainstorm/liberals- conservatives-and-the-haidt-results/46113) [2]: [https://theindependentwhig.com/haidt- passages/haidt/conserva...](https://theindependentwhig.com/haidt- passages/haidt/conservatives-understand-liberals-better-than-liberals- understand-conservatives/)

Rightists are more analytical

[3]: [https://www.bloomberg.com/view/articles/2018-03-28/study- of-...](https://www.bloomberg.com/view/articles/2018-03-28/study-of-politics- and-analytical-thinking-puts-libertarians-on-top) [4]: [https://www.researchgate.net/publication/322862039_Cognitive...](https://www.researchgate.net/publication/322862039_Cognitive_Reflection_and_the_2016_US_Presidential_Election)

<comment><USER6> Link [3] is about libertarians being more analytical. From the article:

> Democrats/liberals measure as somewhat more analytical than > Republicans/conservatives</comment></comment></comment></comment>


Agile Development is Broken - <AUTHOR> http://www.typemock.com/blog/2011/10/17/agile-development-is-broken/?utm_source=hackernews&utm_medium=social&utm_campaign=agile-development-is-broken <comment><USER2> I think saying that Agile development is broken because it is too developer- centric is BS. It is all about implementation.

XP for example is meant to be customer-centric. The point of it is to complete working functionality for the customer, and the customer should drive the development and what features are needed.

Scrum is similar in that the customer can define a bunch of requirements and prioritize them and the team works on those priorities.

The problem with any development being about development and not about the customer's needs has to do with management. I've seen and heard of many mismanaged Agile teams, but none where the problem was Agile. Agile might have been the excuse for lack of organization and direction, but good management that focuses on the customer needs as well as the developers' needs is what is needed- that can be done with Agile (e.g. XP, Scrum), Kanban, and other methods focused on quick incremental delivery usually much more easily than other methodologies (e.g. Waterfall).

With regard to:

"As Igal pointed out in this summer's webinar, what is a unit that is tested in a unit test? Business logic."

Strictly speaking, yes, but generally if you describe what a unit test is doing to a user, assuming it is really a unit test, most of the time they would not agree that it is business logic. Business logic is usually considered a lot more high-level. Human-language-based customer readable test definitions can potentially be created in Cucumber and similar BDD frameworks. There are also products that use UI-based behavior driven test definitions. But, in my experience, even these haven't really defined solely the business logic; there is always some level of implementation detail that creeps in. But, you do what you can. From what I've seen and heard, sometimes having the developer or analyst work with the customer to define tests is a good idea, and other times it is a wash or is a time sink. Do whatever it takes is basically the rule of thumb- i.e. there are no hard and fast rules to these things.

Good luck to the guy that ditches Agile because it is "broken".</comment>


JQuery Autosave - <AUTHOR> http://raymond.raw.no/jquery-autosave/ <comment><USER2> Nice, but I question if this needs to be made into a plugin. There's a need to hook up things on the server side, and the same thing can be accomplished by writing 20 lines of code.

Here's something I wrote for my translation site:

            jQuery(function($){
                var save_txt = '{{ _('Save') }}';
                var saving_txt = '{{ _('Saving...') }}';
                var saved_txt = '{{ _('Saved') }}';

                function save(){
                    $('#save').val(saving_txt).attr('disabled', 'disabled');
                    $.post(window.location.pathname, {
                            action: 'save',
                            translated_text: $('#translated_text').val()
                        }, function(html){
                            $('#save').val(saved_txt);
                    });
                }

                var timer;
                $('#translated_text').keyup(function(){
                    window.clearTimeout(timer);
                    $('#save').val(save_txt).attr('disabled', null);
                    timer = window.setTimeout(save, 5000);
                })
                .focus();

                $('#save').click(function(){
                    window.clearTimeout(timer);
                    save();
                    return false;
                });
            });

</comment><comment><USER3> Multiple issues I solved when doing similar things:

1) Must have some sort of queue-like behavior, or race conditions. In other words I want a guarantee that all saves happen in order (imagine a checkbox, and due to latency in network traffic of the user checks it on, then off. What state was saved the on or off for one of them? I don't like these race conditions) this can happen for any input type.

2) What happens if the data must be extracted weirdly, or weird parameters sent to the url. A data extractor is a useful concept to have be passed in.

3) Indication to the user that it works. Like what gmail does. A useful feature.

4) What if its not a form, or different elements go to different urls? Also a useful thing to do.

This sort of tool became a cornerstone of some very cool form interaction mechanisms.

I guess the idea of this plugin would be to have a gracefully-degrading auto- saving form that preserves values while the user types for recovery purposes.

</comment><comment><USER4> This seems overly complicated.

I just set live click and change listeners on the elements I was looking to save and incremented a change_counter each time these were triggered. if (change_counter % 5 == 0) Data.sendData();</comment>


RubyGems is not a Battlefield, Part I (5/25 meeting w. Eric+Ryan)  - <AUTHOR> http://blog.majesticseacreature.com/rubygems-is-not-a-battlefield-part-1-notes-fr

<comment><USER2> So refreshing to hear someone do something more than complain.

<comment><USER3> Interesting. I read it as it being refreshing to hear someone actually listen.

</comment></comment><comment><USER4> Are the Rubygems folks also looking at Rubygems effect on performance related to require 'foo'? It sounds in this ticket like it may be a ruby problem, but in other places I have seen, it seemed like the IO/file lookups didn't scale well with lots of gems performance-wise.

<http://redmine.ruby-lang.org/issues/3924>

<comment><AUTHOR> Unless this is something that has been known to be ignored or rejected otherwise, or unless you feel you can't approach them, I'd just recommend filing a support request or asking on the rubygems-developers mailing list or #rubygems on Freenode.

My main focus is on conflict points right now.

</comment></comment><comment><USER5> \--no-ri --no-rdoc

<comment><AUTHOR> This is exactly the sort of unhelpful comment that is making the situation worse, not better. There has been a lot of discussion about why RubyGems doesn't support this, and perhaps that discussion got lost in the circus of +1's and tensions. Would you like me to try to get Ryan and Eric to write up something explaining their stance so that you can understand it better?

If you already understand it, would you mind writing a reasoned, well thought out explanation of why you think this is important and then submit a real pull request or discuss this on the rubygems-developers mailing list?

If the answer to those two things is no, then you are not actually contributing, you're stating a preference with no explanation, and no sensitivity to the fact that your personal preference isn't necessarily what's best for Rubygems.

The good news is, RubyGems does has a configuration file which you can set once and solve this problem for yourself. Add this line to your ~/.gemrc:

        gem: --no-ri --no-rdoc

Hopefully this has come across as helpful and not rude. I'm trying the best I can to get both sides of this situation to cool down a bit, and we can help that happen as users and contributors by being a bit more mature about the way we interact with this project.

<comment><USER6> Gregory,

I think their response is one of the things making the situation worse. If I understand correctly the reasons for keeping it are:

* If documentation isn't generated automatically, where is the incentive to write documentation?

* It's useful for newbies because they can start up `gem server` or use `ri`

So, incentive. Really? I can tell you that of all the code I've written the number of times I've documented it with YARD or RDoc because of a fear that it would be auto-generated on each client and they'd see that is was found wanting is precisely... zero. I document my projects because I want people to use them, I don't want my inbox filled with questions on how to use it, and so I can link to somewhere like rdoc.info where potential users can read it online. I just don't buy that the auto-generation is working like a big scary stick making developers write docs.

As for newbies, I doubt many genuine newbies have any idea of how to use `ri`. Even if they did, you have actually know the class/method you want. At best it's a reference, it's awful for just browsing around trying to piece things together yourself. What I suspect most newbies do is go to Google and enter "How to open a file in ruby", they don't `ri File.new`. The latter assumes a reasonable (albeit forgetful) knowledge of the API, you can assume they're more likely to know about --with-ri rather than the newbies knowing about --no-ri.

The problem here really is that there is a not-insignificant number of people who have all put this setting into their .gemrc file because they want it as the default behaviour. Is it a representative sample of the community? How can we find out? It certainly feels that rather than find out the support for this addition was deemed a "circus of +1's", ignored, and closed.

I makes it had for me to feel sympathy towards the project, reluctant to offer any changes I'd throw around for consideration, and grateful to see others take the initiative to actually fix the problem (you with your mediation, and then SlimGems as a possibly viable alternative).

<comment><AUTHOR> The --no-rodc --no-ri issue is one I want to reopen for discussion at some point, but I don't think it's as important as many of the other issues that need to be discussed, nor is it urgent.

I agree with you that like many other things, this wasn't handled especially well. I also think that a pull request with hundreds of +1's looks and feels like a riot. That can't be the best way to draw someone's best emotions out of them.

Please send me your thoughts, even if they don't lead to change in the current atmosphere, they will be documented and shared so that if anything does change, there will be a place to find them. Also, you'd be surprised how much of the shutdown comes from these personally charged conflicts. Ryan and Eric have given me an open ear. They should be turning that ear to their whole userbase, but this is a start.</comment></comment></comment></comment>


Show HN: Store.js v2.0 – Cross-browser storage for all use cases - <AUTHOR> https://github.com/marcuswestin/store.js <comment><AUTHOR> Store.js was originally released on HN in 2010 :) [https://news.ycombinator.com/item?id=1468802](https://news.ycombinator.com/item?id=1468802)

It's live on tens of thousands of websites (like cnn.com!) and has seen lots of improvements over the years.

Store.js version 2 is a full revamp with pluggable storage (it will automatically fall back to one that works in every scenario by default), pluggable extra functionality (like expiration, default values, common array/object operations, etc), and fully cross-browser automatic testing using saucelabs.com.

Feel free to ask any questions! I'm going to sleep now, but I'll make sure to answer in the AM.

Cheers!

<comment><USER2> Hey Marcus, I'm a user! Thanks for doing the heavy IE lifting in store.js.

Anyhow, I had a requirement to store raw strings to the local storage or userdata rather than go through your calls to JSON.parse/stringify. I forked and am using my fork rather than your maintained version, which is sad. Since you've got the hood popped for maintenance, would you mind adding raw string support to store.js in version 2? Thanks in advance. Here's my fork repo for reference, please see the getRawString and setRawString API's I added:

[https://github.com/woldie/store.js](https://github.com/woldie/store.js)

<comment><USER3> Genuinely curious but why is this important? Assuming the current API only takes an object can't you just provide 2 functions

        function putString(id, s) {
           storePutAPI(id, {s:s});
        }
        function getString(id) {
           var o = storeGetAPI(id);
           return o ? o.s : undefined;
         }

Note I have never used the API nor looked at the docs but assuming you can store objects why the need for special functions?

On top of which AFAIK JSON.stringify and JSON.parse work with plain strings so I'd be curious what prevents using plain strings in store.js without any changes

Sorry this isn't a put down , just trying to understand

<comment><USER2> Not at all at all, I understand your confusion. Mine is definitely a niche case, perhaps straying a bit into the eclectic.

I have put together a virtual file system for a programming environment for kids that is built atop the local storage/userdata API's.

I support legacy IE back to IE6 as well as modern browsers, and I wanted to maximize my very limited allowed storage space on legacy IE.

Also, I needed to have some certainty around how much free space is remaining in the file system. My design was to organize the underlying storage into 4K blocks that were pre-allocated when the system first starts; whatever the host system could give me in terms of space I would take.

JSON is nice for the general case, but the way it escapes some characters makes computing the free space I have remaining unpredictable as new files get written.

Of course, I can do my own encoding of bytes into unicode char codes and write those as raw strings using store.js. JavaScript strings are saved as 16-bit unsigned arrays if you unfocus your eyes and stare at the screen for awhile, and I use as many bits as I am able in my scheme.

So, I rigged up a byte-to-string encoder/decoder that was universally accepted on IE and modern browsers, and calling through to my getRawString/setRawString API, I just about doubled my storage over the default JSON.stringify/parse!

Suprisingly, performance isn't bad with my encoded strings either. That said, my compy has a retro flair, and I don't think my users will mind much that they have to wait a second or two to load their games from disk. Perhaps even adds a bit of authenticity. :)

<comment><AUTHOR> Bonus points for best use case on the page :)))

Eclectic as it is, I think we should totally consider making it a plugin/storage! If you open an issue with links to the relevant material I'd really appreciate that. Thanks!

</comment></comment></comment></comment></comment><comment><USER4> Since I assume both have their pros and cons, when would I want to use Store.js, and when would I want to use localForage[0]? I'm asking as someone who has offline storage _planned_ for an app, but has yet to get around to it. I'd like to know which one is probably best for my needs :)

[0] [https://github.com/localForage/localForage](https://github.com/localForage/localForage)

<comment><USER5> Personally, I wouldn't use a library at all unless I had to support IE<8\. Localstorage is supported enough across browsers:

[http://caniuse.com/#feat=namevalue- storage](http://caniuse.com/#feat=namevalue-storage)

<comment><USER4> Well, I need more than 5 MB and would like to store other values than strings (mostly large TypedArrays). Something simplifying my life there would be appreciated.

<comment><USER5> JSON.stringify/JSON.parse before getting/setting from localstorage.

The other requirements localstorage alone can't address.

</comment></comment></comment></comment><comment><USER6> I just upgraded code in my app ([https://commando.io](https://commando.io)) that stores some user preferences from $.cookie (jQuery Cookie) to Store.js. Worked flawlessly.

As a bonus of switching from cookies to local storage, now requests don't send along those values anymore to the server.

</comment><comment><USER7> This looks really good. I've been using PouchDB for doing something similar, but if I didn't need the fancy sync'ing I'd be all over this.

<comment><USER8> I use LocalForage if I need simpler solutions than PouchDB.

</comment></comment><comment><USER9> Thanks for the work you've put into Store.js.

<comment><AUTHOR> Thank you :)

</comment></comment><comment><USER10> localStorage is pretty much only thing we need these days.

<comment><AUTHOR> Almost! Except if you want to store objects/arrays/numbers (localStorage only supports strings), or want your site to work in Safari Private mode (where localStorage breaks), or if you have to support legacy environments with old browsers (like many government services), etc etc etc :)

<comment><USER11> Not that I disagree with your other arguments but this one sticks out:

> Except if you want to store objects/arrays/numbers (localStorage only > supports strings)

My normal usage of localStorage usually looks like this:

        const getItem = (item) => { JSON.parse(window.localStorage.getItem(item)) }
        // and
        const setItem = (item, val) { window.localStorage.setItem(item, JSON.stringify(val)) }

And then you won't have issues with any type.

<comment><AUTHOR> Except when a value has already been stored previously without JSON.stringify (in which case JSON.parse will throw), or you need a default value if unset (e.g `store.get('username', 'anonymous')`, or ... :) But I also see your point that sometimes the very quick and simple solution can be useful!

</comment></comment></comment></comment><comment><USER12> I've found great value in simpleStorage, for those who are looking for easier object storage in localStorage.

<comment><AUTHOR> Yes, simpleStorage is good too!

I believe store.js addresses all the use cases of simpleStorage, and then some (E.g Safari private mode, etc).

If that's not the case I will make it work for your use case :)

<comment><USER12> The only problem I've noticed with simpleStorage is the Safari private mode thing, but I see that as a bug in Safari so I just show a message to users telling them why the site won't work properly for them.

</comment></comment></comment><comment><USER13> Does anyone have an angular2 version of this? Could really use it on something I'm currently working on

<comment><AUTHOR> Hey, I'm not sure what an angular2 version would look like or do. Could you please open an issue with a more detailed description of what you need? I'll help if I can!

Cheers</comment></comment>


Kocho – Bootstrapping Tool for CoreOS Clusters on AWS - <AUTHOR> https://blog.giantswarm.io/kocho-bootstrapping-coreos-clusters-on-aws/ <comment><USER2> Wow I didn't knew about Mayu/Kochu, pretty clever. it would be great to also have Kubernetes and a ha filesystem (gluster) or some kind of local s3 bootstrapped. When that would be possible it would be really really easy to use that on bare metal and still have a way to create files / run software that isn't a good fit for docker (i.e. some databases)

<comment><USER3> We had the same thought and so we created tools to do exactly that. Expect some more soonish.

</comment></comment><comment><USER4> Using an OverlayFS mount to provide custom fleet and etcd binaries is a really smart, clean trick. Well done.

(Work at CoreOS)

<comment><USER3> Thx! We also could have build our own images but with this we can mix and match all sorts of versions. This is very handy for testing or rolling out new versions independently.

</comment></comment><comment><USER5> I' ver been using my own cloud formation template to spin up CoreOS clusters, and it's a real pain! I'll surely try Kocho out!

<comment><AUTHOR> We know! Happy for any feedback or questions around our tool and templates.</comment></comment>


App Translation Service Now Available to All Developers - <AUTHOR> http://android-developers.blogspot.com/2013/11/app-translation-service-now-available.html <comment><USER2> This is great to help simplify localization for the develop. I would definitely use this service if I were an Android developer.</comment>


Getting the Band Back Together: Why the Justin.TV Mafia Returned to Y Combinator - <AUTHOR> http://www.fastcompany.com/3041546/the-y-combinator-chronicles/getting-the-band-back-together-why-the-justintv-mafia-returned-t <comment><USER2> I wonder how the atmosphere at yc has changed over the years? I would imagine there to be more competition between groups nowadays as compared to the first few batches.</comment>


Ask: Why there are no discussions on tech stacks? - <AUTHOR> Previously, there were many discussions offering insights about many technologies.
But these days, no one talks about any webframework or ORM here on Hacker News.
Is it being censored? How are people building startups these days, what frameworks and technologies are they using? <comment><USER2> Once upon a time there were huge differences in major web frameworks. Compare Zope 2.0 to Ruby On Rails 1.0 and you are looking at 2 very different paradigms. Nowadays, all the major frameworks have stolen the same ideas from each other. Django and Symfony and Ruby On Rails all steal ideas from each other (mostly the other two steal ideas from Rails).

Also, there has arisen a cultural moment on Hacker News that says it is useless to argue about languages. So, for instance, many of us wish to write comments that are critical of PHP. We are downvoted if we do so, and someone inevitably repeats the cant "You can write bad code in any language."

So the frameworks are much more similar than they used to be, and arguing about languages is considered inappropriate. So we end up with less discussions about tech stacks.

There was also the unusual period, from about 2010 to 2016, when there was an explosion of frameworks for Javascript. That was not normal. And that has now settled down, as folks now use either React or Vue or Angular. The hundreds of other frameworks that were discussed here have now mostly been forgotten.

There are a few ecosystems that are still doing very interesting new things, such as Clojure, and sometimes you'll see articles about that. But I agree it is a smaller percentage of articles than in the past.</comment>


How YouTubers discovered a tingling sensation nobody knew existed - <AUTHOR> http://mashable.com/2015/01/26/asmr-youtube <comment><USER2> One of the things (whether good or bad) that has come out of being able to easily monetize videos on the internet is the discovery of these strange new types of media that I think would have been impossible for companies to discover. Another strange thing is that there are channels that are just kids playing with toys, and the receive millions of views from other kids, I highly doubt children's media companies would have stumbled upon this on their own.</comment>


Bio-design generates uncanny visions that can confront our deepest beliefs - <AUTHOR> http://www.domusweb.it/en/design/states-of-design-07-bio-design-/

<comment><USER2> Mindblowing:

you breath in a bottle and bees detect if you're sick or what stage of fertility cycle are you in

dogs that, literally, breath for you

in-vitro meat

"leather" jacket grown in vitro

the diagnosis of diseases be associated with the colour of faeces

Synthetic Immune System

</comment><comment><USER3> Wow, what an annoying site header. Otherwise, it's rather intriguing.</comment>


Five killer domains I own … looking for technical co-founders. - <AUTHOR> http://calacanis.com/2010/10/15/five-killer-domains-i-own-looking-for-technical-co-founders/ <comment><USER2> _note: i can't sign any NDAs or anything, i invest in a lot of companies, etc. so please don't think that any idea you send is really that important…_

Not that he's wrong, but just an example of how he comes off as abrasive. The _"so please don't think that any idea you send is really that important"_ just serves to belittle everyone else's ideas (while his ideas are "killer").

The startup community generally embraces the "execution is really important" mantra, so just stop it at _"i can't sign any NDAs or anything, i invest in a lot of companies"_

<comment><USER3> From his perspective, it's much better to filter out the people who are sensitive about such things right away, by being 'abrasive', than to spend a bunch of time talking to people nicely only to find out they're incompatible with his style later.

</comment></comment><comment><USER4> The only one that I found mildly interesting was 20.com.

He paid 40k for aday.com?!

Ping me jason, I've got abridge.com to sell to you.

<comment><USER5> I am no expert on domain name pricing, but www.anApple.aDay.com could easily be an Apple fan site or something health related.

<comment><USER6> anappleaday.com would work just as well, though. vani.ty domain names are cute, but hard to remember. I liked del.icio.us, but apparently delicious.com was easier to market.

<comment><USER7> I never used delicious simply because the first time I was told about it, I couldn't remember where all the dots went. Even after checking it out I couldn't remember, so I just never went back. Life's to short to look those things up on Google every time I want to visit a site.

</comment></comment></comment></comment><comment><USER8> Do people here still think that "killer" domain names matter? I mean, will you really make back the extra 40k you invested in joke.aday.com instead of going with the $10 dlyJoke.com or todaysjoke.org (to take two currently available domains I just made up).

Or to put it another way. Has anybody seen any significant increase in business after switching their site to an expensive "killer" domain?

<comment><USER9> Dropbox, Facebook, Groupon and Mint all come to mind.

Update: missed a really obvious one--Twitter. It launched as twttr.com and was nearly impossible to explain to people. I don't think it would have gone mainstream without the URL that includes vowels.

<comment><USER10> With the exception of Mint, the other examples were already quite successful before improving their domain name. Establishing causality in these cases is tenuous.

<comment><USER9> I seriously doubt Groupon.ThePoint.com would today be valued at over a billion dollars.

Dropbox went on a tear after their domain purchase, but I suppose it's possible they would have anyway (though I know from personal experience it was tricky to tell people about Dropbox and then try and remember the domain).

<http://www.google.com/trends?q=dropbox>

(Dropbox.com was acquired in October 2009, right where growth turns from linear to exponential.)

<comment><USER11> Dropbox.com was also acquired right after they got a ton of funding, which could also partially explain the exponential growth.

(Not arguing with you, just pointing it out).

</comment></comment></comment></comment></comment><comment><USER12> That's 125K spent on some pretty B-list domains (except 20.com - which is nice even if it fails the ambiguity test.) It's frustrating to read because pretty much anyone here could tell you that 125K can fund a lot of freakin' development time for actual, you know, _products_ instead of names for things that don't exist yet, even as ideas.

On the other hand, Jason has 125K and I don't so WTF do I know.

But I will say that I don't buy into the idea of really good domain names these days being rare as gold dust; I brand a lot of client companies, and just picked up the perfect 5-letter.com on the aftermarket for $79 on behalf of a client. Granted, that was a steal but I've never, ever paid more than $300 to brand a company with a great .com.

YMMV

</comment><comment><USER13> I'm not sure why the human body imposes physical limits on eye-rolling, so I'm a little frustrated that I can't roll my eyes at this post as much as it deserves.

</comment><comment><USER14> After an infinite number of successful startups that picked an almost random short domain name that was available and used this as the company name there is _still_ somebody calling domain names "killer" for startups?

</comment><comment><USER15> those are horrible domains, and I'd think they cost $9.99 to register.

well except for 20.com.

but 20.com is a horrible name in itself, because the majority of people would just go to twenty.com

<comment><USER16> By that reasoning we should expect higher traffic to thirtysevensignals.com than 37signals.com. Having a numeral in your domain seems unwise but for a location oriented company "20" is a winner. It is not worth $70k though IMHO.

Aday.com is worth thousands. I've been looking at hundreds of potential domains for a daily deal site and it's been frustrating. If I had found aday.com for $10 I would have shouted so loud all my neighbors would be deaf.

<comment><USER15> 37 signals is long enough on it's own that people know that 37 is a number. 20.com on the other hand noone would expect the site to be on the # domain

</comment></comment></comment><comment><USER17> I think he could maybe use 20.com to sell items that cost just twenty bucks. Divided up into categories, such as Home, Office, Computer, Books, Jokey items, it might make a good place to visit to buy birthday or Christmas presents, etc. Or maybe it would just offer web services that cost $20/month or $20/year.

</comment><comment><USER18> Looks like he thought buying expensive domains would make everything else a lot easier. It's like that time when i thought i needed a comfier desk chair and a better laptop to start building a web app, but i was really just postponing the parts that were hard to do. Procrastination in disguise.

</comment><comment><USER19> _\- lowimpact.com and noimpact.com (10k)… wanted to do a green blog._

UGH. Now I hate him even more.

</comment><comment><USER20> Good for you, spending all that money! How much do you have to spend to get your own feature in Modern Domainer Magazine?

</comment><comment><USER21> So I bring a great team and idea, and he brings the domain and funding, and I get "some equity." Except if I have a great team and idea, I can get funding anyway. So really he just brings the domain.

How is this not domain squatting? If Calacanis isn't using the domains, he should sell them.

</comment><comment><USER22> I have to agree with both of you... owning 20.com does not make it become the best location domain. He would be starting late in the game, and would need a killer idea behind the domain.

<comment><USER23> Did you even read the whole post? He clearly stated his ideas were killer to match the level of killer-ness of the domains.

He's a killer guy with killer companies and conferences and killer domain names. Sign me up!

</comment></comment><comment><USER24> Calacanis just offered HN users angel funding, work space, and connections.

The domain name lead is ancillary to his interest in HN users – eg the domains are his way of inserting himself into the HN conversation.

There are worse people in the world to have as your co-founder, and if you hit even a base hit with Jason you're as good as made on the west coast because you can be darn sure everybody will hear about it.

</comment><comment><USER25> 40k? I'm still mad I spent £40 on a domain in a moment of whimsy. Let me know if anyone wants to buy knommerce.com (as in knowledge and commerce... what was i thinking?)

<comment><USER26> lol

</comment></comment><comment><USER27> I think this <http://news.ycombinator.com/item?id=1794576> discussion might have sparked the post.</comment>


WhatsApp to let companies message you for $$$. Commercialising 1B users - <AUTHOR> https://www.itnews.com.au/news/whatsapp-could-let-companies-message-you-for-a-fee-454072 <comment><USER2> Something something, you are the product.</comment>


Threading in Python - <AUTHOR> http://www.nryoung.org/blog/2013/2/28/python-threading/

<comment><USER4> > Generally, you should only use threads if the following is true: - <USER2> > memory between threads is not an issue.

Here's the problem. Threads are really useful only if you can share memory between threads. If you can't share memory, you're usually better off using many processes.

Threads in Python (ie. CPython) can still be useful for I/O multiplexing or executing native code in background worker threads via FFI and releasing the GIL while doing so. For I/O multiplexing, there are better options than Python threads (select/poll/kqueue/epoll system calls and frameworks like twisted that use them).

In most applications, threads probably should not be used in CPython/CRuby code as they provide little performance gain compared to the complexity and overhead they add.

<comment><USER5> Thank you. I would even go so far as to say that except in simple cases (downloading 10,000 images goes much faster with 100 worker threads than serially - which is I think the origin of "dont share memory) I would say _do not use Python_ \- or any other similar language.

Got parallel needs at your core? Look at Erlang or Haskell. If parallel or distributed work is mission critical, go with a language that has such things at its very soul. Python is a great language, but it is being enthusiastically bent to do things it is not top of the class for.

Want to handle more concurrent connections per python web server? If WSGI in Gunicorn is not enough, _stop trying_ and use a load balancer to spread work between _more_ servers.

<comment><USER6> You are technically correct. However, there's at least one invalid assumption at the core of this, which is that people who need to do things that fall into the there's-a-better-language-for-this category always have the opportunity to learn and implement a more appropriate tool.

This is almost always the case on commercial projects. Extremely few companies and clients will be perfectly fine with "yes, I'm a Python expert, but this would be best done in Erlang; I will need an extra week to research, learn, and implement this on top of the month the project would otherwise take." In most situations you either do it the way you know how to do it, eat the extra time (not practical in most cases), or you lose the contract/job.

Of course this is specific to client work, but I think most of us are likely doing that or something similarly limiting for at least half our waking hours, making it fairly relevant when considering ideas like "using tool X for job A is not a good idea when tool Y exists." It's correct but ignores too many practical situations to be very useful advice.

<comment><USER5> I used to think that - bit I now believe we can find the clients who want it done right more than right now

To be fair the best way of judging this is the reverse penalty clause - <USER3> this job must be done by June 1. Ok and if it is three weeks late as we use erlang? A penalty of 1000 dollars a day? Wow - ok so if I am a month early you can pay a bonus of 20,000 ? No - so perhaps we are not as time critical as we feared ? Would you rather save 20,000 in ongoing maintence costs and general uncertainty over how good the solution is for three weeks delay that would likely creep in anyway?

Have I told you erlang has an uptime of 99.999 % proven over twenty years?

</comment></comment></comment></comment><comment><USER7> Some developers, when confronted with a problem, think "I know, I'll use threads" have two Now problems they.

<http://regex.info/blog/2006-09-15/247>

<comment><USER8> Clever. But just like with regexps, the issue arises when a programmer applies them to every situation he/she encounters. Obviously they need not be avoided like the plague, but rather used when the situation calls for them.

</comment></comment><comment><USER9> Where does the GIL factor into this? I thought using threads in Python gives basically no gains unless all the heavy work is being done outside the interpreter. I've always gone with the multiprocessing module instead.

<comment><USER10> Python threads are only useful if you use C modules that handle the GIL correctly and I/O bound stuff from the standard library, it gives no speed boost for python code

<comment><USER11> If not for performance, why would anybody use it? Scalability?

<comment><USER12> It still provides concurrency.

<comment><USER11> Concurrency itself is not desirable. It is a means to end such as performance.

<comment><USER13> This turns out not to be the case - some problems and calculations are most naturally expressed with concurrency.

<comment><USER14> Could you provide an example of a calculation that is more naturally expressed with concurrency?

<comment><USER15> I wouldn't say _calculations_ , as that implies, to me, a mathematical kernel. I can't think of any low-level calculations that are easier with concurrency. But some problems are most naturally solved with concurrency - that is, it's easier to architect the software with threads. Applications with GUIs are sometimes like this: it may be easier to have a main application thread that does the real computations, and a separate thread that handles all GUI work.

The pattern is that instead of one monolithic process that must know about and do everything, sometimes it's easier to think about several independent processes that only know about one domain, and make requests or give answers to other processes that know about other domains.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> I've implemented something similar using Eli Bendersky's example [1] as a guide. His example adds a stop event. I pass my worker thread lambdas, so that arbitrary tasks can be carried out.

[1] [http://eli.thegreenplace.net/2011/12/27/python-threads- commu...](http://eli.thegreenplace.net/2011/12/27/python-threads- communication-and-stopping/)

</comment><comment><USER17> I find concurrent.futures to be a much nicer way of managing this sort of thing in Python. It's in 3.2 I believe, and there's a backport for 2 at <https://pypi.python.org/pypi/futures/2.1.3> You can set up as many executors as you like, each with a given amount of threads to use for its threadpool.

</comment><comment><USER15> _You are not looking for the best optimized performance since threads share memory within a process._

That is a non-sequitur to me. The first half I'm on board with: generally, you use threads to _improve_ performance, but because of the GIL in Python, you may not get the parallelism you want. If you're calling into libraries that don't hold the GIL, then great, but that means you have to be very aware of what's going on below you.

The second half does not follow, though. Typically, that threads share the same address space is the entire reason we use threads over processes. And the reason comes from improved performance: if the thread share an address space, you don't need to copy the data. Copying data is expensive. (It also means you're susceptible to a whole host of synchronization bugs.)

<comment><USER18> Sharing all data between threads means you're susceptible to a whole host of synchronization bugs (in the sense of thread synchronization, not data synchronization). Unless you use synchronization primitives like locks to protect the shared data, which can also easily kill concurrency. It's a trade- off.

If avoiding copying is not a top problem, then you may be wasting your time; there's nothing wrong with using abstractions more appropriate to your environment.

If the program scales out, it should be less important to micro-optimize inside each process because it's so much cheaper just to use another core or another node.

It's getting boring to hear all discussions of concurrency reduced to threads, and threads reduced to the GIL in CPython. It's really not that simple.

<comment><USER15> Yes, it's a trade-off, which is why I brought it up.

But my point here is that the statement the author made, as far as I'm able to understand it, makes no sense. That is, I think he _tried_ to discuss these issues, but I don't think he understands them well enough to do so. I think you and I are in agreement, unless you are saying that what the author stated does make sense.

</comment></comment></comment><comment><USER19> This is Python so threads don't run concurrently because of the GIL (no, using C/C++ code where you can release it is not in the scope of this article). Save yourself the trouble and use multiprocessing.

<comment><USER18> It's oversimplifying to say "This is Python so threads don't run concurrently because of the GIL".

This is not a Python-language issue, it is an implementation-specific issue. Not all implementations of Python have the GIL.

In reality, threads do run concurrently. Because in the CPython (itself written in C) with the famous GIL, it is normal and realistic to do I/O and heavy computation in C code that releases the GIL, enabling threads to work concurrently. There's no reason this information shouldn't be part of discussions on threads in Python.

That doesn't mean threads are great for everything, but the severity of the case is easily and frequently overstated.

</comment></comment><comment><USER20>
        for i in xrange(len(item_list)):

Could be more clearly written as:

        for _ in item_list:

</comment><comment><USER21> GIL? I've found that a single thread is slower than not running a thread at all.</comment>


Why Silicon Valley Is the Next Detroit - <AUTHOR> http://allthingsd.com/20130226/why-silicon-valley-is-the-next-detroit/?mod=atdtweet <comment><USER2> I couldn't disagree more. If there is one thing that Silicon Valley has proven, it is its ability to reinvent itself. Detroit had the auto industry (I use the past tense intentionally), and for all we've seen that's the end of it.

Silicon Valley's history _truly_ starts in gold rush days. From gold rush to military defense to the computer revolution to the .com bubble to web 2.0 to whatever era we're in now.

The reason places die is because they're resistant to change. Silicon Valley causes and represents that change.

</comment><comment><USER3> Technology as an industry is different from verticals such as cars, books, etc. This quote by Mark Andreessen in an interview with Charlie rose sums it up well:

"The core idea we have, the core theory we have, is that the fundamental output of a technology company is innovation and that's very different than a lot of businesses, right? The fundamental output of a car company is cars. Or the fundamental output of a bank is loans. The fundamental output of a tech company is innovation, so, the value of what you've actually built so far, and are shipping today is a small percentage of the value of what you're going to ship in the future if you're good at innovation." Source: [http://www.businessinsider.com/marc-andreessen-on-charlie- ro...](http://www.businessinsider.com/marc-andreessen-on-charlie- rose-2012-6#ixzz2M3pWpDAt)

If you believe that Silicon Valley is good at innovation, and not just software, or hardware, or social networks, then by definition, it will continue to be the hotbed of economic activity as specific verticals die out or get disrupted.

</comment><comment><USER4> Now there's a shocking-blogpost-title-with-little-to-add.

TL;DR from the article: The Valley's business model is spreading. And I don't think anyone will disagree.

But comparing to Detroit? Nope, sorry. When I can buy a house in Palo Alto for less than your average developer salary, let me know.

The Valley won't have the same "rustiness", it just won't be as special anymore. And that's a good thing.

</comment><comment><USER5> I grew up in Detroit. In college I worked in a General Motors factory. Now I live in Silicon Valley and work in the software in industry.

There is just no comparison between the two regions.

That GM factory defined dysfunction. Drugs and alcohol on the factory floor. Distrust. Theft. Sabotage. Vandalism. Hookers.

I've never seen anything like that in Silicon Valley. I don't think the workforce could be more dedicated, and Silicon Valley people are generally enthusiastic about inventing the next thing.

So IMHO that writer just doesn't know what he's talking about. Other regions have their strengths, for sure. But Silicon Valley isn't going away.

</comment><comment><USER6> Please. It's in California. It'll spring back as something else if this thing fails. Doesn't matter what, you just want to be there.

(Said as a Californian now living in Boston—you have to leave to know)

</comment><comment><USER7> This article doesn't even want to make the argument that is in the title. It's winking at the reader the whole time saying "Not Really".

I grew up around Detroit and there's a big difference between a city that has some tough times and a city that basically falls apart because of it. Detroit's industry fell apart, and then a hundred other factors (like race riots) led to the city no longer being a nice place to live. Even if Silicon Valley's tech industry were to fall apart, a lot would have to happen for it to start looking anything like Detroit.

</comment><comment><USER8> Total link bait...</comment>