Notes on Migrating from Soylent to Baby Food - <AUTHOR> http://blog.deepgram.com/why-i-gave-up-soylent-for-baby-food/ <comment><USER2> Actual post title: "Why I gave up Soylent for Baby Food."

<comment><AUTHOR> Yes, I've made this adjustment</comment></comment>


Reasons not to start using PGP - <AUTHOR> http://secushare.org/PGP

<comment><USER2> Here's an interesting twist from the above post: "No wait, let's use PGP just a little bit longer. Jacob Appelbaum recommends to use PGP over Pond instead of over E-Mail. Indeed, in that case most weaknesses listed above are no longer a problem. Also you don't depend totally on the safety of Tor and Pond..."

My conclusion: use several nested layers of techniques if you want security (don't use just PGP, for example). This should be true not only for secure personal communication but also for designing secure software.

</comment><comment><USER3> I feel GPG is only useful for signing, when you might want to verify whether the text had been manipulated. Other than that, I think encryption is just too hard to gain any kind of widespread acceptance.

Personally, I treat email like a postcard: I hardly use it and I don't expect any privacy.</comment>


Company sues ex-employee for his Twitter followers - <AUTHOR> http://www.guardian.co.uk/technology/2011/dec/27/company-sues-ex-employee-twitter

<comment><USER2> Sooner or later social network accounts and such like will end up being written into employment contracts. The lawsuit aside, it strikes me as odd that someone would essentially use one account for both business and personal purposes. That the line is so blurred because of this conflict of interests doesn't really help either party.

The employee hasn't done himself any favours by not separating concerns, and the business hasn't done itself any favours by not (as far as we know) issuing any usage guidelines or otherwise making clear what can and cannot be done with an account.</comment>


Ask HN: Best git tutorial for designers? - <AUTHOR>

Is there a relatively non-technical introduction to git that you give to people who aren't super technical but have some SVN experience? I need to get some designers into git but don't know what to recommend - book or online guide. <comment><USER2> gitref.org is great. Its concise enough to get you and your team started. You can then move on to progit.org if you want advanced info

if you care about mercurial (I do), hginit.com is great. It even provides a intro specifically for users coming from Subversion. you can then move on to <http://hgbook.red-bean.com/>.</comment>


Ask HN: Should you allow your employees to work on side projects? - <AUTHOR> <comment><USER2> Allow?? What makes you think you have any say in the matter?

As far as I'm concerned, my employer doesn't own my brain 24x7x365, and they damn sure aren't paying me to be "on the clock" 24x7x365. So long as I'm not using their time, equipment, trade secrets, etc., I will work on side projects.

<comment><USER3> As an employer (Founder and developer) I 100% agree with you. I actively encourage employee discussions about side projects and I love seeing my staff work on them and grow on a personal level.

I despise companies that try and own all of your creations outside work hours, and I feel like this shows clearly that the company sees the employee as an object to exploit rather than a person with a desire to grow.

</comment></comment><comment><USER4> ProTip™, when you join a company and are required to declare previous IP/inventions, list a bunch of made up side projects with vague/semi-scoped descriptions.

Then when you complete a side project you just pick a name from your prior inventions.

Worked for me, I launched 3 businesses while fully employed and have zero risk of having them taken from me.

<comment><USER5> Would someone be in trouble for saying they changed the name of the project half way through? This would allow me to choose any name instead of just the ones I had come up with earlier.

In any case, genius idea!

</comment></comment><comment><USER6> I hope you mean during work hours - that is debatable and depends on how much you trust them to make useful things.

Outside of work, you do not own them, they are people not property. Making ANY claims on their time, energy or IP produced outside of work is despicable if you ask me. An employer who did that would be signaling that they view employees as property, would likely treat them poorly or like children, and I would never work for them.

<comment><USER7> Agreed. However, you should NEVER use company equipment or resources for side jobs/projects unless you've been explicitly given the OK in writing to do so. A lot of employers have it written into agreements/contracts that they own any work done using their stuff. It seems like it should be common sense, but I know a number of people who do side gigs using their laptops from their full- time jobs, and I feel like that's just a disaster waiting to happen if the employer ever finds out.

<comment><USER8> That is some excellent advice. Thanks for mentioning this!

</comment></comment></comment><comment><USER9> Yes, not just "allow", I would actually _encourage_ them. I don't manage people, but have been in tech lead roles. I encouraged co-workers and reportees to experiment and learn things outside of what was required for employer's work.

IMO, side projects always help expand technical skills. They usually also drive people towards improving their social or communication skills. An employee whose feelings of freedom and autonomy have been encouraged by a company is usually a happier productive employee. It also brings second order benefits for the employer - such an employee is more likely to describe the employer as providing work satisfaction and recommending them in their social circles.

I have experienced both types of employers - the open-minded ones, as well as the paranoid/narcissistic/control freak types. I have good things to say only about the former.

Just adding a productivity/work satisfaction angle here, because most answers so far seemed to be from the perspective of legality.

</comment><comment><USER10> All the comments so far are stating how obvious it is that they can't claim anything about what you do in your free time.

It is not so clear cut, at least in the US. See Joel Spolsky famous answer to "If I'm working at a company, do they have intellectual property rights to the stuff I do in my spare time?"

[http://www.brightjourney.com/q/working-company- intellectual-...](http://www.brightjourney.com/q/working-company-intellectual- property-rights-stuff-spare-time)

<comment><USER11> It's not as clear cut in places like Japan too, where being part of a company can actually be like part of a family. Your identity can become entwined with the company. They will treat you well but also expect you to devote yourself to them.

</comment></comment><comment><USER12> I'll assume the question regards employees working on side projects outside of the hours that they are doing paid work for their employer.

I think it is reasonable for employers to require:

\- the employer owns any intellectual property generated by the employee during the course of the employee's duties (i.e. paid employment)

\- that employees disclose any real or potential conflicts of interest with their employer's business

\- (possibly, subject to negotiation) that the employee may be placed under non-compete restrictions during the time they work for and after they leave the company, provided the employee is appropriately compensated for the opportunity cost (e.g. a paid period of "gardening leave" if they are prevented from working in the industry for 12 months)

I don't think it is reasonable for an employer to own intellectual property generated by the employee outside the course of their duties, or have any say in what other business activities an employee may have, or whatever else an employee does in the rest of their life outside the $dayjob.

Personally, as I've gained experience working as a permanent employee and working as a contractor, I simply won't sign any employment agreement that constrains what I can do in my time outside of work. Sometimes prospective employers opportunistically sneak such clauses into employment contracts, but are then happy to strike out such clauses, if they are not, there's plenty of opportunities for well-paying contract work without such restrictions, so I'll look for something else.

That said, part of this is simply about relative power of the employer and employees. If employees don't have a range of alternative options for work, or are not unionised, and don't live in a polity where these aspects of employment contracts are regulated, then it is possible than employers may offer relatively unfair employment contracts, which some potential employees will still sign if they don't feel they have an alternative.

Thucydides -- "the strong do what they will, the weak suffer what they must."

</comment><comment><USER13> You don't have a choice in the matter, and even posing of the question is troubling.

<comment> crack-the-code Not necessarily, many large companies are willing to guide and help an employee determine if something is okay or not to work on. You shouldn't be discouraged for posing the question, and if you are, the employer is not being rational.

<comment><USER13> The only case where it might even be a question is if you're directly taking what you are working on during your day job and putting it into a side project, aka stealing their IP.

Other than that, no, your time is your time and unless they are paying you then they have no say as to what you work on no more than they have a say in what you eat for dinner.

<comment> crack-the-code I disagree with your first sentence. Say that you work for Amazon, and you start an e-commerce side project that directly impacts the growth of e-commerce outside of the Amazon marketplace. It may be a negligible share of the market, but you are still negatively impacting Amazon's sales. There is a reason that they put conflict of interest in the fine print, and posing the question helps bring more context.

<comment><USER14> > but you are still negatively impacting Amazon's sales

It is not the responsibility of a single employee. Even more in a market so ubiquitous as "ecommerce".

The same way, Amazon (and other tech companies) impacts negatively the careers of its employees when it change platforms, frameworks, technologies or do a layoff.

<comment> crack-the-code Why should a company hire someone who is potentially going to impact their own revenue? And in rarer cases, a side project that actually generates enough revenue to where the amount of money they are paying you is less than the share you are taking from their revenue.

To your second point, sure, employers hold more power. What is wrong with that? If you don't like it, you can always work somewhere else.

<comment><USER14> > Why should a company hire someone who is potentially going to impact their > own revenue?

Because every software engineer can impact their own revenue the same way.

> To your second point, sure, employers hold more power. What is wrong with > that? If you don't like it, you can always work somewhere else.

Don't liking it, I'm supporting my peers in HN that it is not unethical to have a side project and use it as a leverage to not be subject to the humor of your boss. It is also good for the company, as desperate people aren't creative.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> Outside of work hours and following any non-compete clauses in the contract, I would say companies shouldn't own ideas generate/worked on outside your day job hours. I know this is not common with many companies in the North American workplace though. I personally had a contract which had a total ownership clause offered to me. I got lucky when discussing the general idea of it with an ex-coworker, who got me a full-time contract at a second company with no such clause. I much preferred the second place anyways, as I had done some work with them through university.

</comment><comment><USER16> We at [http://draftss.com](http://draftss.com) strongly motivate our employees to indulge in side-projects. We have a strong team of expert graphic designers, developers, project managers, sales and marketing.

Right from the interviewing candidates, we prefer people who have come with a background of projects/startups created by candidates.

Based on past experiences, this has led the employees to come up with out of the box concepts that help in optimizing our existing services.

</comment><comment> crack-the-code As long as the side projects are in no way considered a conflict of interest, I think it should be acceptable. It is sometimes difficult to determine whether or not something is a conflict of interest. The other thing to be careful of is making sure that the additional side project(s) are not burning out the employee, or occasionally eating into their actual time at work.

</comment><comment><USER17> I pretty much never hire anyone who doesn't have a side project. I don't care if it is super shitty php code, as long as you are coding outside of work, I know you will be a good programmer.

And anytime I made exception to this rule, I always regretted it.

<comment><USER18> I have lots of ex side projects, but family commitments means they are not maintained. How does that fly with you?

</comment></comment><comment><USER11> Alternate perspective - if I offer significant company shares to an engineer, I'd expect them to devote quite a lot of mental energy to the company

The reasoning is that a lot of the biggest breakthroughs happen with "ambient thought". It's the stuff you figure out while in the shower or while mowing the lawn.

If they're getting a 30% share or more, it's like a marriage. You can fantasize about side projects, but not devote significant effort chasing them. If you want to be doing side projects, you should be taking a lower cut and higher salary.

If it's around 10%-30%, you'd be expected to be at full energy overtime and put all side projects aside when needed. Side projects are okay as long as they don't get in the way.

At about 1%-10%, you could probably do one, but you'd be better off focusing on your job related project. It's probably a part of expectations too.

</comment><comment><USER19> I would not work for an employer that tried to limit my non-work activities.

</comment><comment><USER20> Yes and you should give them time inside the office hours to work on their side projects even it's totally unrelated to your activity. They'll feel better and will be more productive.

</comment><comment><USER21> I would allow employees to work on side projects.

<comment><USER22> You sound like you're on the right side of this, but important point: it's not up to you to allow them. You don't "allow" people rights they naturally have.

</comment></comment><comment><USER23> I don't believe you can legally prevent that. There may be some clause about total ownership of work, but I'm not sure that's been tried before.

<comment><USER24> If you're referring to total ownership, it's absolutely been tried. It's boilerplate in some standard contracts. I crossed it out of the contract when onboarding at my current employer (thankfully, they didn't object at all to rewriting it to cover only work done during work hours or using company resources, which is perfectly reasonable).

I think the idea behind total ownership is that if, say, you're a chemist researching temporary adhesives based on petroleum, and you're in the shower one day when your team's petroleum research suddenly inspires an idea about a temporary adhesive based on latex, they don't want you going out and either selling that idea to a competitor or starting your own company. And they might have a case.

In general, side projects closely related to your employer's line of business are a recipe for trouble anyway, and I don't recommend it even if your contract is permissive about IP.

</comment></comment><comment><USER25> Of course. But, many employees should check the contract they sign. Many companies claim work at and outside of work.</comment>


World wide wasteland - <AUTHOR> http://www.zemanta.com/blog/world-wide-wasteland/ <comment><USER2> @Swizec, too bad your message was negated by the video pimping Zemanta at the end. Outbound links to cool stuff generated by a machine? That's exactly what you were mourning.

Love cannot be automated. Certain battery-operated appliances have been invented to attempt this (I've heard), but they can't replicate the real thing.

Links to good stuff cannot be automated. Selecting good stuff to link to requires good taste and judgment. Humans exercise good taste and judgment. This is the source of the value you miss from enthusiastically, freely given recommendations: "Hey, look here! This is really cool!"

A human did it.

A recommendation machine like Zemanta's is attempting to do the same thing that link farms, bent SEO, etc. want to do. Zemanta's come-on is a bit more appealing, perhaps. But its goal is the same. Listen to the message in the video.

The fact that love does not scale is liberating. I do not need a million followers. Or 50. All I need is to sit and talk to my friend Roger over a cup of coffee. Or help my 8th grader gently towards understanding the mis-magic of PHP. Or say "I'm sorry" to my wife when I screw up.

Or throw a great link on my website when it makes me happy.

TL;DR

Love doesn't scale. That's why it is so valuable.

Only humans love. Machines cannot.

Be human-sized. And give love.

<comment><USER3> This Zemanta thing reminds me of the Alexa toolbar—I think that's what it was, I'm going back as much as a decade here—that shows you links related to the page you are currently already on. Back in the day people were really excited about the Alexa toolbar for some reason.

<comment><USER4> Well Zemanta tries to help the author instead of reader. That might sound like a small difference, but it actually is a huge shift - author is a human filter and things that the end reader see are not computer-recommendations, but human selected ones.

</comment></comment></comment><comment><USER5> APOLOGY ABOUT THE SUBSCRIBE POPUP: I am the author of the piece, I did not know popups existed on this blog (I usually write on /fruitblog).

If I knew about this, I would insist on posting on the other blog. Stern words are being said right after I find whomever's responsible.

You have my apologies.

edit: it's been turned off.

</comment><comment><USER6> What?

We're complaining about the disappearance of _blog-rolls_? Seriously?

I think this article fundamentally misunderstands what the purpose of blog rolls was, and what has filled those niches since.

Blog rolls used to basically fill two purposes, either 1) an exercise in co- branding (which folks still do: <https://svbtle.com/> ), or 2) as a list of things that folks find interesting.

1) is kind of a boring subject, and people have sensibly realized that there's a lot more that goes into consistent branding than just providing some links.

2) Is the space where a lot of special built tools have popped up, whether it's pinboard or delicious, or twitter and tumblrs for link blogging. I would argue that this is a vastly preferable circumstance to having a blog roll.

So, OP writes that "link love" is important. Sure it is. But one of the problems with link love, especially blog roll style, is that maintaining a list of links can be a pain in the ass, especially when blogs start winking out of existence.

The lack of a blog roll doesn't mean that linking has gone the way of the dodo. We've just reorganized the net and the way linking takes place. "Wasteland" is a bit much frankly.

Oh. this is to pimp a product. Nevermind. probably best just to ignore this entire conversation :P

</comment><comment><USER7> You know, I always hated the echo-chamber many blogs became, blogging endlessly about what other people had blogged and not giving any thought to producing original content. I mostly steered clear of twitter, because my impression is it's even worse there. And I don't think I've ever in my life followed a "related stories" link.

In the days of print we managed just fine without pointers to other works. If you were very lucky you got a bucket of citations at the end, but most people skipped right over them. Somehow, we still managed to do discovery.

Are HN/reddit in danger of ceasing to fulfil their discovery functions? Maybe, and maybe we need a better discovery solution. But I don't think peppering our actual content with pointers away from it is the solution.

I've recently moved my blog to the simplest theme I could find. A typical entry has no links, not even to the homepage - I figure by now people have probably learned how to use the back button. Each entry is a simple piece of text that should live or die on its own, just like a newspaper column.

<comment><USER8> > Maybe, and maybe we need a better discovery solution. But I don't think > peppering our actual content with pointers away from it is the solution.

How can a discovery solution not provide pointers to the thing you're discovering?

<comment><USER7> The discovery solution needs to have the pointers. But the actual content doesn't. I'm advocating keeping discovery on dedicated discovery sites (which would of course be full of links), rather than mixing it in amongst the content.

<comment><USER9> More value in inbound links than outbound links?

The environment sets the context of the content. But your content may appear different when viewed from a different aspect (under a different context.)

A piece of content barely stands on it's own, that's the charm of the web. It's an endless task trying to atomise it.

<comment><USER7> A piece of content has to stand on its own (at least on a physical level; obviously works are embedded in their cultures), because reading is still a fundamentally linear activity (and watching a video more so). Displaying a composite piece of content derived from multiple sources is a rainbow people have been chasing since before the web (see xanadu), but it still looks as far away as ever.

<comment><USER9> I don't know why I said barely - should have said 'doesn't solely stand on it's own.' But of course ideally it would be nice if it had meaning all by itself.

</comment></comment></comment></comment></comment></comment><comment><USER10> Someone [1] out there is also shaking down the smaller web sites by scaring them. We (blekko.com) get requests from website owners or their representative saying they've been told their ratings in Google are harmed by all the links to their site so please remove any links we have to their site (and then they give a URL which is a search for their site on our search engine). I assure them that Google does not use our results to adjust their ranking algorithms.

But the meta comment is that more folks than ever are putting content on the web with no idea about how the web works or is worked. That's kind of sad, not entirely unexpected, but sad.

[1] I always ask who told them this but so far no answers to that question.

<comment><USER11> Unfortunately, post-Google's Penguin update, there is very strong evidence that some types of links can indeed harm people's ranks in Google.

That's such a fundemental change to the way that SEO works that it's had people running scared for a while now.

<comment><USER12> That is a very serious claim. Do you have any data/evidence to support this, or is it all strongly worded opinion? If that were actually true, it would be grounds for regulatory action under the Sherman Anti-Trust Act of 1890. Many companies other than Google depend on the interconnectedness of the web, as represented by, among other things, inter-site linkages.

<comment><USER11> Matt Cutts confirms that some links can harm your site here - [http://searchengineland.com/google-talks-penguin-update- reco...](http://searchengineland.com/google-talks-penguin-update-recover- negative-seo-120463)

Here's an example of a site which recovered from a Penguin penalty by removing external links - [http://www.seomoz.org/blog/how-wpmuorg-recovered-from-the- pe...](http://www.seomoz.org/blog/how-wpmuorg-recovered-from-the-penguin- update)?

And here's some more general data analysis - [http://www.micrositemasters.com/blog/penguin-analysis-seo- is...](http://www.micrositemasters.com/blog/penguin-analysis-seo-isnt-dead- but-you-need-to-act-smarter-and-5-easy-ways-to-do-so/)

</comment></comment></comment></comment><comment><USER13> The problem with the utopian vision of the linked web is that links to meaningful content elsewhere on the web die.

In November of 1994, I created a personal web page. I linked the one image (the logo of the university where I intended to go to go to grad school). By March, the link was broken. The school had redone its website.

The world wide web broke the social contract implicit in Gopher. Geocities is no longer online.

<comment><USER14> Linkrot is a real problem, but it's nowhere near as harmful as PageRank was.

Once links have commercial value, people don't want to give them away for free. Serious publishers quit making links to outside sites and soon other people got out of the linking habit.

<comment><USER15> This problem has been solved 7 years ago. In 2005, Google introduced _nofollow_ :

      ...

I believe that _nofollow_ was mainly introduced to fight against guest book spam, so links in comments wouldn't be accounted by the PageRank algorithm, thus removing the incentive for that nasty spam.

However, you can also use _nofollow_ to link to your competitors without increasing their page rank.

<comment><USER14> that's indirection and psychological warefare on the part of Google.

in the big picture you give them data and they process it as they wish; "nofollow" is just a suggestion. for instance, they can compute metrics of it such as the ratio of follow/nofollow links pointing to a site and feed it into their scoring system

good links do get passed around in comments (this is the blog post you really should read about this) that shouldn't be nofollowed, while other webmasters are stingy and nofollow everything they link. so who knows what Google or bing does with this.

What is clear is that if you play it safe and give no link, Google won't give them any credit.

</comment></comment></comment></comment><comment><USER16> The web has gone too commercial. People cares more about the Ad revenue than offering valuable content. Most sites don't freely share information withouth being filled with Ads/analytics, and most of the time that content is just a repost from elsewhere. From that perspective, linking things outside it's not a good thing to do, they're a way to "leak customers".

<comment><USER9> Indeed the commercialisation of the web is tawdry. I'm surrounded by a sea of bullshitters too. The scientific aspect of the web - it's honesty and naivity have been lost.

I still think there is room for the semantic web, to put right these wrongs - not sure about how you actually achieve that though.

</comment></comment><comment><USER17> The irony in this post kills me. As 'parktheredcar' mentioned, there is no 'blogroll' (or 'link love', as he calls it) on the site, and the first thing that happened to me when I went to the site was an annoying subscribe pop-up. That alone is the exact answer to why this problem exists. As others have mentioned, people are far too greedy and want all the traffic to themselves. You are never going to get back to a linking web when, at the end of the day, you are just losing "customers".

<comment><USER5> There's actually a bunch of link love in the post. I made sure to link stuff that seemed relevant.

As for the popup, stern words will be said to whomever turned that on. I didn't know it even existed.

<comment><USER17> Interesting. I actually still see lots of posts that have lots of links throughout the article. Especially when an article is referencing other code, projects, plugins, articles, etc. I assumed you meant more about the death of 'blogrolls' that has occurred over the past few years because that IS what has died out, in my opinion (and for reasons I stated above).

</comment></comment></comment><comment><USER18> "No, Tumblr doesn't count. When was the last time somebody re-tumbled anything more substantial than a picture with two lines of text? And where have all the blog-spanning debates gone anyway?"

It's clear that the author of this post doesn't grok Tumblr. With Tumblr, good content discover is hard and that is the main issue with using it. However, there is TONS of high quality content in long format on Tumblr from a variety of users.

Finding quality content on blogs has always been a crap shoot. Starting your own blog and keeping it high quality is hard and nobody's blog is high quality all of the time. Linking with traditional blogs is and was NOT a good way to disseminate information, as most people have poor information literacy and do not have an easy time of finding relevant material via linking. That is why sharing links and posts via social networks is so popular, as it provided a way to generate and follow content with an easier (not necessarily easy) to understand usage model.

</comment><comment><USER19> I am (in part) attempting to address this discovery issue with <http://hubski.com>. It is a de-centralized aggregator in that submissions are public, but there are no shared pages. You get the content posted by people you follow, but also the content that they decide to share with you (not unlike a retweet). Instead of votes, posts propagate via shares.

There are also tags, which may be followed as well that are usually topical. That helps 'outside my feed' discovery. Also, you can select a certain amount of external posts to filter into your feed for some serendipity. Finally, you can ignore specific users and tags to control for what type of external posts filter in.

We aren't huge, but we've got a pretty eclectic range of content.

Using this model, bloggers and content creators can post their own links. If people aren't interested, they simply won't see them. -There are no community pages to be polluted. IMHO shared feeds are key to the decline of these types of communities.

</comment><comment><USER20> Are links dead?

I actually find myself using links... as they were intended, to link to whatever content I'm blogging about as a service to the reader.

I wonder if the rise of the knowledge graph will save links, where every single noun can be automatically linked to by the AI interpreting it for you.

<comment><USER21> If every second word on site was a link, nobody would bother to click them. People would just be frustrated by all that blue words.

Hmm, maybe that's argument for making different categories of links. Like blue links for things you suggest to read, light blue for things that are relevant, but not that important for most readers, and gray for links to definition of a word, source of the data, such things, that most people would ignore.

</comment></comment><comment><USER22> As a user, you don't link. You re-tweet. Hoping people will follow you. Because if you have many followers, you have value (being monetizable, or just ego).

As a company, it's the Same thing. except instead of tweets (some also use tweets, obviously) they've an actual website (which has links to mostly itself, and in rare cases, wikipedia)

It's not just bloggers. It's the whole web thing. It was based on sharing and linking. I find that it was very, very cool. Now, it's addresses to webapps.That, and social sites.

So yeah, I like the article, because even it's not 100% accurate it's still very insightful.

</comment><comment><USER23> That's an interesting perspective to maintain without any data to back it up. I click on links from blog to blog all the time. I read blogosphere-level conversations all the time. I also think it's worth bearing in mind that the leading crawlers know the context of a given set of links, and a bunch of links with minimal context all in the same div (e.g. "class='blogroll'") aren't even going to provide the kind of "link juice" a contextualized link in a large body of text would gain. So that's why a "links" section on a given post or as a page on a site provides minimal value to the recipients of those links.

If you want to complain about something, complain about the decline of contextualized discussion in the blogosphere. Oh wait 00 you can't, because that's not actually a problem.

</comment><comment><USER24> There is no 'blogroll' on this very blog. All I got was a popup asking me to subscribe to something.

<comment><USER17> This exact thing made me crack up in embarrassment for them. The irony that this post alone has, is ridiculous.

</comment></comment><comment><USER25> I once complained to a blogger that he did not use a single link in his article about a new site. His response was that if I wouldn't manage to find the site via Google, I'm too dumb to be using it anyway. So much for links.

</comment><comment><USER26> I still have lots of external links on my personal website, and I still put up external links almost any time I comment on Hacker News. I write FAQ documents on a few dozen subjects that are set up with links that work by copy-and-paste into emails or on most forums that aren't programmed to actively suppress active links. (Thus those FAQ documents work fine here on Hacker News.)

Links do sometimes break, and the most recent time I submitted a link here on Hacker News that had been changed by the site owner (grrr), another Hacker News user quickly discovered the changed link, and let me know about it.

<http://news.ycombinator.com/item?id=4467428>

Of course, now I have fixed that in my offline FAQ document. My all-time favorite link to share in a Hacker News comment, the article "Warning Signs in Experimental Design and Interpretation"

<http://norvig.com/experiment-design.html>

by Peter Norvig, director of research at Google, has been alive and well for years with the same URL since I first discovered it. You could safely include it on your website without much fear that it would ever go dead before your own site did.

I link out to other quality websites because linking out to other quality websites is a reliable way to share more information with more of my friends than typing it all out myself. I can't count on everyone actually following and reading the links I put in comments here (which means that some people replying to me here have missed more of my point and the evidence for my point, especially on controversial issues, than is good for informed discussion on HN), but links still help curious readers learn more, and informed readers make for better interaction with your site and almost any site.

There are means to prevent link rot

<http://en.wikipedia.org/wiki/Wikipedia:Link_rot>

<http://validator.w3.org/checklink>

and it's worthwhile to use them. It's more worthwhile to provide external links that to your best knowledge and belief still work than to avoid external links entirely.

EDIT AFTER FIRST KIND REPLY RECEIVED HERE:

Peter Norvig is definitely good about linking to other pages on his own site from each page he puts there, at least by putting a home page link unobtrusively at the bottom, as in the link I submitted, but he does link out to other good stuff by other authors (as he especially does in the link I first put in this comment, my favorite online article of his). As an example of the Peter Norvig article with the most INBOUND links from other sites, his most-read page, I should also post here the link to his "The Gettysburg Powerpoint Presentation,"

<http://norvig.com/Gettysburg/index.htm>

which is laugh-out-loud funny for anyone who has ever had to sit through a PowerPoint presentation by someone who uses too many of the default settings on PowerPoint.

<comment><USER13> I would say that Norvig is an edge case both because he is in academia in general and computer science in particular. On the one hand, his website reflects research which has largely been dead-tree published, and on the other, he understands the importance of controlling the database where his information is stored as well as maintaining the integrity of that database.

Incidentally, most of Norvig's personal page is linked to content on Norvig.com, not to other sites.

[Edit] As a qualitative measure of how far Norvig.com is from the mean, imagine the comments it would draw as an "Show HN: Feedback" thread.

</comment></comment><comment><USER27> Trigger warning: This blog has a popup that appears after several seconds, hiding the content.

</comment><comment><USER28> "Right now hacker news and reddit are top notch. But they too will die eventually." Scary thought but aren't these two built on top of what's dyeing. Which are links, "as in nobody links to other websites anymore". You are right no one links to interesting content in their blog posts anymore which is quite sad. But so long as HN and reddit users keep posting links that they find interesting the future is all good.

<comment><USER29> So lots of people gather on HN because it is so good and soon enough someone realizes that posting links on HN is a good way to gather page hits. It's downhill from there. People begin to post not only about others startups they find interesting, but about their own ones too for fun and profit. Intentionally or unintentionally astro turfing. Then genuinely intersting links also gets accused of being link bait or of promoting some business.

Not before long you'll find shady ads on various forums selling links on HN: "tons of karma, 2yr acnt, $20$/ppost" Not a single site built on user submitted content have been able to withstand that plague.

</comment></comment><comment><USER30> Google has a hand in this, too. PageRank and derivative algorithms stop making sense when the primary driver of traffic and therefore links is the algorithms themselves. Small differences get wildly exaggerated because whatever shows up first gets all the links, so there if you're a purely cynical actor the best route seems to be to try to write something as it's trendy and pray for a linkstorm miracle.

<comment><USER31> Exactly, one might think that Google is trying to monopolize links by punishing sites with outgoing links.

</comment></comment><comment><USER32> One well-known climate blogger, Prof. Judith Curry of Climate Etc., NEVER allows trackbacks. Reprehensible. This is the worst case of a self-involved academic who thinks nothing of exploiting the time, energy and hard work of others to enhance her reputation. (I refuse to link to her information sink of a site here.)

</comment><comment><USER33> Flagged for the really obnoxious "subscribe to our newsletter" pop-up (that apparently is more important than the content on the page, since it hides the content as you get a few sentences in), and, as others pointed out, for committing the same crime it's ranting about.

This really smells like spam, and either way, isn't HN quality.

<comment><USER34> I would unflag it if I was in your place, because it's been fixed[1], and I don't know what triggers losing flag rights.

[1] <http://news.ycombinator.com/item?id=4479147>

</comment></comment><comment><USER35> I'm not sure what blogging niches of the web this author is referring to, but the economic/political blogs that I frequent share links all the time, and they all have blogrolls, too (Ex. [1][2][3]). I even picked up links from a bunch of them on my amateur econ/pol blog a few months ago when I pointed out a mistake in a graph a bunch of them were sharing. So linking is not completely dead from where I sit. It's not even dying. YMMV.

[1] <http://marginalrevolution.com/> [2] <http://econlog.econlib.org/> [3] <http://www.volokh.com/>

</comment><comment><USER11> The "no-linking" phenomenon is definitely happening, but it's niche-related.

In the world of Internet Marketing, very few people ever link any more. I actually killed a business idea earlier this year because in its first month, the scale of the problem became apparent. No-one links.

In the world of games blogging, by contrast, people link all the time. I run a fairly successful website whose sole function is to provide manually curated links - and people link back to it all the time. Discussions fly around the gaming blogosphere and the blogroll is very much alive.

I'm not sure what the status of the link is in the tech community. Anyone?

</comment><comment><USER36> _Smaller websites and even bloggers caught on, those that remained, stopped linking to cool things. Screw you cool young startup! Not only am I providing free advertising for you, you're harming my search results! However will the five hundred readers I have find me?_

Ugh, how condescending. Guess what: most startups aren't doing anything very "cool" and my 500 readers, though small in number _to you_ , are really important _to me_.

</comment><comment><USER37> Linkrot is a serious issue. Just looking back at the top stories from Hacker News in the past for my <http://waybackletter.com> project is depressing at times. I need to compute some real stats one of these days, but I would say about 20% of links are dead. That is just the popular articles (by votes), I imagine if you go down the long tail it just gets higher.

</comment><comment><USER38> Revisiting my comment from a couple of weeks ago, "mass media, which includes Google, however they may try to deny it, lives by the numbers, which means adapting to the lowest common denominator. Just think, as the Internet spreads, Google will evolve (devolve) closer and closer to broadcast TV!"

Just substitute "the Web" for "Google"; the Web is becoming television!!

<comment><USER39> Totally agree. But unlike traditional media, on the Web you can be a broadcaster too without any permission.

<comment><USER38> The problem is the "mass" part. While I agree that not needed approvals is a good thing, from the point of view of "massification", mass broadcasting just makes it go faster. You have the lowest-common-denominator on both ends of the communication channel. It strengthens the old joke about calling the TV an "idiot box": It has an idiot on both sides.

The reason the internet won't actually get as bad as TV is the lack of approvals, and relatively low cost even for good quality production. The problem is that it gets harder to find amongst all the bleep. Search engines help, but I have found some useful sites, by following links, that apparently aren't indexed by Google or DuckDuckGo.

</comment></comment></comment><comment><USER40> If you browse around jwz's site, you really get a sense of what a hypertext site can be. I like it a lot. :-)

I've had an idea for an 'autolink' took for a while - it'll go through your HTML-base and generate links to other pages based on a statistical likelihood that your word is related to the other page(s).

</comment><comment><USER41> Yes tumblr does too count, n-levels deep screen spanning reblogs are common in the parts I frequent. Perhaps you need to hang out in the less cat-picture focused parts of tumblr, it's a very "small world" type system.

</comment><comment><USER42> Am I the only one who smirked while reading the title of the blog after clicking through, only to see a site-overlay popup?

'Subscribe to our newsletter' No thanks. _closes site_

</comment><comment><USER43> It's a recognisable problem, but for me the blatant self-promotion at the end left me feeling that I'd just been duped into viewing an advert.

</comment><comment><USER44> Automation strikes again, or any system that relies on buttons being pushed will eventually have those buttons automatically pushed.

</comment><comment><USER45> i call this bs. theres never been more links on "personal" sites & blogs than now. it's an information desert because a huge amount of the links are dead or simply garbage.

</comment><comment><USER46> github, google+. No seriously.

</comment><comment><USER47> Has anyone told this guy about reddit?

<comment><USER48> >>Right now HackerNews and Reddit are top notch. But they too will die eventually.

You haven't even read the article.</comment></comment>


ANNOUNCING: GNU Mailman 3.0 - <AUTHOR> https://mail.python.org/pipermail/mailman-announce/2015-April/000210.html

<comment><USER2> Archive searching is finally available. Yay!</comment>


Users Sue Juul for Addicting Them to Nicotine - <AUTHOR> https://www.wired.com/story/users-sue-juul-for-addicting-them-to-nicotine <comment><USER2> > The most recent complaint ... came from the mother of a 15-year-old, [who] > became "heavily addicted to nicotine," the suit claims, making him "anxious, > highly irritable and prone to angry outbursts," and perform poorly in > school.

> Juul use was pervasive at the school, including on the school bus, in > bathrooms, outside school, and even in class

> In order to deter his use, the complaint says the teenager's parents removed > the door from his bedroom, locked parts of their house, instructed school > officials not to let him use the bathroom unaccompanied, and subjected D.P. > to regular urine tests.

> Yet despite all these measures, D.P. is unable to stop Juuling.

I can't help reading into this completely different story. It reminds me of dialogues in R.D.Laing book when he questions the patient and his relatives, and you can't tell who's "ill".

But even if it's accurate account on mother's part, why not to sue the school where they vape on a schoolbus?

edit: missed words

<comment><USER3> Vapes aren't cheap. Somebody gave this kid $100 to buy his device and someone regularly gives him $10+ to refill it. And somebody is failing to check his age when he makes the purchase.

The only problem the school has is that they don't have a vape awareness program. That's all you can expect them to do with the money + labour they have. The police should get involved and charge the companies who sold the devices and juice.

<comment><USER4> They can be much cheaper than that. Most options at vape shops are less than $50 and the liquid can be mixed at home for pennies on the dollar. The juul device that is mentioned in the headline retails for about $20.

<comment><USER5> MSRP $35 for the device kit (comes with the vape and the charger) $50 for the starter kit (device kit + variety pack of 4 pods). At least as recently as 6 months ago it wasn't uncommon to see starter kits going for $70 in NYC. $15.99 for a pack of 4 pods, often shops will charge ~$20, depending on area.

</comment></comment></comment></comment><comment><USER6> There's a cynical part of me that wonders whether this big anti-vaping push is funded by the cigarette companies, because these products are cannibalizing their business.

<comment><USER7> The cigarette companies know that we're going down the path of higher prices, higher taxes, more restrictions on sales and advertising, and more restrictions on places where you can legaly smoke.

That doesn't make them scared of the vape business, it makes them want to join the vape business, and a number of them already are selling ecigarettes and juice.

<comment><USER8> This exactly, the rules around usage do nothing to curb actual usage and only to prevent anyone else from making cigarettes. This increases prices and hurts cigarette consumers.

The only outcome here is that well-meaning therapeutic e-cig / nicotine quitting businesses will likely be stomped.

</comment></comment></comment><comment><USER9> There is a journalism campaign against Juul in particular, and I don't know why. They continue to run stories about how kids are getting addicted to it, and that somehow Juul offering flavors (like cotton candy) are targeting kids specifically.

Again, I don't vape, but have occasionally done Hookah. Flavors were the whole point of it, and I was well above 18 when I made the choice.

Warn against the dangers of vaping, sure, but I don't see what this company in particular has done. And I don't see how people don't realize the dangers of vaping nicotine.

<comment><USER10> > but I don't see what this company in particular has done.

They've developed a special formulation of vape juice that causes a much more dramatic spike in blood nicotine levels, which experts confirm increases the risk of addiction dramatically compared to the gentle plateau of blood nicotine caused by other vaping products [0].

Maybe this is beneficial on net (Juul confirms outright that the nicotine spike is the entire point of their formula, but they say it's intentional to help people quit smoking) but don't try to muddy the issue by claiming they're being singled out for no reason.

[0]: [https://www.theverge.com/2018/7/3/17529442/juul-vapes- nicoti...](https://www.theverge.com/2018/7/3/17529442/juul-vapes-nicotine- electronic-cigarettes-addiction-funding)

<comment><USER9> If any of the multiple NPR pieces I've heard mentioned that, my comment would have been more moderate. I have heard nothing about altered Nicotine composition, only that "vaping liquids can have a pack of cigarettes' worth" of Nicotine, and separately, that Juul has flavors, as if that's what draws teens into it.

</comment></comment></comment><comment><USER11> Well they do have a patent for a better delivery of nicotine

[https://patents.google.com/patent/CA2909967A1/en](https://patents.google.com/patent/CA2909967A1/en)

a previous Wired article on the patent

[https://www.wired.com/2015/04/pax-juul- ecig/](https://www.wired.com/2015/04/pax-juul-ecig/)

<comment><USER12> To be fair: The patent (around Nic Salts) is specifically useful for the delivery of nic in low output devices. Imagine it like this: You've got 12 mg/ml in a high output device which can vaporize 90% of the nicotine, versus 50 mg/ml in a low output device (like a Juul) that can only vaporize 30%.

Essentially, the patent is mostly useful in shrinking the size of the device, not necessarily delivering more nicotine. And, truly; if you put Juul- equivalent liquid (50 mg/ml) in a traditional sub-ohm device, even high tolerance users would probably black out or throw up.

That being said, anyone who has done a variety of vape devices would concur that Juuls hit harder than anything else out there. And despite their marketing that they're trying to help smokers quit, they still don't offer any refills lower than 50mg/ml, which is an obscene amount of nicotine even for a low output device. Less talk and more solutions from Juul; let's start with 35mg/ml and 20mg/ml refill packs.

</comment></comment><comment><USER12> I don't think you can blame Juul for your own mistakes and behavior.

But Juuls are seriously bad, and this is coming from an ecig/vape user. I cannot emphasize enough that people need to stay away from Juul. The sheer nicotine they pack in their pods is habitually addictive, they're ridiculously expensive, their quality control leads to constantly leaky pods... any other solution is better as far as I've experienced.

Even the other "gas station ecig" products (Vuse, Blu, etc) aren't nearly as bad. But if you're trying to quit, get a normal sub-ohm device and create a plan. The beauty of vape as a quitting mechanism for cigarettes is that you have complete control over the nicotine content. Buy a bottle of 6/9mg/ml juice + a bottle of 0mg/ml juice of the same flavor, and create a dilution plan. Week 1, full strength, week 2, 90% 9mg 10% 0mg, etc etc.

Once the nic addiction is gone, all that's left is the ritual, which is a bitch to get rid of, but you can do it. Stick on 0mg, ween it off, and replace it with new healthier habits.

<comment><USER13> You could do the same with heroin or methadone. That would work, right?

<comment><USER14> Yes. The problem is that as you taper off the opiates you basically prolong the suffering by going through mild withdrawal with each step down.

The hard part is going to zero opiates, and tapering is infinitely preferable to jumping off a large dose, but it does not make it any less taxing on your will.

</comment></comment></comment><comment><USER15> So I used to smoke and then started juuling, and then eventually quit so I think I have a good perspective here.

The stories about users upping the amount of nicotine they consume is very true. I was a casual smoker (only a few cigs a day), and when I switched to juuling I quickly became a pod a day vaper, and was very addicted to niccotine. They really need to release differing concentrations -- while the 50mg is great for pack a day smokers, they need to release lower amounts for all the other types of smokers wishing to quit out there. The current formula has more nicotine per puff than when smoking a cigarette. I think they should get that on par, as many users with oral fixations just like to take many puffs, but may not want the nic.

However, when it came time to quit, it actually wasn't that bad. The biggest hurdle was the mental addiction to the act of juuling, but I didn't feel any withdrawals, and I didn't get quitting sickness (which I have gotten in the past when quitting directly from smoking)

</comment><comment><USER16> Nicotine has a similar addiction profile as caffeine. It's all the other stuff mixed with cigarettes that makes it much more addictive. People who consume only nicotine (drops, patches, gum) and then try to stop using it have a relatively easy time compared to those who smoke.

Also, dosage and frequency affects addiction. If you are constantly doing it, you are going to be addicted. I occasionally (a few times a month) use vape drops with nicotine on the skin or sublingual as a nootropic. I haven't notice any addiction or cravings whatsoever.

Having had to deal with the disgust of roommates smoking, I was so happy when they switched to using a Juul. It didn't bother me at all after that. I did notice that they smoked even more though.

This case seems bogus. They are using the product illegally since they are underage. Don't see how you can sue someone when what you are doing is illegal. Also, it is abundantly clear that the product is addictive.

</comment><comment><USER17> Do these people have a case? Even if JUUL advertises themselves as a "quit smoking" tool, they did quit "smoking", no? Vaping is not smoking.

JUUL is like any other nicotine alternative (e.g. gum) -- has Nicorette been sued after people switched from cigarettes to their product and retaining their addiction to nicotine?

<comment><USER18> Just went to juul.com - it clearly states in a pop-up it's an alternative not to "quit": JUUL Labs' mission is to eliminate cigarettes. JUUL is intended for adult smokers who want to switch from combustible cigarettes.

Further, it's peppered all around their site: Warning: This product contains nicotine. Nicotine is an addictive chemical.

I don't vape, but I feel like this case is bull.

<comment><USER19> Do you feel like this advertising sends the same message: [http://www.ggeeoorrggiiaa.com/new- page-37/](http://www.ggeeoorrggiiaa.com/new-page-37/) ?

<comment><USER20> Yes, it's just a modern, hip advertisement. I don't follow the rules around ads and smoking but even that ad makes it clear that it's still smoking. The terminology was "Smoking evolved" and "x # of Puffs."

</comment></comment></comment></comment><comment><USER21> Isn't this what some people want? All addictive drugs to be legalized so people can make their own decisions to take or not?

<comment><USER22> This lawsuit has nothing to do with legalization of drugs. It's about a company profiting from users' addictions, and those users are suing the company.

In this case, Juul engineered a product that causes a nicotine spike that increases the chance of addiction.

This isn't unlike any other lawsuit where consumers sue a company for engineering a dangerous product without proper warnings.

<comment><USER21> Of course nicotine is legal and addictive. Did people not know that? All the illegal drugs are already being engineered to make them more addictive. IF they are made legal, will their manufacturers also be sued?

<comment><USER22> I don't have the energy to get into the history of this type of lawsuit, but in US common law (and under some statutes, too), companies may be sued when the user of a product has a reasonable expectation that a product will perform one way, and then it performs another.

The most famous (and universally misunderstood[1]) case is the woman who got 3rd-degree, flesh-falling-off burns from McDonald's coffee and sued them successfully.

It was reasonable for the woman to expect hot coffee, as one would find in one's home. McDonald's served her much hotter coffee without warning her beforehand, which led to her underestimating how dangerous handling that coffee could be.

All McDonald's had to do was tell her it was very hot.

Juul is in a worse position because engineering addiction is much more malicious than engineering extra-hot coffee that saves the company money.

1\. [https://m.youtube.com/watch?v=pCkL9UlmCOE](https://m.youtube.com/watch?v=pCkL9UlmCOE)

</comment></comment></comment></comment><comment><USER23> >The high nicotine content is well-known; the company says Juul was designed to help adult cigarette smokers switch to e-cigarettes.

I mean if you take something that delivers nicotine... that's kinda what happens.

What exactly is the case for the users here? Did they think it had less nicotine but it did not?

</comment><comment><USER24> There's a certain sense of irony that below the article, I'm seeing a "Related Video" that is effectively just an ad for Juul.

</comment><comment><USER25> Did these users not know that Juul was nicotine? Do vapes like that not require the same big warnings on them that cigarettes and other tobacco products require?

<comment><USER22> A lot of big warnings on tobacco products are about health risks caused by substances other than nicotine. The nicotine itself isn't causing cancer and other diseases, which is why nicotine gum lacks the warnings.</comment></comment>


How to implement search-by-color when all you have is a good coffee - <AUTHOR> https://www.mikealche.com/software-development/how-to-implement-search-by-color-when-all-you-have-is-a-good-coffee <comment><USER2> Using the distance of the colors in a Euclidian space makes sense, but RGB isn't the best space to use.

You probably want something like CIELAB which is (quoting from Wikipedia) "designed so that the same amount of numerical change... corresponds to roughly the same amount of visually perceived change."

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

<comment><USER3> Interesting. Perhaps this information is not available with the images? or are they.

The conversion between RGB and CIELAB is almost meaningless (according to wikipedia) or perhaps there is a still a way to do that and helpful?

1\. [https://en.wikipedia.org/wiki/Color_space#Absolute_color_spa...](https://en.wikipedia.org/wiki/Color_space#Absolute_color_space) : However, in general, converting between two non-absolute color spaces (for example, RGB to CMYK) or between absolute and non-absolute color spaces (for example, RGB to L _a_ b*) is almost a meaningless concept.

<comment><USER4> Image formats like JPEG or PNG typically have a color profile embedded in the metadata, or if they don't you can assume sRGB.

</comment></comment></comment><comment><USER5> This seems like a really fun problem and I think you found the solution with the best cost/effort ratio. The first thing that sprung to mind on seeing the problem for me was to use the fact that products often come in several colour variations but use very similar images for each. If you mask out the parts of the image that are similar you can get the single 'actual' colour as it might be labeled by a human. This would also allow you to search for neutral tones like grey and black.

And seeing as you've gone to all the trouble of figuring out how to grab dominant colours from images, why not allow users to upload an image of their logo and grab the dominant colour from that? This could help avoid the problem of having noticably different shades, without making the user do anything technical like searching with an RGB value and a threshold.

</comment><comment><USER6> You'll get better results using a perceptually uniform color space [1]

CIE76 is not ideal but would let you continue to use CUBE.

You could consider doing a first pass with CIE76 and then sort by something more accurate in a second pass.

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

</comment><comment><USER7> > _I just took the euclidean distance between the given color and (0,255,0)_

If you used HSL, you possibly could match on the hue while being more lax on the brightness and saturation—so a pastel-pink color could still match to a red image. Not sure if the database can use different weights for positions in a vector (though with pre-processing S and L could be collapsed to narrower ranges, so they match more freely afterwards). Just need to make sure that white and black aren't matched to random hue values.

Though, I guess if you use only the distance to fixed chosen high-saturation values then it's about the same thing.

Except it seems that with just RGB distance, a semi-saturated cyan or yellow color might be counted as closer to 'pure green' than dark-green. Something like (0,255,180) vs (0,70,0).

Also:

> _values( '(${ color })'_

2020 and still no placeholders.

<comment><USER8> I'm not sure HSL would be better in that case. For unsaturated colors (black to grey to white) HSL has many points that have perceptually the same color but different HSL values. If S is zero, then you have the same color for any value of H so you might get a large distance for two points that are actually white for example. At least when using Cartesian coordinates like he is here.

<comment><USER7> Yes, as I noted:

> _Just need to make sure that white and black aren 't matched to random hue > values._

Colors with too small saturation can just be excluded from the search, since gray/white/black go with anything.

</comment></comment></comment><comment><USER9> I'm only marginally technical, but I would like to congratulate the author for a great example of how to explain the issues, the sequence of problem solving and the solutions so clearly and entertainly. Very good writing.

<comment><AUTHOR> Thank you very much!! I rewrote the article a couple of times

</comment></comment><comment><USER10> This might be a dumb question, but what does coffee have to do with this task?

<comment><USER11> It's trying to say that you don't need a lot of time to do this.

I literally skimmed the article while drinking a coffee.

</comment></comment><comment><USER12> the palette approach is a little reductive. we've built a solution in this space, a more robust approach would be to get the dominant colour, and from that colour brightness and tone extract the accent colour and the contrast colour by considering both distance from the dominant and extent on the image, that solves the problem of having a weighted palette ignoring, say, a red stitching because it's too small

<comment><USER13> >extract the accent colour and the contrast colour

That wouldn't work for products that have poorly chosen color (which aren't rare) but have the right non-dominant color of customer's brand.

<comment><USER12> the opposite really, measuring both tone contrast and luminosity contrast from the background average separately and extracting them is instead more robust for goods that have patterns, i.e. [https://www.seven.eu/it_it/seven/zaini.html](https://www.seven.eu/it_it/seven/zaini.html)

it also works both ways, so white elements having a color accent and a dark contrast element still have them recognized for what they are

</comment></comment></comment><comment><USER14> I wrote a tutorial a while back on how to do this in Postgres using the Google Cloud Vision API in case its useful for anyone..

[https://medium.com/@adamgross_6978/getting-started-with- json...](https://medium.com/@adamgross_6978/getting-started-with-json-and- postgres-782cba93c706)

</comment><comment><USER15> I like the color pallet option you provided showing the primary colors. Adding the colors as facet options would be interesting since you can align each of the colors with the items, then maybe a numeric metric you can use to sort the results by the percent coverage of that color.

Another item to consider is also taking into account how the user might search - "red shoes", then classify the query as "color: red" & "shoes".

The next fun challenge is determining which image to display if you have a variant product (color/size combination for clothing for example). Figuring out which product image to show in the result set requires identifying the primary color in the search.

</comment><comment><USER16> Always happy to learn about more good ways to use PostgreSQL!

</comment><comment><USER17> Mike Bostock (the d3 creator) has a nice little demo illustrating the use of linear RGB to assign an average color to an image. [1]

[1] [https://observablehq.com/@mbostock/image- average](https://observablehq.com/@mbostock/image-average)

</comment><comment><USER18> Vibrant.js [1] also does this.

It is nice to look into the source code to see how it is done.

But in my experience it works around 80% of the time because there are so many exceptions.

[1] [https://jariz.github.io/vibrant.js/](https://jariz.github.io/vibrant.js/)

</comment><comment><USER19> There's a classic injection attack when interpolating in the SQL query

Also as others have mentioned RGB space and human perceptible color space is different enough that distance in RGB doesn't equate to difference/similarity between colors

<comment><AUTHOR> No, it isn't. What is interpolated in the string comes from an object containing predefined set of strings. I don't allow the user to type anything they want. I didn't want to clutter the tutorial

</comment></comment><comment><USER20> Impressive. I wasn't expecting that approach! The whole thing implemented as a stored procedure in PosgresSQL a data type (cube) I didn't even know existed. That was a wild ride for me.

</comment><comment><USER21> Great article. However in my experience, using the Euclidean distance in RGB space can bring about some really weird visual 'matches'. The best color space I've found so far for this type of task is the L _A_ B color space.

And there are also other tricks of the trade. But for starters this simple solution might be enough.

This solution also assumes the colors in the images are 'calibrated' and are consistent. This is almost never the case, but may be overlooked in for the given use case.

</comment><comment><USER22> I don't believe coffee (good or bad) contributed to this article.

<comment><USER23> I wouldn't be surprised if coffee _did_ contribute to this article.

</comment></comment><comment><USER24> Good article, and I like the implementation.

I am sure it has some drawbacks, like distance on the rgb space may not be the best option, or that it does not ignore background color of it is not transparent, still, I like the way of thinking

</comment><comment><USER25> What does the title refer to?

</comment><comment><USER26> I really like this title: "Can we implement something easier than a Convolutional Neural Network?"

Nice to see people still remember problems can be solved with anything else than, ehm, "AI".

</comment><comment><USER27> I thought this was going to be about how coffee is a consistent color so you can white balance your customers uploads by asking them to photograph coffee in their ambient lighting.

<comment><AUTHOR> OP here, this is amazing, i love it!

</comment></comment><comment><USER28> xkcd did a perceptual color survey a few years ago: [https://blog.xkcd.com/2010/05/03/color-survey- results/](https://blog.xkcd.com/2010/05/03/color-survey-results/)

It's population specific to the type of people who read xkcd but it's an interesting starting point if you want higher resolution info on, eg: exactly where people draw the line between "green" and "blue".

Raw data is here: [http://xkcd.com/color/colorsurvey.tar.gz](http://xkcd.com/color/colorsurvey.tar.gz)

</comment><comment><USER13> Nice write-up, thank you.

Nitpick. What's the point of writing a good guide with rich text and images, but showing end result only in video? I have embedded YouTube videos disabled by default, so it's a little embarrassing.

<comment><USER29> Why is this _embarrassing?_ That is incomprehensible to me. You've disabled embedded YouTube videos and should not be surprised when content is missing from webpages. Video is the perfect choice for showing off the results, video distribution is hard, and YouTube embedding makes this fairly easy.</comment></comment>


Nobel Prize genius Crick was high on LSD when he discovered the secret of life - <AUTHOR> http://www.serendipity.li/dmt/crick_lsd.htm

<comment><USER2> Trend Micro says this page is dangerous.</comment>


Eye region tracking in Common Lisp - <AUTHOR> http://13-49.blogspot.com/2009/09/eye-region-tracking-in-common-lisp.html <comment><USER2> I am a CL fan, but the fact that it is in Common Lisp is not important here. It is just a one-person project that could have been written in any language.

<comment><USER3> I dunno. I think it could be turned into a "CL's loop macro rocks like NOTHING ON EARTH" post quite easily.

</comment></comment><comment><USER4> The eye-tracker used in the HCI lab at Rice is actually used in experiments and implemented in CL. <http://chil.rice.edu/facilities/eyelab.html>

</comment><comment><USER5> Pity he couldn't get it to work, but nice to see lisp used for something as 'practical' as interfacing to webcams and analyzing the images.

I'm going to do my best to try to understand this piece of code, it is small enough to go through it and tries to solve a reasonably useful problem.

<comment><USER6> Would you like a 3D modeler in Common Lisp?

<http://en.wikipedia.org/wiki/Mirai_%28software%29>

or, more modestly, just an MP3 player?

<http://vintage-digital.com/hefner/software/shuffletron/>

How about _two_ implementations of Perl6? :-P

<http://perl.net.au/wiki/Elf>

[http://www.nntp.perl.org/group/perl.perl6.announce/2009/08/m...](http://www.nntp.perl.org/group/perl.perl6.announce/2009/08/msg603.html)

<comment><USER5> neat stuff! Thank you...

Programs that solve real world problems are - for me at least - a lot easier to get in to and to learn from how to build things in a certain language and perl is no exception.

I like to read such stuff, much like another person would read a book I guess. It's a great way to learn.</comment></comment></comment>


Deep fake videos worry U.S. intelligence agencies - <AUTHOR> http://www.fox5ny.com/news/deep-fake-videos-intelligence-agencies <comment><USER2> I doubt it. They're probably stoked about it.

Video evidence comes out about some politicians committing crimes?

Just send a memo to the propaganda news networks to say that it was likely a faked video!</comment>


Parallel tasks in Python: concurrent.futures - <AUTHOR> https://vinta.ws/code/parallel-tasks-in-python-concurrent-futures.html <comment><USER2> One common misconception (or should I say, overgeneralization) is repeated in the article: threads are always unsuited to CPU intensive work.

For instance, most numpy operations release the GIL, meaning that you can perform heavy computation on multiple threads simultaneously. Certain other C extensions do the same, including some bits of the standard library. The usual caveats apply about threading bugs, of course.

Another detail is that numpy linked to e.g Intel MKL will multithread some operations by default. Running multiple threads-in-threads is likely to cause slowdown.

<comment><USER3> Only np.dot() has intrinsic multithreading. No other functions do. Bizzarely np.dot() is the fastest way to do things other than dot product (like copy or multiply) in some cases.

<comment><USER4> well, also np.linalg routines that call LAPACK may be multithreaded.

<comment><USER3> That's misleading--you say linalg routines "may be" multithreaded, but the vast majority of them never have been. matmul and einsum, despite being candidates for intrinsic multithreading, are not multithreaded. You can read discussion about that here: [https://jackkamm.github.io/blog/a-parallel- einsum/](https://jackkamm.github.io/blog/a-parallel-einsum/)

<comment><USER4> I'm sorry, isn't "objects belonging to class C may have property P" a fair way to say there are some members which have it and some which do not? I don't see how that's misleading. I was correcting your statement about np.dot being the only parallel fn

<comment><USER3> Can you name one function other than dot() and tensordot() which has intrinsic multithreading?

<comment><USER4> Eig inv svd det, at least, in 2010. [https://dpinte.wordpress.com/2010/01/15/numpy-performance- im...](https://dpinte.wordpress.com/2010/01/15/numpy-performance-improvement- with-the-mkl/)

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> > posted in Jan. 2017

Now we have asyncio and awesome libraries like aiohttp[1] you can get a much, much higher throughput than you'd ever achieve with threads with less code.

1\. [http://aiohttp.readthedocs.io/](http://aiohttp.readthedocs.io/)

<comment><USER6> I found this article extremely persuasive, and it matches my own experiences with asyncio: The performance gain might be there if most of what you do is waiting for a network response, but even a small amount of data processing will make your program CPU bound pretty quickly.

[http://techspot.zzzeek.org/2015/02/15/asynchronous-python- an...](http://techspot.zzzeek.org/2015/02/15/asynchronous-python-and- databases/)

<comment><USER7> Note that it's not either/or - you can dispatch work from an event loop to a thread pool (or a process pool) with loop.run_in_executor [0], while loop.call_soon_threadsafe [1] can be used by worker threads to add callbacks to the event loop.

This means that the "frontend" of a service can be asyncio, allowing it to support features like WebSockets that are non-trivial to support without aiohttp or a similiar asyncio-native HTTP server [2], while the "backend" of the service can be multi-threaded or multi-process for CPU-bound work.

0: [https://docs.python.org/3/library/asyncio- eventloop.html#exe...](https://docs.python.org/3/library/asyncio- eventloop.html#executor)

1: [https://docs.python.org/3/library/asyncio- eventloop.html#asy...](https://docs.python.org/3/library/asyncio- eventloop.html#asyncio.AbstractEventLoop.call_soon_threadsafe)

2: Flask-SocketIO, for example, requires that you use eventlet or gevent, which are the "legacy" ways of doing asynchronous IO: [https://flask- socketio.readthedocs.io/en/latest/](https://flask- socketio.readthedocs.io/en/latest/)

</comment></comment></comment><comment><USER8> Will this finally let me write a parallel Python script that doesn't explode when I press control+C?

<comment><USER9> Depends. What do you want to happen when you press ctrl+C?

<comment><USER8> I want it to not hang forever, not spam the console with pages of exception tracebacks, and not require a ton of boilerplate process-management code to accomplish the above. Ideally it would also allow me to handle other exceptions (i.e. besides KeyboardInterrupt) that occur both in the main process and child processes. I've never figured out how to do this with multiprocessing, despite lots of attempts.

<comment><USER10> Don't know what you did wrong, but you should be able to catch exceptions at their appropriate level and shut down gracefully.

<comment><USER11> multiprocessing was designed to mirror the threading library... so the exceptions are specifically set up not to cross thread/process boundaries. But the same strategies to handle multithreaded exceptions and keyboardinterrupt should apply.

If you want the child processes to shutdown when the main process goes down, you should be able to just set .daemon = True on the process objects before you start them.

If you want exceptions in the children thread to propagate up to the main thread and then handle, looks like you'd just need to send the exception across a queue or something in multiproccessing. In the new futures library, your future (wrapping the process) has a return value property you can try to access. If the child process ran into an exception, that exception would be raised in the main process when you tried to access that return value.

</comment></comment></comment></comment></comment><comment><USER12> I used the Python 2 backport of concurrent.futures for a project recently (parallelizing calls to an external API) and it worked fantastically well. It's a really nice model for doing concurrent outbound I/O in a bunch of threads.

</comment><comment><USER13> I tried using threads on multiple pipe reading, to centralise a logfile sorting problem (each discrete logfile is a gz which itself is only partially in order, and then between files a merge-sort has to be performed) It was enjoyable to try to fix, but ultimately I found the solution only marginally better than explicit processes feeding a single reader doing round-robin. I think the lesson I learned is that if the _problem_ integrates back into a single context there isn't much you can do to avoid that bottleneck once all the other parallelism opportunities have been overcome.

</comment><comment><USER14> What's the advantage of using a ProcessPoolExecutor over just using multiprocessing? Is it that there's a single interface that you can use for both threads and processes?

<comment><USER11> I don't really think there's an advantage. Just like how multiprocessing tries to mirror the threading interface, ProcessPoolExecutor just mirrors the threaded implementation of the new futures based concurrency interface.

I think futures are nicer for certain types of interactions. For example, futures 'return' actual values, so its nice for dispatching a task that you'll get a result from back. Futures also raise exceptions (when you try to inspect their results, if an exception occurred in the task). This might make for cleaner error handling code.

</comment></comment><comment><USER15> I'm using concurrent.futures in production and its use of the multiprocessing module caused the Python grpc library to break in a really strange and hard- to-debug way:

[https://github.com/grpc/grpc/issues/13873](https://github.com/grpc/grpc/issues/13873)

I suspect it's not the only Python library that will see issues if you are running it in the Future context.

</comment><comment><USER10> Cool, just wrote my first code with this module a week ago. A client needed to run background tasks under Flask without the ops complexity or dev time needed to set up a job queue. [https://stackoverflow.com/a/39008301/450917](https://stackoverflow.com/a/39008301/450917)

</comment><comment><USER16> I wrote a similar interface to run asyncio compatible ProcessPool/ThreadPool executors, a couple of days ago:

[https://github.com/feluxe/aioexec](https://github.com/feluxe/aioexec)

</comment><comment><USER17> Sad to see that Python still suffers from the Global Interpreter Lock (GIL), and that the only way out is still to use multiple processes (which causes problems of its own, e.g. sharing of large data structures becomes expensive).

<comment><USER18> Only for computationally expensive operations done in interpreted Python.

C extensions, IO operations etc. always release the lock. In practice GIL is a problem only when it is profiled to be a problem.

Python is used a lot in the data analysis world and nobody cares about the lock, because a fraction of the CPU time is spent within the lock.

<comment><USER17> > Only for computationally expensive operations done in interpreted Python. C > extensions, IO operations etc. always release the lock.

So you are saying it is a problem in Python but not in other languages? Which is exactly my point :)

</comment></comment></comment><comment><USER19> I found a concurrent.futures.ThreadPoolExecutor useful for database seeding, where I invoke a whole lot of sql alchemy core inserts

</comment><comment><USER20> Does anyone have a recommendation for what to use for a cache shared between processes? Would hdf5 work?

<comment><USER21> If you want a file-based cache, yes.

</comment></comment><comment><USER22> so how does this compare to something like Deco? [https://github.com/alex- sherman/deco](https://github.com/alex-sherman/deco). I guess since this uses a single GIL its good for IO limited things?

<comment><USER11> As written, the code in the blogpost is good for IO limited things. But as it notes, if you replace 'ThreadPoolExecutor' with 'ProcessPoolExecutor' then you get actual multiprocessing, and you may be able to get speedup on compute bound tasks.

The linked repo looks like some nice wrappers/decorators around the 'old' multiprocessing library to make it really easy to parallelize a bunch of function calls within a blocking function.

</comment></comment><comment><USER23> The last for loop of the last code example doesn't need to be under the with statement.

</comment><comment><USER24> Would this allow separate GC'ng for each task?

<comment><USER25> Only ProcessPoolExecutor[1]. If you use a thread pool or async io it will be single python process/GIL.

[1] -[https://docs.python.org/3/library/concurrent.futures.html#pr...](https://docs.python.org/3/library/concurrent.futures.html#processpoolexecutor)</comment></comment>


The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software (2005) - <AUTHOR> http://www.gotw.ca/publications/concurrency-ddj.htm

<comment><USER2> Wow, that's a 10 year-old article and still most of the code I see is single- threaded Java and Python. I rarely even see C code anymore.

Methinks that explains the popularity of Hadoop: just break your task into manageable subchunks and throw lots of independent threads at it, reducing the mess at the end. The mapreduce abstraction does all your thinking for you.

But as mscharrer said, both GPUs (and CPUs) are continually improving in terms of core counts and SIMD widths while processor clocks are mostly static. That said, a ~$1000 GPU can give you up to 6.7 TFLOPS while a ~$7000 CPU can give you up to 1.4 TFLOPs if you program them correctly. The difference is that it's a lot easier IMO to use OpenCL/CUDA to tap that 6.7 TFLOPs than it is to hand-code AVX inner loops to get anywhere close to peak performance out of the CPU.

</comment><comment><USER3> GPU's still seem to be improving rather quickly.</comment>


Ask HN: Why is there a black bar across the top of the site? - <AUTHOR> (nt) <comment><USER2> I haven't seen the post, but I'm guessing it's because this guy died: [https://arstechnica.com/business/2017/06/charles-thacker- key...](https://arstechnica.com/business/2017/06/charles-thacker-key-designer- of-the-xerox-alto-dies-at-74/)

HN does this whenever someone notable dies.

Edit - Here's the thread: [https://news.ycombinator.com/item?id=14548030](https://news.ycombinator.com/item?id=14548030)</comment>


Show HN: Spreadsheet-style reactive web interfaces with Flare - <AUTHOR> http://david-peter.de/articles/flare/ <comment><USER2> This seems a lot like Elm. Even the examples.

> The Flare library is built on top of Purescripts Signal library which is > inspired by the corresponding module in Elm.

What are the differences? Why use this instead of Elm or vice-versa?</comment>


Surrounding Yourself With Other Startups Won't Accelerate Your Company's Growth - <AUTHOR> http://technori.com/2013/05/4445-surrounding-yourself-with-other-startups-will-not-accelerate-your-companys-growth/

<comment><USER2> If the premise is that surrounding yourself with other startups is not sufficient in itself to accelerate your company's growth, then it's trivially true and of little value.

If the premise is that there is no value to be added from startups seeking high growth from surrounding yourself with other startups, then I have to disagree.

Sure, you won't get high growth if you spend all your time hanging with brogrammers and drinking at industry social events. But learning from smart people is something that happens almost by osmosis if you mix with a good selection of other startups.

Being around when one startup falters and the founders and team are looking to join something interesting means your network for recruiting grows, and some of the best team mates I've had have been when one startup died and folks joined up for another. That's accelerating growth.

Seeing what mistakes others are making prevents you from making and short cuts the path to making the right choices. That's accelerating growth.

If you've got a crappy product and an idea that isn't going to work, and you spend yourself hanging out with others similar to you in that, well, you're not going to do anyone any good. Particularly not when, as I've seen, it becomes a complaint fest about the industry not an analysis of what you could be doing better. Like anyone who's ever worked at a big company will tell you, if you hang outside the building with the smokers bitching about the company, don't be surprised if you aren't the ones doing well at that company.

So YMMV, but absolutely mix with other startups. Pick well who your friends, mentors and models are. It's unlikely that it's going to hinder your growth, unless your attitude was such that you probably weren't going to get that growth in the first place.

</comment><comment><USER3> Wholly disagree, proximity of like-minded individuals is the essence of the bay area and why it's so unique.

"Our startup, Kip Solutions, is a social media consulting firm for social causes."

With all due respect, if you were pitching your social media consulting services to startups, it's very likely you were put on the same list as recruiters.

<comment><USER4> Sure, spending time around other like-minded individuals is a Good Thing, and the author of TFA acknowledges that. I think his point was that you shouldn't spend _all_ of you time networking with other startup people. And that's a sentiment that I wholeheartedly agree with.

Unless you are selling to startups as your market, you have to get out of the startup echo chamber at some point, and get out in the trenches where your customers live, and talk to them. If you're selling to manufacturers, instead of going to the nth "startup happy hour" even of the week, how about go the "National Manufacturers Association" trade show or whatever?

On a related note, we should look at our social media activity and ask who our audience is... the HN crowd, and other startups, or customers? Personally, this is something I've just forced myself to start looking at differently in the past 2 weeks or so. I've cut back on tweeting tweets about startups and VC and Silicon Valley gossip, and started tweeting stuff that's, ya know, of interest to the people I want to _sell_ to. It's a seemingly subtle change, but in just two weeks we already have dozens of new followers who represent our potential customer base. That's "permission marketing" at work, and it's something I wish I'd realized a lot sooner.

Anyway, I think the OP is onto something. No, don't take _anything_ as an absolute... and go to the "startup happy hour" from time to time, sure. But don't forget to take time to go talk to customers (or potential partners, suppliers, resellers, etc. Whoever you _need_ to connect with in order to advance your business).</comment></comment>


Help Us DeGoogle FOSS - <AUTHOR> https://old.reddit.com/r/privacy/comments/gwsv5j/help_us_degoogle_foss_free_and_open_source/ <comment><USER2> Really promising project. I wish more people understood the danger of Google monopoly.

Obviously, even developers sometimes don't understand it: [https://github.com/systemd/systemd/issues/12499](https://github.com/systemd/systemd/issues/12499) (from the comments)

</comment><comment><USER3> I have been de-googling (youtube) video streaming with my app server lately: [http://github.com/tinspin/rupy](http://github.com/tinspin/rupy)

The last google dependency I now have (SMTP) will be added to rupy once I finish my MMO!

<comment><USER2> But what about PeerTube?

<comment><USER3> PeerTube can't scale like my App Server. I can host 100.000 concurrent clients on a AWS 4x core server with only 5 threads! Non-blocking IO and complex memory-model VM for joint parallel concurrency is only possible to scale like that with Java! Not even C can handle that kind of pressure on the first practical bottle-neck of the end of Moore's Law: Memory Speed!</comment></comment></comment>


DRM Needs To Be Banned Because It's Toxic - <AUTHOR> http://torrentfreak.com/drm-needs-to-be-banned-because-its-toxic-111016/ <comment><USER2> _DRM is toxic. Just like lead._

Eating a CD might be bad for your health, but that's where this analogy stops.

I rarely buy DRM-protected content, and will always prefer open formats. (See also: My digital PragProg mountain that I've purchased because they're excellent books and not larded down with DRM.)

However, in a free society the government has no business forcing citizens to create a string of bits in a particular way. Vote with your dollars, not with the hammer of a tyrannical law.

<comment><USER3> Libertarian mumbo-jumbo. When you have any significant evidence that 1° people buy rationally 2° people are free from influences 3° markets do exist in the absence of an overarching organisation such as a state; please do come back with these. You should read less Ayn Rand and more actual science.

<comment><USER2> I didn't say that we should have anarchy. I said that if I'm going to produce a string of 1's and 0's, I get to arrange them in the manner of my choosing. You need to clearly explain where you get the right to force me via law to produce that string in the manner of your choosing.

<comment><USER3> If a pressure group limits the choice of customers by unilaterally enforcing limitations, which is generally the situation we've known in software and digital media in the past, we'll simply stick to the (very) suboptimal current situation: DRMs on one hand, generalised piracy on the other. Do you think the current situation is optimal? Did we made much progress since the first copy- protected software in the early 80s? What you propose is going on the same way we did for the past 30 years. As the saying go, insanity is doing the same thing over and over again and expecting different results.</comment></comment></comment></comment>