A quarter of online ad traffic is fraudulent - <AUTHOR> http://www.adweek.com/news/technology/amount-questionable-online-traffic-will-blow-your-mind-153083 <comment><USER2> While this is probably true -- or even worse -- I think this is already baked into the rates advertisers are paying. Sophisticated advertisers have conversion rates they track carefully and what they bid/spend on ads is worked-to backwards from that number. In other words, if a conversion is worth $5 to me, and I see I get a 3% conversion rate, I'm not going to spend more than $0.15 per click.

Obviously this isn't a universal truth, and branding campaigns are more difficult to price, but this story is posted cyclically and it I often read people's take that this is a stat indicating things are unsustainable and headed for a correction, but I think we're past that. Online advertisers have grown more sophisticated over the last decade and CPMs & CPCs have dropped significantly along with that.

Curious what anybody else thinks..

<comment><USER3> On the one hand you're true, on the other hand if somebody steals £10 from my wallet every day I can budget my life to not care about it, but I'm still having money stolen from me.

Just because it works now, if you could get rid of the fraud then either advertisers could get better value, or legitimate sellers could make more money, or both.

Also, you'd be amazed how many advertisers don't track conversions. I've experience in both digital sales and buying, and on the sales side a huge number of clients wouldn't look at anything more than the impressions/clicks figures that we (truthfully) told them we delivered.

</comment></comment><comment><USER4> My last business was ad-supported (premium, big-brand advertisers). One day, out of the blue, one of the companies which sold ads on our behalf sent us a nasty letter accusing us of buying junk traffic / creating false impressions and clicks - something we most definitely did not do.

Digging through the raw ad server log files, I discovered that the "suspicious" impressions and clicks were all originating from AWS IP addresses - most likely someone was using AWS to run a spider on our site, the spider followed Javascript links, and therefore clicked every ad on every page.

We ended up adding a rule in our ad server to prevent ads from being served to any IP address which belonged to cloud hosting / VPS providers - this solved the problem for us.

I've since sold the business and therefore don't know if the problem ever arose again, but I believe blacklisting IP address blocks which are highly unlikely to belong to real human beings* could be a good start for anyone running into these sorts of issues, either on the advertiser or publisher end.

*Yes, I know some people run VPNs on AWS or similar VPS instances, which means they are real humans - that was a loss we were willing to deal with.

<comment><USER5> That solves the bad bot problem, it doesn't solve the actual ad fraud problem. There are at least millions, if not tens or hundreds of millions, of ad clicks per day coming from botnets of ordinary Windows computers on residential ISPs with full JS-executing browsers. You can't detect this activity based on IP address, user agent, script execution, etc. I've seen individual advertisers targeted and get hit by hundreds of ad clicks per day, when they usually only get a dozen or two, every click from a different Comcast/FiOS/TW/RR residential IP, with unique user agents, and varying search phrases that match the ads.

It's much, much harder to detect and block that; if we could only see activity on our own individual websites it'd be nearly impossible to tell the normal clicks from the fraudulent activity.

<comment><USER4> Agreed - targeting bot nets is a whole other ball game - one that likely can only be combated at the ad server / exchange / DSP level, as they are the only entities with large enough data sets to tease out which machines are infected.

From the single advertisers perspective, the easiest solution I can recommend is working with networks which provide eCPA-type bidding* - as then sites which actively buy traffic from bot nets will over time be blacklisted automatically from your campaign. Back when I was on the buy-side of online advertising, we used that "trick" to great success with a major credit card issuer buying billions of impressions.

*What I mean by eCPA type bidding is when you tag your conversion page with the network's pixel, and the network uses your conversion data to optimize the campaign on their end to get rid of publishers which send click that never convert. I know there is a better term for this, but it's a Sunday night and I haven't worked in media buying for a few years now...

</comment></comment></comment><comment><USER6> Only a quarter? Must have been a high-quality source.

The thing is a lot of publishers are fully aware of the fact that the traffic is mostly fraudulent. The ones who rely on bogus metrics such as Quantcast, Hitwise, Comscore, Alexa, etc. They buy up a ton of second tier search traffic for extremely low PPCs, we're talking sub-penny, and use that to inflate their "visitors" metric which is then used to sell how popular their site is to large brand advertisers.

<comment><USER7> I somehow doubt that any PPC search traffic, even 2nd tier, is cheap enough to arbitrage off in this manner. PPC costs have climbed over the years and any PPC -> CPM arbitrage seems unlikely to me these days. I'm thinking they have other sources. Do you know for a fact it's PPC search they're sourcing visitor count from?

<comment><USER6> I can't speak for today but in 2008-2010 this was definitely the case. It's not exactly a direct arbitrage play as a lot of the end advertisers tend to be doing full media buys. Top banner ad, background page ads and they are just paying for 100% coverage for a day or week or month. One large gaming news/reviews site was buying about $10k/day worth of mostly fraudulent traffic. The traffic wasn't bots, per se, it was "real" users but they had compromised machines with popups and toolbars. So there was a high visit count of real users but there was no conversion metrics or time-on-site to be measured. They continued buying the traffic for at least a month so I can only assume it was meeting their goals. We had a lot of publishers all doing the same thing.

As this was second tier, I wouldn't really call it "search" traffic. Just a ton of users with keyword-like queries being routed to various xml feeds/exchanges. When we'd send the traffic to actual publishers with conversion goals the rates were abysmal and we'd end up issuing lots of refunds. The only publishers that seemed to like the traffic were ones that sold their own dedicated ad units to large brand advertisers.

I'm just glad to be out of that industry :)

<comment><USER8> Yeah this kind of scenario is absolutely realistic. I've seen, firsthand, stuff that makes the above look downright honorable, and done by major, major players.

When there's money and success at stake, it's difficult to be too cynical about what tactics are probably being employed.

</comment></comment></comment></comment><comment><USER9> This is a big problem even for Bing/Yahoo. They've recently partnered with Media.net for their content (display network ads) and many of the publishers in that network deliver fraudulent clicks (Keywordblocks and the like).

The other problem I've noticed is that if you don't bid high enough for search keywords, they start sending you traffic from Media.net and make it look like it is search traffic. For example I bid on the search term "get money now" (don't want to reveal the actual query). For real search traffic, the clicks convert very well for me. A few months ago I noticed that my conversion rates had fallen significantly. When I investigated I noticed that most of it was from media.net/5_ways_to_get_money.cfm and none of these clicks ever produced a sale. I am in the process of pursuing a refund and have blocked the site. Real search traffic always comes from search.yahoo.com or Bing.com.

It is an even bigger problem for AOL (Advertising.com) that includes supposedly premium sites like HuffingtonPost.com. You will frequently notice:

1\. Inflated clicks. Your analytics show you got 100 clicks, their's show you got 170. When you raise this with their support staff the standard answer is they will not investigate based on someone else's analytics. I said, I have two different analytics programs on my server that show the same count which is a lot lower than theirs. They still won't budge. I am in the process of pursuing a charge back.

2\. Clicks with 100% bounce rate and that spent exactly zero seconds on your site. There is just no way these are real humans.

<comment><USER5> > 2\. Clicks with 100% bounce rate and that spent exactly zero seconds on your > site. There is just no way these are real humans.

If you're using common analytics programs, you're probably misled about what the time-on-site statistic means. Unless they actively ping every visitor on your site the entire time your page is open, which is not the norm, they have no way to know the time-on-site for single page visits. It's computed as the elapsed time between two page views (two loads of the analytics script), but if there is no second page view, there's no second time to subtract from. Someone who clicks through to your page and reads intently for 13 seconds before closing the page is a "0 second visit" as far as those programs are concerned.

<comment><USER10> I think curiouslurker meant those as two separate categories: Clicks with 100% bounce rate, and those that spend 0 seconds on your site.

<comment><USER11> There's actually a legit problem here though where ad networks are counting "clicks" while analytics programs are counting "visits".

Comparing the two always leads to different numbers because they are different things.

Google has this issue even between Adwords stats and Google Analytics stats. They are always billing people for more clicks than are reflected as visits in Google Analytics. Same reason, different things counted differently.

</comment></comment></comment></comment><comment><USER12> Can't a lot of this be solved by purchasing pay-per-day ads?

Paying per click or per thousand views just gives someone the incentive to increase clicks and views fraudulently. When you pay $10 to have your ad on the front page for the whole day the incentive to cheat disappears.

This is why I've been using Blogads.com and smaller networks instead of Google Adwords. The traffic is high quality, I don't have problems with high bounce rates and visitors that spend 0 seconds on my sites. I actually get legitimate traffic. Sometimes I over-pay for the ad space, sometimes I under pay.

Also, I knew a guy (who makes a social network and forums community platform for big companies) whose competitors would purposely pay an Indian company to search for his website in Google and click the sponsored ads using constantly changing IPs so they can cost him money and use up his budget. Something like 70% of his clicks were fraudulent.

Again, this wouldn't matter with pay-per-day/week/month advertising. Too bad it's not compatible with Google's current Pay-per-click auction / maximize profit system.

</comment><comment><USER13> We spend an inordinate amount of time trying to combat click fraud. Clearly someone pulling in 2,500 - 5,000 a month via click fraud is a 'small potatoes' to the big ad networks but I'm sure a lot of people have made lifestyle businesses with it. Common fraud patterns are clicks from AWS or foreign hosting facilities. Or waves of clicks on a single ad from a swath of subscribers.

</comment><comment><USER14> A closely related problem was the basis of a dissertation I wrote for my honours year. At the time I felt I had discovered a reliable way to track legitimate visits to websites by participating users.

Upon subsequent review it transpired that I was wrong. Given the primitives of HTML, Javascript and HTTP, I don't believe you can produce a robust tracking scheme, whether for advertising or for any other purpose. You need to add additional steps or software over and above the basics.

That latter observation is the basis of a new design which I am currently, in order to start brawls in certain circles, in the process of patenting.

I'm happy to forward my dissertation to interested persons via email, check my profile.

</comment><comment><USER15> As someone who worked several years for one of the front running ad fraud agencies, I can tell you what most of our customers said. "We don't care about fraud, it is priced in."

<comment><USER16> Right, it's basically "the cost of doing business" overhead that encompasses unsavory costs like bribes, extortion, dishonest employees, etc. As long as the parasites in the process don't get too greedy, it's still possible to run a business. It's just not as profitable as it would be and/or the customers pay more as a result. Unfortunately the sleaziest advertisers tend to thrive better in this environment.

</comment></comment><comment><USER17> As someone who's spent several years researching and working within the online advertising industry, I can attest to this being quite common on a lot of the larger Alexa-ranked sites and traffic sources.

There are many highly ranked sources that will simply burn through your ad spends as quickly as you can deposit funds to the account. People often times spend thousands throwing away money on "testing" these sources, only to usually find they don't pan out.

That's why one of the most important things in online advertising is constant optimization and watching the conversion rates from different sources and adjusting bids as necessary. Drop the sources that don't pan out.

It's similar to stock trading, mitigate your losses quickly and don't bleed your ROI or throw away excess money on "testing" what works. Prune the sources that aren't doing anything for you, and watch your ad spends become much more productive.

The only thing the traffic described in this article is good for is vanity metrics and pumping up numbers like it sounds several of these large brand sites are doing.

If you're looking to inflate your numbers, sure... waste a bunch of money on a ton of bot hits, it's still 1999 right? Just don't expect any sales or conversions from that type of traffic... ever. It just simply won't happen.

</comment><comment><USER18> I don't think i've evern seen an article so badly written. It has the right research, but it is pointless. The whole thing is sumarized in the last two paragraphs. With zero information lost:

"""

Says Woodman: "When we try to tighten things up, our measured performance goes down. There is an incentive among buyers to let the floodgates open. And publishers need more money, so they ignore." So the bad traffic persists. "We need to fix this as an industry," he adds. "Somebody needs to give a shit."

The IAB seems to. Per Sullivan, the organization is working on devising a standard for publishers akin to the Good Housekeeping Seal. He'd like to see the biggest stakeholders get more aggressive about the problem, including brands and agencies. "If buyers came out and said, 'I will only buy from certified vendors,' that would change things," he says.

"""

so basically, the industry measures clicks. and bots delivers clicks. fraudulents, but clicks. and everyone is trying to fix it with black/white- lists so they get a promotion for getting the clicks, but not looking bad with their boss when some known scam site shows up in the report.

The whole industry is based on allowing only the 'clean' bots of the week inflate your numbers.

</comment><comment><USER19> Google is complicit because of the pay-per-click model. They make money whether or not it the clicks are hired by middlemen or not.

</comment><comment><USER20> does google really care?

</comment><comment><USER21> Where do I get my 25% refund from AdWords? This is a significant sum to me.

<comment><USER22> Isn't AdWords an auction of sorts? If so then this 25% is already baked in.

<comment><USER23> I don't understand that conclusion. Don't people place bids based on the perceived value of the keyword? If so, wouldn't everyone need to discount that value by 25% because they are aware of the fraud in order for it to be "baked in"?

<comment><USER5> People will bid as much as they can afford while achieving a positive ROI. If you can't, someone who's earning more dollars per click will, and they'll get the slot instead. If 100 clicks generates $100 in gross profit for the company with the best customer LTV, nobody's going to bid more than $1 per click. That $1 per click already factors in the discount due to fraud. If all the clicks were real, qualified visits, they'd have earned more than $100 per 100 clicks, and would be able bid more than $1 per click. As long as there are enough people participating in the auction, it will naturally account for the quality of the traffic, whatever the reasons behind that quality may be.

<comment><USER23> Thanks. I can see the logic.

OTOH, doesn't this require perfect efficiency and for all bidders to know perfectly their ROI, etc.? Any holes, unintentionally irrational behavior, etc. and the fraud "leaks" into the price, right?

So, for instance, any "unprofitable" advertising on behalf of any participants would seem to automatically cause the fraud to be reflected in the price.

Based on personal experience, I would guess that there's a pretty long tail of advertisers who never realize an ROI while spending a considerable sum seeking it!

Even those that eventually profit likely spend a good bit of money ramping up, all the while paying for fraud in the process and helping to support a fraud- inflated CPC overall.</comment></comment></comment></comment></comment>


Ballmer says Microsoft Surface sales off to 'modest' start - <AUTHOR> http://news.cnet.com/8301-10805_3-57548201-75/ballmer-says-microsoft-surface-sales-off-to-modest-start/

<comment><USER2> I wonder if we'll ever get any numbers of sales for the Surface or if we'll just get multiples like the Kindle.</comment>


Will Britain Default? - <AUTHOR> http://blogs.telegraph.co.uk/ambrose_evans-pritchard/blog/2009/01/20/seriously_alarmed

<comment><USER2> Quote: "The Baby Boomers have had their moment in power. The most spoilt generation in history has handled affairs with its characteristic hedonism. The results are coming in."

Could not agree more, the younger generation is not spoilt or entitled: the baby-boomers are. Leaving the environmental and financial mess for us to clean up.</comment>


Backing Up My Kindle Ebooks - <AUTHOR> https://www.sonyaellenmann.com/2018/09/back-up-kindle-files-mac.html <comment><USER2> Cool but dont we have receipt for the purchased book ? We can just download again if it gets deleted

<comment><AUTHOR> Did you actually read the blog post?</comment></comment>


Show HN: Nanosecond C message logger - <AUTHOR> Hello,
Some time ago I did a data logger for fun, just to check if I could beat the performance of an old C++ project of mine (mini-async-log) and to avoid letting my multithreading-C skills rust when on a non-programming gig (using Yocto/OE, very little programming).
This project is a BSD licensed, producer-wait-free (when using thread-local storage) generic message logger with high performance, decent test coverage, and type-safe C strings (requires C11 or C++ compiler).
It was a shame to let this project to die unknown, as I think that it has potential to be used on some niches as network programs, HFT, games, etc. so here I am sharing it.
https://github.com/RafaGago/mini-async-log
This was an evolution of a similar logger I did, this time I wanted to achieve wait-free producers, so this implementation can use thread-local storage to achieve that. Some other non allocation-free strategies are also available.
I still aimed for as easy as possible usage/learning curve and maintenance vs lots of features.
It has some interesting things too:
-It has one modification on Djukov's MPMC queue to make it MPSC and accepting variable (but limited) bucket size allocations (at the expense of unfairness towards bigger buckets). There are more modifications/variations on this Djukov queue on the library where I'm collecting all the generic stuff that I use when developing C programs.
-The project still maintains automatic type detection of the string formatters by using "clever" hardcore C preprocessor abuse mixed with C11 type-generic expressions. It still accepts most non-type printf modifiers. This is at the same time beautiful and ugly (you know what I mean), for the uglyness part, automated testing is available.
NOTE: Untested on Windows. <comment><USER2> You seemed to have linked to the C++ version only.

The C repo: [https://github.com/RafaGago/mini-async- log-c](https://github.com/RafaGago/mini-async-log-c)

<comment><AUTHOR> Thank you. It's a shame that I can't edit the original post.

</comment></comment><comment><USER3> looking at your benchmarks, I see that you think glog is synchronous. This would be because you are logging at ERROR severity which does indeed flush. Logging at INFO would not have that issue.

<comment><AUTHOR> Oh, I wasn't aware of that.

</comment></comment><comment><USER4> Good effort;

It's not just enough to have fast logging, it is also required to not abuse logging by having long, too many or useless messages.

Most people need a guide for 'The art of the log'. They should also know 'The art of the counters.'

<comment><USER5> Here's a good post about it: [https://dave.cheney.net/2015/11/05/lets-talk- about-logging](https://dave.cheney.net/2015/11/05/lets-talk-about-logging)

</comment></comment><comment><USER6> Can you expand a bit? What do you mean by nanosecond? (1,10,100?)

<comment><USER7> My first thought was "Thirty centimeters seems a bit large for a message logger.".</comment></comment>


Hey, Guys, It's Totally Okay If You Don't Get Rich - <AUTHOR> http://www.seattle20.com/blog/Hey-Guys-It-s-Totally-Okay-If-You-Don-t-Get-Rich.aspx <comment><USER3> In my experience, startup founders who want to get rich want it more in order to have the freedom to work on what they want than to impress people.

That could be because we prefer startups whose founders include hackers. On the other hand, we don't just prefer that type because they're more fun to hang around with, but because in our opinion they're more likely to succeed.

<comment><USER4> It's the Mexican fisherman story. Sacrifice your freedom and happiness so that you can get rich so that you can have freedom and happiness.

Why not just take the direct route?

<comment><USER5> "It's the Mexican fisherman story. Sacrifice your freedom and happiness so that you can get rich so that you can have freedom and happiness."

and how do you suppose we do that?

Freedom to me means:

1) not having to work for anyone 2) having enough time to do what I want 3) traveling around the world

You need money to do all of these. To get money, you need to create something that people are willing to pay for, which takes some sacrifices.

You are sacrificing some time and freedom now for complete freedom later.

<comment><USER6> Sounds like you've never tried this freedom that you speak of. I've been doing the 3 things on your list for the better part of 10 years now, and I've never been wealthy.

3\. Living on the road is no more expensive than living anywhere else. Less usually, since there's no rent or car payment involved. I can live large in Thailand for $500/month.

2\. Living on the beach, I once calculated that I needed to bill _one day per month_ to break even. Anything above that went into savings. That leaves 29 days a month to do whatever you like.

1\. During those 29 days per month, I work for either a.) myself or b.) nobody. Maybe once a year I'll take a short contract, pull in 20k or whatever, and repeat for another year.

And that's just the level of effort needed for subsistence. Any money earned above that goes straight in to the "retirement" fund, in quotes because frankly I consider myself retired today.

<comment><USER7> Aren't you extremely wealthy compared to the average Thai?

It sounds interesting for someone in your kind of situation, but there's a lot of assumptions that are not universals: being fairly rich (or having skills worth a lot) off the start, being limited to cheap countries (the parent poster talked about going around the world, which sounds a lot more expensive than and quite different from staying on a beach in Thailand), having skills that can be applied via teleworking and short contracts, etc.

</comment></comment></comment></comment></comment><comment><USER8> Of course it's not ok. At some level getting rich is a life-or-death issue. How do I get enough money to retire? How can I possibly afford health-care? What if I or my lovely wife get cancer?

The reality is, the later years of your life are going to be significantly more secure and happier if you make a lot of money.

<comment><USER9> Don't be silly. She wrote that her friend, "could easily bring in a low six- figure income"

If you save wisely, you can retire just fine after a career at a tech company making 2-3x the US median salary. And most companies have good health coverage for the cancer.

She is talking about the pressure to make $10M or more through a startup, not getting the money to retire comfortably.

<comment><USER10> > And most companies have good health coverage for the cancer.

Well... kinda. One of the dirty little secrets of employer-provided group health care is that when you have one person whose health care costs vastly exceed the average, there's enormous pressure to get that person out of the "group". I've know companies where someone got cancer and the premiums for the whole company doubled the next year.

<comment><USER11> This is a good economic explanation for why national health care systems should outperform employer based (or any other) systems. You can't get a larger pool of people to spread risk around, under a single legal framework, than an entire nation state.

<comment><USER10> It's not really about the overall performance or cost of coverage. The advantage, in this case, of national health care is that you can't be kicked out of the "group" (i.e. fired because you're raising the insurance premiums for the whole company), and there's no concept of "uninsurable".

</comment></comment></comment></comment></comment><comment><USER12> Without trying to sound like an absolute ass, this article shows EXACTLY why most of the founders of the biggest empires and hottest startups are in fact men. I say MOST as I'm sure there are many women as well, but clearly they are overshadowed by men in this case.

<comment><USER13> > _Without trying to sound like an absolute ass..._

Some things just come naturally to you I suppose.

<comment><USER14> "Some things just come naturally to you I suppose."

You just called him an ass. That's rude.

He(?) stated that "most of the founders of the biggest empires and hottest startups are in fact men" which is a fact. He's also speculating that the pressures put on men to get rich is the main cause of this. I see nothing offensive about what he said.

<comment><USER13> Actually, I implied that he _sounded like an ass_.

And it's disingenuous of you to pretend that the purpose of his comment was to purely, disinterestedly disseminate facts.

Instead of hearing the wisdom of the article writer, he demonstrates precisely the mentality with which she was finding fault, essentially generalizing her philosophy to all women, and painting it in the light of failure rather than moderation and internal peace.

Frankly, I find his comment chauvinistic and somewhat offensive, and I'm not even a woman.

</comment></comment></comment></comment><comment><USER15> Imagine you're in a big slot machine tournament with 150 competitors. Each player gets to pull one of two machines. One machine pays $1 every time. The other machine pays an average of $0 but has a variance of $50. Everyone gets 1 pull, the scores are tallied, and the bottom half of the players are out, and a new group is brought in to replace them.

Which machine would you pull? The evidence[1] is pretty clear that if the variance is high, the population will converge to people who go for the second one.

Not to sound sexist here, but women are not faced with having to pull the slot machine. From an evolutionary standpoint, they don't have (get?) to play in the tournament. Their goal is to minimize their own losses, since they only have a very small number of offspring they can create.

Men are forced into the arena, which creates the mentality that has the author baffled. We have to keep trying to hit it big, otherwise our lineage dies off as some other lucky guy comes along and forces us out.

That's what being an entrepreneur is all about. It's the diligent pulling of the slot machine with the lower mean.[2]

[1] Fogel, et. al., "Do Evolutionary Processes Minimize Expected Losses?" [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.8.8...](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.8.8219&rep=rep1&type=pdf) [PDF]

[2] Everything after footnote 1 is pure opinion and based on only my own intuition. :)

<comment><USER11> Except, today, high levels of wealth is inversely correlated with the number of offspring.

<comment><USER16> Not really. It looks like there is weak or no correlation between wealth and number of offspring.

<comment><USER17> No. In most countries, an increase in productivity / GDP / quality of life is strongly correlated with a lowering in fertility rate:

[http://geocurrentevents.blogspot.com/2010/07/misconceptions-...](http://geocurrentevents.blogspot.com/2010/07/misconceptions- about-mexicos-birth-rate.html)

</comment></comment></comment></comment><comment><USER18> An interesting article that talks about an entire nation's views on marriage, status, and success is: [http://www.chinadaily.com.cn/life/2010-06/25/content_1001855...](http://www.chinadaily.com.cn/life/2010-06/25/content_10018557.htm)

It is so ingrained that one of the women described her marital vision: "I'd rather be miserable sitting in a BMW than be happy riding a bicycle."

It's no surprise that an extension of this is that the most desirable man, and bachelor, in China is the founder of Baidu, the largest search engine in China, due to his wealth.

<comment><USER19> A similar story: [http://www.latimes.com/business/realestate/la-fi-china- bache...](http://www.latimes.com/business/realestate/la-fi-china- bachelor-20100621,0,755582,print.story)

</comment></comment><comment><USER20> For both wealth and (perceived) beauty, there is often a relatively easy solution: move!

For more beauty, move to a location with a greater ratio of the opposite sex.

For more wealth, move to a location with a lower cost of living.

I don't know how much longer these arbitrage opportunities will exist, but for now they probably represent the biggest 'lifehacks' one can make.

<comment><USER21> If you're thinking of trying the sex ratios thing, I strongly suggest controlling for age, and preferably social class.

<comment><USER22> Do you have any data to do this? I think the results would be interesting.

<comment><USER21> Sadly, I was considering including just such an appeal with my original comment. If you find some, let me know?

</comment></comment></comment></comment><comment><USER23> Well, there's also the issue that the economy refuses to provide honest reliable jobs for honest reliable people...

If your dad or mom is a professor, maybe you can get a tenure track job, but if you're anybody else you've got take what's in the marketplace... And "playing it safe" means the odds are 100% that you'll get screwed...

The only career path that seems possible of providing any security of all is an "all in" bet on something that might make it big.

<comment><USER24> Not directly related, but as the child of a family that amounts to a dynastic succession of academics, I feel the need to disabuse anyone reading of the impression that there is any connection whatsoever, at all, between having professors for parents and getting a tenure-track position.

As it stands, it's nearly impossible for spouses to exert enough leverage to find academic employment at the same institution. If they're lucky, they'll spend a good deal of their career building up the karma to pull that one off; there isn't anything left over for little Billy.

<comment><USER23> Well, I'll just say that, when I was in grad school at an Ivy League school that 100% of the professors, for whom I knew anything about their parents, were also professors -- and that was a sample between 20 and 30 people.

Things might be different at other schools, but I do know that even the Chronicle of Higher Education is starting to recognize the 'dynastic succession' phenomenon after years of it going on under wraps.

<comment><USER25> That could have multiple causes. Often, if your parents have achieved a lot academically, you will palce more weight on that aspect of your life. You'll get better grades and you'll be more likely to become an academic yourself.

Since we're swapping anecdotes, as an academic, I have _never_ known anyone to get a position just because their parent works in the field. _Ever_. The competition is ridiculous, to the point where many Americans opt to go elsewhere and leave the academic jobs to the people willing to work 14 hours a day, 6 days a week.

I would not be surprised if many modern academics would prefer that their offspring go into industry. The rewards are greater and the competition is less, given the level or reward on offer.

<comment><USER26> Don't forget the genetic aspect -- smart parents tend to have smart kids.

</comment></comment></comment></comment></comment><comment><USER27> Great article and really hits home. One thing that's overlooked, however, is the reasoning behind the need to earn money.

For some people, money doesn't matter. Yet they still have a burning need to get rich. This is because they have something to prove. And money is their scorecard.

<comment><USER28> Exactly. Reading a comment right next to yours, "Are lower expectations supposed to be a good thing?". It's become ingrained in Western and especially American culture that money is one of if not the most important measure for judging success. We don't all see each others paychecks and bank account balances, so this manifests in various ways from wanting prestige jobs to conspicuous consumption

People need to ask themselves - what do I want out of life? What are my personal measures for success, that I can explain and justify to myself based on my beliefs. Instead almost everyone simply avoids thinking on that level and instead absorbs and adopts the measurements promoted by society

It's not that making money is bad. It's that far too many people blindly focus on making and spending money without considering the amount of time and sanity and other opportunities for living that's being consumed by their consumerism

<comment><USER29> Thank you. This comment is a breath of fresh air amongst the cries of, "but, it's just evolution that makes us want to hoard money!" That sort of attitude strikes me as fatalistic. Success is what you want it to be, not what you're told it should be. Even if evolution has drilled into us the need to accumulate wealth, that doesn't mean you have to accept it. I want to make things, and make them well. That is success for me.

I abhor the dating scene, because it perpetuates the morally bankrupt power dynamics that make up shallow value assessments of individuals. People's identities are shattered and reduced to a 3-tuple of salary, IQ, and waistlines.

</comment></comment></comment><comment><USER30> This is a misunderstanding of where the motivation comes from. It's not societal pressure that causes either men to want to be rich or women to look good. It's an evolutionary artifact.

<comment><USER21> There's also a popular misunderstanding as to why people can walk. It's not your legs that cause you to be able to walk. It's an evolutionary artifact.

</comment></comment><comment><USER31> I would love to be rich, but I'm starting to realize that it's not what I need to be happy. What I need, personally, is a life in which I can work on things which I think are fun and interesting, and which pay me enough to live, save a little, and spend time having fun with my girlfriend.

The definition of that changes. At one point I thought the only way to do that was to get a PhD and find my way into academia; later it was found a company and make an obscene amount of money. Both of those goals were great, but the first one chewed me up and the second is one I don't know how to do yet. Right now... the goal is to find a job where the I can work on fun data-based problems. A startup would be fun, but so would a big company, or a government agency like the CDC. I don't need to be rich, but I do need to find satisfaction in my work.

And we'll see what happens next.

</comment><comment><USER32> See, the problem is, we don't want to hear that. We want to hear "do it for god's sake" or "stop dreaming, you're a looser". The latter would motivate even more. But not that it's okay. It's not. If it was, I'd be doing something else.

</comment><comment><USER33> I feel as if this problem is exacerbated in the tech community because your credibility comes from having a big exit. For example, Chris Dixon is definitely an insightful guy but would he be as widely consumed if he hadn't sold a company for millions of dollars?

The commenters seem to agree that freedom and independence are the only things worth coveting. In VC-talk a tech founder can usually get financial independence for life with a "double" However, its the guys who hit the home runs that are respected and looked up to, and I imagine that drives a lot of tech founders.

</comment><comment><USER34> she's neither male nor rich so her advice is bogus.

there are some things that are just true - all other things being equal women prefer men with money.

Even when all other things are not quite equal women prefer men with money.

here's a quick way to test it - list all the men she's ever dated/been in a relationship with and check on how many earned significantly less than her and how many earned significantly more.

This is the worst advice anyone could ever give anyone interested in doing a start-up. It's typical woman advice - they don't tell you what works - <USER2> something that'll make you feel it's OK to be a loser.

</comment><comment><USER35> In my experience, there's much less pressure on men to get rich than there is to get a 'good' job or a 'real' job - something perceived as stable and not risky.

</comment><comment><USER36> If/when we achieve negligible senescence, and the social order becomes frozen, it might become pretty important to find oneself at the top of the heap.

<comment><USER37> I don't actually think that would happen. Corporations are "immortal" today, and they can still rise and fall quickly.

</comment></comment><comment><USER38> Society places pressures on every one, male or female. It has been great for feminist movement to try to identify counter some of the pressure that has made women miserable, but there isn't really an outlet for men.

In fact, I think pressure on men are growing. Being smart, funny, successful and as good looking as Brad Pitt. Men are doing more cosmetics surgery and getting eating disorders now too.

</comment><comment><USER39> We need the startup-founder version of this video <http://www.youtube.com/watch?v=OXf8fr0Kp3Q> (Depicts what goes into transforming a woman into a billboard image)

Not to convince us to stop trying... but to convince us to use a more reasonable metric than the one in 10,000,000 founder that makes a ginormous exit.

</comment><comment><USER40> Ever hear a business idea disparaged for being a "lifestyle business?" For one reason or another startup culture looks down on business models that provide modest wealth via ongoing profits, rather than a big exit. Maybe it's the influence of VCs, maybe it's something else, but it's definitely there.

</comment><comment><USER41> The path to starting a successful business is littered with advice like this. It's certainly not easy, and the price is typically high (relationships, time, health...) especially when starting from nothing. But from observation, it's obvious that for those who do make it, failure is not "okay."

</comment><comment><USER42> I could careless about money. I'm actually horrible with it. I build things and break a lot of stuff. One thing I have become obsessed about is reaching my goals. Not sure if i'm the only one, but I am terrified of myself. For example, has anyone set a goal in the beginning of the year and then on December 31 reviewed how far they got? A new years resolution? I have gotten very serious about my routines and where they take me. I have been surprised by how hard it is to keep a goal in sight and develop routines that help me reach it. But, so far, my new routine has become my happiness. I wish for all of you the same.

</comment><comment><USER43> Why do I get 20 odd javascript dialog popups from that page?

<comment><USER43> Answer: Twitter is broken.

</comment></comment><comment><USER44> The richest man in the cemetery is rolling in his grave.

<comment><USER45> Nope, decomposing like everyone else.

</comment></comment><comment><USER46> The unusually high number of comments and upvotes on this post might suggest that a lot of HN readers want to know it's okay if they don't get rich.

</comment><comment><USER47> _I've watched him lose his health, sanity, credit and girlfriends again and again for this obsession. "This is literally killing you," I tell him. "It has to stop."_

If she can see he's doing something wrong, she should help him get on track, not discourage him. I would avoid this lady like plague.

</comment><comment><USER48> If this would be OK then HN would lose most of its users. :)))

<comment><USER49> Hardly, if HN attracts its intended audience--people that are intellectually curious about everything.

<comment><USER50> I'm not sure that's the HN audience. I came here looking to get away from the childishness of reddit, yet have found a new (and, hitherto to me, unknown) brand of childishness: the entitled startup programmer. Reddit was primarily populated by high school/college kids, but it definitely had a significant population besides that.

As far as I can tell, HN is much more of an extreme monoculture; and one I have to confess I'm rather disappointed in. Instead of thoughtful discourses and commentary from those looking to expand their worldview, it's a strong current of close-mindedness and superiority.

I'm sure that my brief glimpse into the culture of HN is woefully inaccurate and I may certainly have just unluckily gotten the wrong impression from the threads I've read; but I doubt it.

<comment><USER49> startup programmer is so fiercely defended here because it's not in many other places, especially in the day to day work life.

What one may call close-mindedness may be what a community strong identifies as its values.

Regardless, welcome to HN. 12 days is but a blink. Keep participating. If it doesn't jive with you, perhaps you can find it in other communities or one that you start on your own.

</comment></comment></comment></comment><comment><USER51> ...unless _you're_ not okay with it.

</comment><comment><USER52> "No man is rich whose expenditure exceeds his means; and no one is poor whose income exceeds his outgoings." Thomas Chandler Haliburton

</comment><comment><USER53> ... "as long as _I_ do"

</comment><comment><USER54> ...if you born poor and in a wrong place (environment).

</comment><comment><USER55> _The cake is a lie_

;)

</comment><comment><USER56> Bullshit. It's OK not to get rich, but it's not OK not to try.

<comment><USER57> Why do you think that?</comment></comment>


Google has started a video series on machine learning and I can understand it - <AUTHOR> https://www.youtube.com/watch?v=cKxRvEZd3Mw <comment><USER2> The videos are neat but kind of minimal. Is it odd for me to feel uncomfortable and skeptical of this series because of the title? Google has clearly figured out how to market this video, since the "I" changes but the message is the same every time:

[https://www.reddit.com/r/programming/comments/4eyyhm/google_...](https://www.reddit.com/r/programming/comments/4eyyhm/google_has_started_a_new_video_series_teaching/)

[https://www.reddit.com/r/coding/comments/4f1p35/google_has_s...](https://www.reddit.com/r/coding/comments/4f1p35/google_has_started_a_video_series_on_machine/)

[https://www.reddit.com/r/MachineLearning/comments/4f07rp/goo...](https://www.reddit.com/r/MachineLearning/comments/4f07rp/google_has_started_a_new_video_series_teaching/)

The last one is actually the OP it seems, and each video is a good chunk apart in time posted. Not sure what to make of it, I just don't like it when a title like this is the exact same but is made to seem like it was genuinely written by the person who posted it.

<comment><USER3> It's really common for Redditors to cross-post other peoples' submissions to other subreddits without changing the title.

</comment></comment><comment><USER4> Keep in mind, that these videos don't teach you any machine learning. They teach you how to use programs, which perform machine learning for you.

<comment><USER5> The mathematics of the model you end up using at the end of the day is such a small part of the overall picture when making use of machine learning.

<comment><USER6> This is so false. Applying machine learning to a real world problem requires correct intuition and the ability to quantify tradeoffs mathematically. This is developed by understanding the math behind the model and what the tradeoffs are.

<comment><USER5> I completely disagree.

Yes, we need to quantify tradeoffs between models mathematically, but that does not not require knowledge of the mathematics behind the models themselves. With cross validation, I can estimate the effectiveness of many black box models, without looking inside them. This step is called error estimation, and comes before model selection.

I can arrive at a pretty good model by a combination of correct methodology and brute force. It is this methodology that makes up much more of the overall picture. You could give me a black box, a rough range of parameters it takes, and I can tell you how likely it is to work well. This approach doesn't scale well to bigger problems, but I doubt tackling Big Data problems is the intention behind this course.

<comment><USER7> > _I completely disagree_

Don't worry, as with anything there's a certain subset of people who _actually know_ the underlying principles behind a subject, and for some reason feel threatened when those principles are abstracted away, as if their knowledge is now wasted. But that's the natural progression of things. Sorry.

It's funny it happens in a community of programmers though, where half of the tools that are used everyday are blackboxes that few _really_ understand. Like the computer itself.

<comment><USER8> And its completely fine to be the developer who uses pre-made algorithmic block for their specific problem. However you will always be several years behind the current state of art.

For example deep-learning really revolutionized the state of the art in image recognition in 2012 by winning academic competitions. It took about 3-5 years for those deep learning algorithms to get productized into packages like tensorflow, with high production tutorials and videos, so it was accessible to non-academics.

I don't think people that know the underlying principles of machine learning are threatened (Thats sounds like pretty insecure world view on your part). They operate in a different context where you want to push the state of the art in machine learning algorithms, instead of just applying existing best- practices to your specific problem.

<comment><USER7> > _However you will always be several years behind the current state of art_

I agree with your post, but 99.9% of people who will be applying ML via black- box algorithm in the next decade won't be participating in, or at all concerned with, the state-of-the-art. In the same way that most of us aren't concerned about state-of-the-art chip design.

I can do a regression analysis with a couple clicks in excel. I need little knowledge beyond how to interpret results. Sure, the underlying data _might_ violate some assumptions, but it's rare (and there are tools for _that_ ). And let's face it, the most popular applications by amateurs will be marketing related, not cancer-curing related.

<comment><USER9> Actually a regression analysis is a great example of something people often use incorrectly.

I have a degree in stats and someone at work who is self taught from a 'use the tools' perspective was trying to use these frameworks to analyse some log file patterns. When I had a look at it, his results were showing that they were statistically significant, but the data didn't look anything like a linear relationship and fitting it to a regression wasn't a valid move. That's a simplistic example but even in the relatively simple realm of linear regression there are more difficult traps to spot, like heterostedasticity or error normality.

<comment><USER7> > _like heterostedasticity or error normality._

But nothing you've said is complicated enough that in can't be explained through simple instructions or conquered through better tools. This is besides the fact that a little bias in the estimation isn't the end of the world if you're only trying to figure out who clicks ads, and not doing medical research.

Believe me, I run into the same issues as well, having to state "You can't do that..." when I watch co-workers try to apply even simple tests. I just think we draw the cut-off line at different skill-levels.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> I think they've done a good job of simplifying things to the point where the viewer feels not only that ML is useful, but it's achievable.

There are a lot of people who have been forward thinking enough to see the value and incorporate this into their ideas, but there are so many more who think it's a magical black box that has no relevancy to their world.

While some might feel like this is too simple, I think this kind of basic introduction is very powerful.

</comment><comment><USER11> Amazing video, can't wait for the next one!

I have written my hello world algorithm, and I'm very happy about it =)

I have been meaning to start learning this stuff for a long time, but it's really hard, most of the resources are above the level I'm currently at.

This is so amazing to see an accessible course like this, I really hope they will keep it up. It would be a really fun thing to focus on it during this summer.

<comment><USER12> For those interested, episode 2 is out [0]. There is also a playlist containing all episodes [1]

[0] [https://www.youtube.com/watch?v=tNa99PG8hR8](https://www.youtube.com/watch?v=tNa99PG8hR8) [1] [https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6r...](https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal)

<comment><USER13> Dumb YouTube question: is it possible to subscribe to a playlist do I get a push notification when new videos are added to it? I don't particularly want to subscribe to the entire high traffic Google Developers channel.

<comment><USER11> Nope, but you can subscribe to the RSS feed(just paste the playlist url in feedly).

You can also probably setup ifttt to send you an email when the new feed item appears.

</comment></comment></comment></comment><comment><USER14> Thanks for sharing this, been planning to get into Machine learning this year.

</comment><comment><USER15> Python 2.7 :)</comment>


Alan Turing to be given posthumous pardon - <AUTHOR> http://www.guardian.co.uk/uk-news/2013/jul/19/enigma-codebreaker-alan-turing-posthumous-pardon/

<comment><USER2> How about a blanket pardon for anyone convicted of any anti-homosexuality law, and a formal apology for the persecution?

</comment><comment><USER3> this is ridiculous - what are they trying prove? it won't change history and I seriously doubt it will bring any sort of solace to anyone. Pure politics in the runup to the legalisation of gay marriage in the uk.</comment>


Ask HN: Where in the US are software salaries around or above national average? - <AUTHOR> I periodically look around on Glassdoor for software salaries around the country, and it seems like vanishingly few cities have software salaries at or above national average. SV salaries are well above, but NYC's are only 4% over. All of the other major cities I can think of are double-digits under. Are the software jobs really so concentrated in SV that it skews the whole national average so dramatically? Or are there other pockets as well? <comment><USER2> I'd ask how these salaries are in relation to cost of living.

Doing this makes the ones that look "mediocre" much better.</comment>


Show HN: radurls.com - <AUTHOR> http://radurls.com

<comment><AUTHOR> The website scours the internet for popular URLs and then ranks them according to how popular they are on facebook!

I would love to get input from HN on my new project!

Thank you very much in advance.

</comment><comment><USER2> The yellow URLs beneath each title is very bright and hard to read.

<comment><AUTHOR> Thank you I will fix this.</comment></comment>


What a CEO does (2010) - <AUTHOR> http://avc.com/2010/08/what-a-ceo-does/

<comment><AUTHOR> Old article, but still great advice</comment>


Ask YC: What causes startups to NOT build something users want? - <AUTHOR> PG talks about building what users want as the main indicator of a startups success, but there are a lot of startups out there building things that I can't see anybody wanting.  Why is this?  Are the founders not paying attention to their users?  Investors pushing the company in a bad direction?  Ignorance?  Ego?<p>Maybe it's hard to find out exactly what users want, but what can founders do to make sure they aren't getting caught up in a bad situation that's pushing them in the wrong direction? <comment><USER2> The thing you can do to make sure you're not caught in a cycle of pointless work is to release the product.

Stepping back a bit, another thing you can do is pick a market that (1) has a need and (2) is willing to pay for a solution. This works best for markets where you have personal and business connections to powerful people, but those can be built up over time. This is how much of the world's IT fortunes have been made, building a more efficient time clock or equities trading system or shipping logistics system. This is usually not something you can do with "innovative" consumer webapps because innovation targeting consumers generally implies letting people do something they didn't previously know they wanted to do.

If you're doing a pre-release consumer webapp, I think your best measure is how excited your team is about using the product. Sometimes this is hard to separate from excitement about _building_ the product, but you should worry a lot if there aren't a few coworkers and friends who are totally in love with the product. Like, using-it-all-day-telling-all-their-friends in love.

You can take one spark of true love and work out a message that makes it grow. But you can't take a thousand gallons of "potentially interesting" and turn it into love without some significant new inspiration. And inspiration gets more and more difficult to add the more committed your team is to its existing product direction. Therefore it's very important to short-circuit this commitment by releasing early and making sure everybody knows that the measure of success is not lines of code, but attention and affection from users.

</comment><comment><USER3> \- focusing on too small a niche

\- working on interesting technical problems that don't correspond to problems that people need solved

\- making something that's only slightly better than what's out there (e.g. a slightly better news site or social network) and expecting everyone will magically switch or improves in areas that no one cares about

<comment><USER4> I feel like number 2 there is far and away the biggest.

</comment></comment><comment><USER5> "What causes startups to NOT build something users want?"

Not having a customer.

I cannot overstate this enough because it's the easiest mistake to make and I've already made it more than once.

It's so easy to say, "This is so cool!" or "I can do that!"

And then, "Who WOULDN'T want it?"

As it turns out, there's a very real possibility (even probability) that no one would want what you think is cool.

Having a customer, OTOH, changes everything. They're way too busy doing their jobs to ponder what's cool. They just want solutions to their problems. And they'll tell you. Especially if you are receptive or know how to ask.

Most of the times customers told me what they needed, I probably never would have thought of it on my own. And, invariably, those were the things that ended up being closest to what other people wanted, too.

</comment><comment><USER6> Not to pick on him, but there was a startup posted here yesterday that got some harshly negative feedback -- it seemed obvious to many people that users weren't interested in what he was offering. The most positive suggestions suggested alternative product features. I think some founders build a product for themselves and can't understand that it doesn't offer mainstream appeal.

It seems like an easy way to check yourself is to ask your target users.

<comment><USER7> I think that's right on the money! Asking your target users what they want. Maybe I could share a few things for what it's worth. Back then I wanted to build a Yelp! like site just for the sake of it. I was thinking that guys like me would benefit from it. To cut the long story short it didn't go so well. Anyways a couple of months before my failed attempt I built a simple to-do list application. My dad saw it and asked me what else does it do. To cut another long story short this simple to-do list evolved into a full fledged project management application that is aimed towards people who are in the same line of business as my father. It's feature set was built specifically by the recommendation of my users. And by God's grace I have four companies lined up in the trenches ready to buy my software :-). So yeah without a FGD (focus group discussion) my company wouldn't be where it is right now. I was constantly amazed by the difference between what I want as a user and what my target users want. So never underestimate a good FGD session or similar to my case several FGD sessions.

<comment><USER8> Just weighing in here...

I'm never again considering what people say they want without a mountain of salt. All too often, what people say they want ends up not being used at all, not even by those who requested the change or addition. Users don't seem to be magically smarter than the developers in my experience. Design by committee has never worked so well for me. Especially in such a flexible medium as the internet.

But, releasing early is a good way to measure what people will actually use.

<comment><USER4> It's best to listen to what people say they want, then ask why over and over. You'll notice that as you dig through levels of answers to that question, that very different requests come down to the same basic unmet needs. Then you engineer a solution to that.

<comment><USER8> When the goal is entertainment though, I don't see that strategy getting you far.

<comment><USER4> It works even there. Entertainment is as much science as any other business. Even the most popular songs around are more or less scientifically crafted.

<comment><USER4> I should say many of. Rock and maybe country are pretty much the only organic forms of music you'll find on FM radio these days.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Assuming you know/represent your users, if you are building something just for yourself and don't care if someone else likes it, great. But if your goal is getting users to use something, build a company around it, ask them & follow them.

Assuming your most vocal users represent your average user or target audience, read this Guy Kawasaki's post <http://news.ycombinator.com/item?id=89088>

Fear to question your old beliefs, think of the PayPal story. They originally thought they'll do payments through PDAs and put up the website as an afterthought. A week later they noticed everybody is using the website and almost no one is using the PDA software they wrote. They panicked and shutdown the website, until someone had the sense to say "if that is what our users want to use, lets let them", if they had insisted that PayPal only be used through PDAs you wouldn't have heard of them.

</comment><comment><USER10> You would think that just asking your potential users what they want is best, but then you have to worry about self-report errors. As has been noted. (Customers lie. To you and themselves. Accept it.)

I'm fairly stupid and I don't possess a crystal ball...but since I also don't want to waste my time on things that don't pan out financially, I've spent quite a bit thinking about this question. I like to keep things simple, so I will generally only start or buy a company if it does one or more of the following (the more, the better): 1\. Make the user money. 2\. Save the user time. 3\. Save the user money. 4\. Get the user laid. 5\. Save the user's life/improve their health.

There are a few other rules. Numbers 2 and 4 should never exist only on their own. Number 5 is often one of the most difficult to execute because prevention is harder to sell than solutions. And all of the potential ideas have to be a superior enough solution that they outweigh the switching costs for the customer (including the switching cost from nothing, inertia is a bitch!) Number 2 is the most likely to suffer from the "unwanted solution" problem (for various reasons, an outlining of which I suppose would better address the original question.) Multiple streams of income and multiple customer bases are always good things, just to hedge your bets.

</comment><comment><USER11> Maybe you make something you want yourself, and figure you may not be alone in the world?

<comment><USER8> Very true.

My technique these days is to find what the widespread masses will like and then work backwards until I find something that I will like too. At this rare intersection, I build.

</comment></comment><comment><USER12> I don't have any experience in a startup, but just thinking on the problem leads me to believe that not releasing early would be a big contributor.

Seems to me that if you release early, you'll get more interesting[1] feedback while your app is in a nascent stage and you can more easily change direction.

[1] By interesting, I'm mean that the feedback on a more fully developed release is more likely to be of the window-dressing, change-this-font-to- helvetica-16 type, while feedback for the early release will often be directed at adding desirable features.

</comment><comment><USER13> quite frankly i think it is a trial and error process. there really is no proven technique. think it, build it. build it fast. assess response then react.

</comment><comment><USER14> can you please quote some examples for this...

<comment><AUTHOR> Do a google search on 'failed internet startup'

</comment></comment><comment><USER15> Inexperience.</comment>


Types of Automated Website Security (Cloudflare vs. Sucuri vs. Tinfoil) - <AUTHOR> http://blog.tinfoilsecurity.com/the-three-types-of-automated-website-security

<comment><USER2> I thought it was an interesting read though I would have liked a more detailed article. I signed up for their free test but I guess the mail server is down so I never got any results.

<comment><AUTHOR> I'm glad it was interesting!

With regard to the free test, can you email me at firstname.lastname@example.com and I'll be sure to look into it? Our mail servers haven't experienced any outages, but I'd love to find out what went wrong and fix it for you. Thanks! :)

<comment><USER2> I found the email. It was caught by my overly aggressive spam filter. Thanks for the reply though.

</comment></comment></comment><comment><USER3> Clearly the votes for this article are not legitimate.

<comment><AUTHOR> I'm sorry, why?

<comment><USER4> Probably because your blog post reads like spam, it is pretty much devoid of content.

<comment><AUTHOR> Interesting. We were hoping to provide some context and clarity around the different types of automated website security by categorizing them - a lot of people (even engineers) we talk to don't really understand the difference between malware scanning and proactive vulnerability scanning, for example.

I'm sorry you didn't enjoy the article. Feedback is much appreciated. :)

<comment><USER4> I'll give you feedback since you ask.

\- Up the font size on your blog, I can't read it without zooming in considerably.

\- Try to actually explain, giving examples help, what the different security parts do rather than quickly explaining, this blog post feels as if it were written up in 15 minutes to sell your product rather than being informative

\- Don't be afraid to use markup other than anchor and paragraph tags, for this article using subheadings for the 3 types of security would make the article easier to follow (remember people love to skim).

<comment><AUTHOR> Great feedback. We're definitely going to fix these for the next post. Thanks. :)</comment></comment></comment></comment></comment></comment>


Introduction to Information Retrieval - <AUTHOR> http://nlp.stanford.edu/IR-book/html/htmledition/irbook.html <comment><USER2> See <http://www.stanford.edu/class/cs276/cs276-2009-syllabus.html> for accompanying course, including problem sets and solutions.

Edit: The solutions require a login. If anyone actually plans on working through these and checking answers, let me know.

</comment><comment><USER3> This is a great survey book of the material. There aren't too many like it. Once you whet your appetite with this book, you can head off for serious study in one of the key topic areas. If you are lucky your uni will offer a course based on this book.

My only complaints are that I wish it focused a bit less on outdated or old examples. The field has moved incredibly fast, and reading case studies from the mid-90s turned me off.

</comment><comment><USER4> "I understand this concern on behalf of the taxpayers. People want value for money. That's why we always insist on the principal of Information Retrieval charges. It's absolutely right and fair that those found guilty should pay for their periods of detention and the Information Retrieval procedures used in their interrogations."

</comment><comment><USER5> Hmm,

So is this an outline of the principles behind something like Xapien and Lucene full indexing libraries?

<comment><USER2> I'm not an expert on Xapian or Lucene, but I think the scope of the book is quite a bit wider.</comment></comment>


Twitter Is Battling An Army Of Fake Accounts Run By A Bot-Master In Las Vegas - <AUTHOR> http://www.sfgate.com/technology/businessinsider/article/Twitter-Is-Battling-An-Army-Of-Fake-Accounts-Run-5010316.php <comment><USER2> That must be my old boss...</comment>


Ask HN: Where should a UK-based company move to if encryption is outlawed? - <AUTHOR> Throwaway account for probably-obvious reasons. We would be grateful if people avoided speculating about who this is in the comments :-)
We're a UK-based PaaS. About 90% of our customers are from outside the UK.
The party most likely to form the government after the upcoming election here is strongly averse to encryption.  Although it remains to be seen what, if any, legislation they will actually enact if they get in, we need to do contingency planning. The worst-case scenario (which, to be clear, we think is very unlikely) is that they might pass laws that would mean we would not be able to offer a service with sufficient security for our international customers.
In this - again, we think unlikely - event, we'd either have to close the business, as we can't keep going on our UK revenue only, or we'd have to move to another country.
Our question for HN is: which country would it be best to move to? It would need to be one with no crazy laws around encryption (and no obvious political rumblings that it might move in that direction), and an immigration system that would let us in. Ideally it would also be a nice place to live :-)
Thanks in advance for any suggestions!
[edit] By "political rumblings", this is the kind of thing we're worried about, coming from the EU: https://www.theregister.co.uk/2017/03/30/ec_push_encryption_backdoors/ <comment><USER2> You should go to Ireland. Completely Different jurisdiction. Still in the EU. Close enough so you can go back and forth between The UK and Ireland.

If you contact idaireland @ ida .ie, they may have some relocation help available to avail off.

PS, there is an update at the bottom of that register article about backdoors. The EU is NOT requiring them.

"A spokesperson from the EC got in touch to say that Jourová's words had been misinterpreted and there is no plan to introduce legislation covering encryption. The proposed laws will instead cover faster access to material held in the cloud in different jurisdictions. Material that, presumably, they expect to be unencrypted"

</comment><comment><USER3> Consider Switzerland. Proton Mail which basically has a business model founded on privacy and encryption , uses this location as a competitive advantage. Switzerland has some of the strictest privacy and confidentiality laws (all those private banks and secret bank accounts needed them :) ). Zurich has a good tech scene apparently (Google has an engineering center there) and ETH and EPFL provide excellent talent. Downside is cost. Cost of living is extremely high and salaries have to match that (I think salaries for developers are substantially higher than in London). Some companies set up HQ here and then keep bulk of people in Berlin or other location (e.g. Getyourguide.com )

</comment><comment><USER4> Probably Berlin. Vilnius or Tallinn could be interesting choices because of friendly business climate, lower taxes, competent and cheap talent, not far away, good tech culture and basically 0% chance that someone would try to outlaw your business (Germany probably has a bit higher chance but I guess it's also not that high). I think US do have some restrictions about exporting encryption to some (all?) foreign countries so you better look closer into that before making a decision. P.S. Stockholm also could be a good place. It's just quite expensive.

<comment><AUTHOR> Vilnius and Tallinn are definitely highly tempting, just from the simplicity of getting set up over there from a business registration standpoint (at least in Tallinn, not quite so sure about Vilnius). There are a few concerns about Russia's attitude to the Baltics, though - probably overblown in the press over here, but we'd need to research.

Berlin - yes, definitely a tempting option.

<comment><USER5> Very overblown. Almost histerical paranoia. Even people in Vilnius are not so afraid of Russia as people here in the UK.

</comment></comment></comment><comment><USER6> Amsterdam? It's got quite a tech culture, and is only 30-60 mins' flight from most of the UK. I don't know what the political stance is on tech-sensitive issues, though.

<comment><AUTHOR> Pretty solid, as far as we can tell: [http://www.bbc.co.uk/news/technology-35251429](http://www.bbc.co.uk/news/technology-35251429)

</comment></comment><comment><USER7> Dublin, ireland. Huge tech culture, lots of highly skilled employees

<comment><AUTHOR> Yes, that's definitely high on the list. Some of us have friends and family over there, and of course there's no need to learn another language, which helps.

<comment><USER8> Also low corporation tax rate and a land border with the UK (I'm surprised it's so low down on the page)

</comment></comment></comment><comment><USER9> I'm not sure on how difficult it would be to move to the U.S., but there's a lot of underemployed tech talent in Columbus, Ohio, and we have a pretty low cost of living too. I'm pretty confident we won't have any encryption bans any time soon, we have too many giant corporations that would be vehemently opposed to it.

<comment><AUTHOR> Thanks! Sorting out visas etc is definitely a concern for the US, but that's a good point about encryption. It's hard to imagine Google and Facebook sitting quiet while bad stuff happened in that area.

<comment><USER10> Google and Facebook haven't had much effect on the "bad stuff" from the last six months. I wouldn't be confident about their ability to influence encryption legislation, since they haven't been able to change the administration's mind on immigration, climate change or net neutrality so far.

</comment></comment></comment><comment><USER11> Canada. It's English speaking, close to the USA, generally very liberal, tolerant and safe (certainly compared to the USA and UK), good economy, amazing lifestyle.

So far there are no encryption laws in Canada, and nothing on the horizon, although you never know what could happen in future (if we get another idiot like Stephen Harper in power).

[https://www.theglobeandmail.com/technology/why-canada- isnt-h...](https://www.theglobeandmail.com/technology/why-canada-isnt-having- a-rigorous-debate-over-encryption/article28859991/)

<comment><AUTHOR> Where in Canada, though? Vancouver seems to be where everyone goes, but from what I've heard, that's led to a property boom almost as crazy as London's...

<comment><USER11> I live on Vancouver Island, near Nanaimo. Prices are much more reasonable, it's a beautiful place to live, there are quite a few startups here, and it's just a 15 min floatplane ride to downtown Vancouver or Victoria.

[http://business.financialpost.com/management/nanaimo- quietly...](http://business.financialpost.com/management/nanaimo-quietly- builds-itself-into-a-tech-startup-hub)

Only problem might be immigration, but the Start-up Visa Program might be an option:

[http://www.cic.gc.ca/english/immigrate/business/start- up/ind...](http://www.cic.gc.ca/english/immigrate/business/start-up/index.asp)

</comment></comment></comment><comment><USER12> If you want to stay close to the UK and outside of EU, I guess Switzerland or Iceland make most sense for this type of business. Otherwise you could move to Americas, South Africa or Asia.

<comment><USER13> Why "outside EU"? Not an stated requirement.

You could as well say "and move to a country starting with P" ...

Specially considering that UK is in the EU.

<comment><USER14> Article 50 has been triggered, and if the present government is re-elected - and even if not - the UK will most likely be out of the EU in 2 years.

<comment><USER13> Lots of assumptions.

<comment><USER10> You think the UK will stay on the EU? Explain

</comment></comment></comment></comment></comment><comment><USER15> I keep seeing Seychelles[0] popping up everytime I research offshore hosting providers. I don't know why this is. I think it's one of those rare countries where you can't simply subpoena a hosting provider and ask for specific data / business records. I'm not sure if this helps with doing illegal crypto programming[1], but I do know in the early crypto wars people had to travel far and wide to weird countries to do their programming.

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

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

</comment><comment><USER16> Isle of Man? Not subject to UK law, 0% Corporation Tax, still physically very close.

<comment><AUTHOR> Hmm, now that's an interesting thought. Maybe the Channel Islands would work too?

<comment><USER16> Yeh - Generally you would find each of the Channel Islands has its own attraction, aimed at either Business, People or Tourists.

Isle of Man (disclaimer, I live there) is definitely wired up to attract new businesses, through things like the Taxation and Government assistance.

However I've seen some business people move from the Isle of Man to Jersey/Guernsey, with the knowledge it would cost them more, but you can't buy sunshine yet!...

</comment></comment></comment><comment><USER17> If you wanted a swing in the opposite direction, Iceland has the best privacy and data laws. I get the impression their economy will increasingly reflect this.

However, it also has plenty of challenges, from population/talent size, costs, weather, etc. From a cursory look, immigration looks relatively easy if you have a job.

<comment><AUTHOR> Costs have been the biggest worry when looking there. Not sure about bandwidth either...? IIRC the Eve Online guys had to do their server hosting in the UK for that reason.

</comment></comment><comment><USER18> The whole issue also depends on your customers. If your customers are in countries where the governments are speculating about backdoors the business may fail since it does not help when the business is in a safe area but the customers not.

Why don't you start a new political party ?

<comment><AUTHOR> That's a great point. Our customers are from all over the world - the US is the largest single country, but there are lots in the EU, India, Japan, Australasia, Latin America, Africa...

We'd love to start a new political party, but doing that at the same time as a startup would be, um, hard.

<comment><USER19> Definitely look at your customer base, and maybe talk to them in terms of privacy expectations and which jurisdiction they're comfortable with. From what I understand of your post the issue is not only encryption legislation itself but more generally if/how the government can access your data (and your customers').

If you're banking for EU customers, then anywhere in the EU should be fine once the GDPR comes into effect (2018 IIRC). If you want to accommodate a broader base and/or have customers with stringent privacy requirements, Switzerland is a good option.

</comment></comment></comment><comment><USER20> >Although it remains to be seen what, if any, legislation they will actually enact if they get in

This is the key point, there is quite a lot of scaremongering on the internet and in the media. To me it looks extremely unlikely we will get anything that will result in damage to our ability to do business from within the UK.

</comment><comment><USER21> Dublin or Barcelona.

<comment><AUTHOR> Thanks! Elsewhere in the EU - soon to be, "in the EU" :-( - is definitely something we're considering, but this is giving us pause: [https://www.theregister.co.uk/2017/03/30/ec_push_encryption_...](https://www.theregister.co.uk/2017/03/30/ec_push_encryption_backdoors/)

<comment><USER22> Did you see the correction at the bottom?

Subversion of E2E encryption would likely be in conflict with the GDPR: [https://tresorit.com/blog/encryption-gdpr- compliance/](https://tresorit.com/blog/encryption-gdpr-compliance/)

<comment><AUTHOR> Thanks, that's useful to know. So that would suggest that in the EU we wouldn't even need to worry about the national government trying to ban encryption, because it would be shut down by the European courts.

</comment></comment></comment></comment><comment><USER23> Ireland

<comment><AUTHOR> Nice idea. Some of us have friends and family over there, and of course it's a great place.

</comment></comment><comment><USER24> Iceland

<comment><AUTHOR> Thanks! Presumably any country with Pirate Party members of parliament is unlikely to restrict the Internet too much...

</comment></comment><comment><USER25> the moon or outer space?

<comment><AUTHOR> Excellent plan. Will get on the phone to Elon Musk tomorrow.

<comment><USER26> Sounds like a great idea for a startup!

Imagine a group of young people, trying to raise capital to start a data haven in a remote Sultanate or Principality. Who knew _that_ could be an important competitive advantage?

You could call the startup "Epiphyte Corporation" :-D</comment></comment></comment>


Functions Should Be Short And Sweet, But Why? - <AUTHOR> http://sam-koblenski.blogspot.ru/2014/01/functions-should-be-short-and-sweet-but.html <comment><USER2> Functions should be short and sweet, to an extent, because by thinking in terms of functions you're building a new language in which you write your program.

If you're writing big functions by habit then you're just laying more code after existing code to build a program. If you split your code in functions and, instead, start _talking_ in the language you've just invented then you're composing a program. And I think compilers should do the building while I refrain myself to composing.

Of course, one-line functions don't have inherent value but sometimes they're needed. For example, to present a higher-level concept that just effectively happens to be a simple assignment or an inc.

Short functions themselves don't have an inherent value either: if you manage to write your function with less tokens, possibly due to composing it out of other functions, then that's all good but isn't the real value of doing it. Shortness for the sake of shortness only matters until you're down to a screenful or so.

The real value of defining and writing functions is thinking of the proper words for your language. As soon as you're making your own language, then you're just using functions as vehicles to represent words in that language. Some words might take 30 lines to code, some words might take 3 lines. It doesn't matter as you've got your language together in a way that is concise and beautiful which is the real point.

<comment><USER3> Right to the heart of matter.

This is something Abelson & Sussman were trying to teach us in the 80-s (stacking abstractions-as-languages on top of each other is one of the main themes of SICP). Unfortunately this insight got somehow lost in between people parroting design patterns and repeating things without understanding them (programming pop-culture?). I've personally seen only a handful of programmers who know of this concept, and even less of folks who understand it.

</comment></comment><comment><USER4> On the flip side, I've seen people take this to the extreme. They often separate lines of code that intrinsically belong together, necessary parts of an algorithm get spread around for no other reason than to try and keep functions small. It leads to code that's really hard to work with and somehow more brittle than when it started.

I'm not saying this happens all the time. But I'm more concerned about it, because I see it more often than the inverse, and it's more damaging to the codebase. At least long spaghetti methods can be refactored into something nice. This kind of mess has to be refactored into a single area first, which is much harder.

<comment><USER5> >>On the flip side, I've seen people take this to the extreme.<<

indeed, I have seen functions that contain only one line of code. Even if that is intended for reuse, it makes no sense, because the function call is one line too. Readability goes down the drain this way.

If a reader tries to understand a logic and thinking has to be interrupted by searches and trying to find the right code window, split-ups don't do good things.

Polymorphism, if applied wrong, is a notorious tool to hide the logic from the readers too. If the code decides at runtime, which implementation is used, comments become really important. Especially when this decision is made completely elsewhere in the code. Think strategy pattern, for example.

The underlying problem is IMHO developers blindly following rules. This can be seen a lot. If you ask them 'why' and you get a textbook answer, be careful.

<comment><USER6> A single line function makes sense because it allows you to alter functionality later without worrying you forgot about some instance of that pattern:

        def logUnexpectedError(t: Throwable) = log.error("Oops: {}", t)

After I get it together and start keeping proper metrics:

        def logUnexpectedError(t: Throwable) = {
          log.error("Oops: {}", t)
          statistics.errorCounterByClass(t.getClass()).inc()
        }

<comment><USER7> but on that opther hand, this means added complexity in all the cases where you _dont_ overload it. Whoever reads the program will always have to keep overloading in mind.

<comment><USER8> hence a good naming convention. If the function name is clear, than it shouldn't be a mind drain at all, particularly if it is only a one line function.

</comment></comment></comment></comment></comment><comment><USER9> My (quite oldschool) professor taught me about this top-down design. This kind of "write as if you have all the methods you want/need" style is sometimes called "Wishful Programming" [http://blog.thesoftwarecraft.com/2013/11/wishful- programming...](http://blog.thesoftwarecraft.com/2013/11/wishful- programming.html)

Bart Bakker references "Structure and Interpretation of Computer Programs" as an early source and I'm somewhat positive that I read about an similar approach in "How to design programs 2nd ed", called "programming with a wish list".

Edit: I found the mention in HtDP but as I understand it it's not exactly the same as wishful programming: [http://www.ccs.neu.edu/home/matthias/HtDP2e/part_one.html](http://www.ccs.neu.edu/home/matthias/HtDP2e/part_one.html)

under "3.4 From Functions to Programs"

<comment><USER10> I remember doing something similar in college using Eclipse/Java (but any static analysis friendly language with on-the-fly type checker would do) and it was pure fun. You just write the code as you'd want it to be, the IDE will flag missing classes/interfaces and generate them on the go if you tell them, and if down the road you use one interface differently the IDE will extend or ~reparameterize it for you. You end up with an abstract system/algorithm that works by type checked interfaces you can now implement.

</comment></comment><comment><USER11> This reminds me strongly of some concepts I've heard of in TDD Ruby circles though I'm certain they're not unique to that. The bit on writing your function names first is like the practice of "write the test with the API you want to use, then make it pass with an implementation that does just that." It's a kind of planning-by-wishful-thinking that just seems to work in certain scenarios. But I think for it to be successful, you need to read enough best- practices code in your target language to understand better approaches. That said, using your phantom code first will give you a better API design. The trick, as in this article, is to keep writing ideal implementations like turtles all the way down. If your logic is complicated enough that you'll need notes or comments, descriptive function names are wonderful. Particularly in languages like Objective-C with named parameters.

<comment><USER12> I've thought about it as the programming equivalent of writing outlines before starting on an essay. It requires more forethought, but you can recognize early on if a line of thought / solution is a dead end, and also makes restructuring and fixing it much easier

<comment><USER13> I often end up factoring out things into common methods in the end. That's when I see what parts are common, something I don't always recognize in the beginning (or even in the middle of it).

</comment></comment></comment><comment><USER14> I think it's a Goldilocks problem. There's an optimal average size for any group of related functions, but the skill of planning it is not in nailing it on the first try, but in determining whether the refactoring will benefit more when the initial estimate is padded higher or lower.

The main reason for going small at first, I think, is that it creates more names. Names especially help with very simple calculations that appear repeatedly and turn into visual noise(true of a lot of UI code). The naming process can point you towards an instant design change as you discover what you are "actually" doing in the code. A big function acts as a bigger black box, thus it can hide these issues. Sometimes you want the black box, but it's the exceptional case.

</comment><comment><USER15> > Functions Should Be Short And Sweet, But Why?

In my case the why (as well as many of the arguments here) is because I'm not a "superstar/rockstar ninja coder" and by keeping functions short, clear and with a descriptive name in 6 months when I open the file to fix the change request I won't have to spend 2 hours building a mental model of the system to fix the bug.

<comment><USER16> If your rockstar coder makes functions five screen longs as a matter of habit, you may consider changing bands.

</comment></comment><comment><USER17> I've been doing this in client side Javascript for the last year or so. Rather than having 20 lines of nested jQuery callbacks on a page, I make each callback a function and group the event bindings together:

e.g.:

        var showPreview = function() { ... };
        var calculate = function() { ... };
        $('a.preview').click(showPreview);
        $('a.calculate').click(calculate);

Even nicer is to split this out into a separate CoffeeScript file. Then just call `new SuperAwesomeCalculator()` on the page.

I think what made me do this was Erlang. After a point it gets annoying to type NewNewNewNewNewParams, so it's easier just to split it out into a separate function :)

</comment><comment><USER18> I worked on a massive codebase once many years ago (C#/.NET) which had been built by a relatively competent outsourced team. Somewhere along the way some consultant on the UK side of the business had insisted that each function could be no more than 5 lines long. It was horrible to work with - it took so long to find the place you actually needed to make changes, and it seems like they'd just started inventing layer names in order to facilitate it.

So yeah, small functions good, but you can take it to extremes.

<comment><USER19> I worked on a similar project; the US consultant insisted that each method should be less than 25 lines. The code involved several decision trees. This rigid limit made the code quite inconvenient to follow and enhance. After much sweat and swearing on both sides, the limit was increased to 40 lines!

</comment></comment><comment><USER20> Functions should be exactly as long as they need to be to accomplish their purpose. The _purpose_ is the important part: A function should have a concise and easily-understood purpose (or very small and logically inseparable set of purposes) and, tangentially, a name that describes it well.

You can have a fairly long function that's readable and maintainable; those last two are the important part, and, to a point, they hinge more on how much work is being done than how much code it takes.

Of course, if you're just plain writing more code than is needed, that's not a problem with the function itself.

<comment><USER21> Yes, the idea of writing straightforward code is critical. If you can do it in less lines, even at expense of speed or space, you benefit many-fold. Its easier to understand, read, explain to someone else, remember, debug, compile. The slowest processor in the system is the wetware between your ears. Funny we rarely talk of optimizing for speed or space in that engine!

</comment></comment><comment><USER22> I think most design patterns and 'best practices' exist because, without them being explicit, people will tend to do the opposite. Obviously, there are always use cases where going against the pattern might make sense. But you should be able to justify it.

Would you rather have mostly short functions with a couple long ones or the opposite?

</comment><comment><USER13> I completely agree - I made the same points in "7 Ways More Methods Can Improve Your Program" [http://henrikwarne.com/2013/08/31/7-ways-more-methods- can-im...](http://henrikwarne.com/2013/08/31/7-ways-more-methods-can-improve- your-program/)

</comment><comment><USER23> I just had to deal with extending an absolutely massive C++ function the other day and it was a nightmare. The function was 2500 lines long and littered with _several dozen_ exit points - all of which execute under slightly different conditions. Throw in a couple several hundred lines long switch-case statements and you can see what I'm getting at. Figuring out the right place to put a breakpoint that will actually fire due to a maze of conditions and returns took me a couple hours.

Of course, I've seen many cases where people take this to the opposite extreme and start breaking up functionality that logically belongs together and can't be reused in other contexts. It makes it pretty apparent that writing decent readable code is hard (for many people anyway).

<comment><USER24> "start breaking up functionality that logically belongs together and can't be reused in other contexts"

I know you said you're in the C++ world, so I don't think what I'm doing fits yours, but I've responded to the same behavior in the Java world in a way that tends to confuse and mystify my co-workers. In Java I've started to declare classes within methods. These classes can compute complex processes, but are nicely tucked away in the only logical place they make sense, that method.

My reason for this is that the method really belongs to the containing class. I can't break it down or abstract it out. I could use composition, but the new method-class isn't usable by anything else. The sub steps in the method aren't usable by any other method within the housing class. I could put them there, but they would just muddy the outer class. So now the code looks something like this.

public class Outer { void doSomethingComplex(final params) { class ComplexThing { private void step1() {...} private void step2() {...} public void goToTown() {...} }

        new ComplexThing().goToTown();
      }

}

ComplexThing gets access to the outer params. This cuts down on constructor complexity and cements the intricate bond between the two entities, method and inner class. The logic is broken down nicely. Finally, nothing is needlessly shared.

This might make the outer class a bit larger, but I find this structure pleasant.

It's also a useful pattern for writing tests. Each test method gets a class (could have inheritance) that has a setup, test, tear down. All of that is encapsulated in one place.

</comment></comment><comment><USER25> I recently started messing around with Clojure, and I love the language. I noticed that you are pretty much basically forced to write lots of short functions if you want to stay idiomatic and readable. It is pretty good in a way.

</comment><comment><USER26> This is why decent schools in old days taught students Lamda Calculus and Scheme or even Haskell. It helps do develop a strong aversion to verbose spaghetti code very early.)

</comment><comment><USER27> All the reasons boil down to one: human brains can not hold too much working memory.

<comment><USER28> Is it a form of irony when programs wind up overwhelming this memory with too many functions? :)

<comment><USER29> Where do you spend your time? I spend some of my time trying to find the right function, and that gets harder if there are more functions. But I spend more of my time trying to understand and/or modify that function, and that gets easier with smaller functions.

So more, smaller functions winds up being a net win (up to some limit, of course...)

<comment><USER28> This depends on how connected they are. If every function is a "leaf" function, then yes this is straight forward. However, that isn't possible as you have to have some functions that call other functions. At this point, you then need to worry not just about the function you are touching, but all functions that touch it. It isn't unheard of to spend the time trying to find all of the subtleties of all functions that rely on the one you are looking at.

To that end, I would think the more segmented the call trees the better. But this is often hard to see when looking at a single function/data structure. This also seems to imply that having duplication of a function is not as evil as it would seem, since it can free up many of the dependency lines you have to consider.

All of this is to say that I do not disagree with the premise; though I do think it is less clear cut.

</comment></comment></comment></comment><comment><USER30> For everyone that didn't knew this, [http://amzn.to/1hhI37v](http://amzn.to/1hhI37v)

You should read it..

PS. It's the book Code Clean ;)

</comment><comment><USER31> So why does the main function in this example violate the principle ... i.e. where is the dispatch table?</comment>


My first github project: BlackBerry Address Book to CSV - <AUTHOR> https://github.com/BMintern/BlackBerry-Address-Book-to-CSV

<comment><AUTHOR> My scenario was this: I was using my work BlackBerry as my personal phone, but I quit recently. Before quitting, I used barrybackup on Ubuntu to make a backup. I recently got a new Android and did not want to re-enter all my personal contacts.

Instead, I reverse-engineered the Address Book format, writing a Python program to convert the data to a CSV. I then used a spreadsheet program to delete old-job-related contacts and to clean things up a bit. Finally, I imported my contacts using GMail.

This project probably is not applicable to too many people, but if it helps even one person get their contact information, I'm glad to be able to help.</comment>


Robin Dreeke – Sizing People Up – DEF CON 27 (2019) - <AUTHOR> https://www.youtube.com/watch?v=H3XR4QrJyxA <comment><AUTHOR> A must-watch for everyone. This has to be one of the most amazing talks I've seen, super-impressive and useful. Life-changing. It's about how to improve all your relationships, interactions, your life, the lives of everyone around you, the world etc. How to communicate far better, leave people glad they met you etc. While being totally honest at all times–I presumed it'd be about body language, or manipulation, or..using people, or something.

So I watched another of his talks, _How to Build Trust with Anyone_ , it was just as good.

[https://www.youtube.com/watch?v=dqzH5GJwrnk](https://www.youtube.com/watch?v=dqzH5GJwrnk)</comment>