GM Says Facebook Ads Don't Work, Pulls $10 Million Account - <AUTHOR> http://www.forbes.com/sites/joannmuller/2012/05/15/gm-says-facebook-ads-dont-work-pulls-10-billion-account/ <comment><USER2> I've said this repeatedly: Facebook is a high-risk proposition, particularly as an investment (disclaimer: I work for Google). "Intent" as other commenters have noted is a big part of the story but it's not the only story.

Search can broadly be broken up into at least two categories:

1\. Navigational eg typing "b and h" into the browser; and

2\. Informational eg "cheap flights to jamaica".

I don't know what the make up is of (1) vs (2) but I expect for normal users (1) is pretty huge. I would guess that ads are have lower clickthroughs for (1) than (2).

(2) is where you have the intent. The user obviously wants something. They may find it with an ad. They may find it with organic search results. Either way, the goal with search is to get the user the best result.

With Facebook you tend to be just looking at friends' updates, posting your own updates, posting photos and the like. You don't go to Facebook to find things. So it doesn't really matter how much targeting information Facebook has if you don't have that intent.

Many will say "but what if you do start going to Facebook to find things". That's a _massive_ "what if". What if the Sun expands tomorrow and swallows the Earth?

Facebook has (IMHO) a number of strategic problems:

1\. It has no control over mobile. Both Google and Apple have mobile OSs;

2\. It has no search engine (which is how it could monetize its user information); and

3\. Users of community-driven sites are notoriously fickle. There is _nothing_ preventing Facebook from being the next Myspace when something newer, cooler and hipper comes along and the users move on.

Early founders, employees and investors have obviously done _spectacularly_ well and there's a lot that Facebook has done right (all the more surprising considering the length of time and the age of Zuckerberg). It's also created an engineering environment that attracts and maintains top talent (although we'll see if that last once the stock plateaus, which is simply a matter of time). But would I be buying in the IPO? Not a chance in hell.

This isn't about predicting imminent doom. Facebook will be around for years to come. It's about the upside reward vs the downside risk. Facebook somehow is still considered a "growth" company and values as such (with extraordinary P/Es). This will at some point change (as it did for Google some ~5 years ago).

<comment><USER3> "I've said this repeatedly: Facebook is a high-risk proposition, particularly as an investment (disclaimer: I work for Google). "Intent" as other commenters have noted is a big part of the story but it's not the only story."

As a Google employee, what do you think of Google as an investment? If you look forward 5+ years, everyone is doing much of their internetting via their phone (certainly some or all of that will be web vs. apps-- who knows?). Google gains some extra data with searches, like location. So "pizza" searches get a LOT more targeted. But many searches do not.

The rub is that Google has near-zero ad inventory on mobile. You can't show 6 adwords ads, you can show 1. Additionally, consumer's bar for tapping an ad is MUCH higher (given the relative speeds of mobile browsing). As searching moves mobile, how does Google's revenue shake out?

<comment><USER4> I don't think that any Google employee is going to reply to your comment with advice. "As a Google employee, I say invest!" is not going to get you on the good side of the lawyercats.

What I think is interesting about Google is how much voting power the founders retain. Things like a campus of solar panels, space elevators, and self driving cars (not to mention Chrome and Android) make a lot more sense when you realize it's not "the shareholders" that want those, it's the founders that want those. Google is a company where two successful guys and several thousand of their closest friends (we like to think) can do whatever they want. Is that a good investment? I'll let you decide.

(Disclaimer: Google employee. And if anyone takes that quote at the top out of context... well, let's just say laywercat suggests that I don't put it in writing.)

<comment><USER5> "is not going to get you on the good side of the lawyercats."

I don't know of anything in particular that would prevent an employee of a company from posting a comment here or in a blog reply anywhere simply saying they thought it was a good idea to buy the stock that would warrant any action.

But lets say (since I don't have time to fully research this I'm basing my answer on many years in business and dealing with the Federal Government, lawyers etc.) that there is some law that makes this "illegal". The chance of the federal government, SEC or anybody caring about a comment like this is nil.

<comment><USER6> As an employee, it's not the federal government you'd worry about. It's your own company's lawyers, etc. You're much more likely to get in trouble internally for violating the company's policies about making statements related to the stock valuation than any outside entity.

Employees at Google (and many other tech companies) are often privy to what would be considered "inside information" about the company's future plans and performance. Making statements about the stock price's relative valuation can be seen as a form of making tips based on that material non-public information. It's not a good idea to go around making statements (positive or negative) about the current valuation.

<comment><USER5> "You're much more likely to get in trouble internally for violating the company's policies"

So is there a specific policy in writing regarding what you can and can't say? The issue certainly isn't revealing non-public information of a specific nature which is fairly obvious to keep under wraps.

I believe what matters is the amount of specificity. For example you can't say "Our earnings will be up this quarter so buy the stock". But you could say "I think we are doing well so I am buying the stock". Salesman, selling a product for a company, say, airplanes for Boeing are definitely able to make general sales like statements that could or could not be interpreted as a stock buying signal.

<comment><USER6> It's hard to make any kind of statement about the value of a stock without making an implied statement about future performance, given that most of the value is based on expected future outcomes.

Generally, the employee handbook of any public company will explicitly forbid employees from making statements that connect to either future performance or other major non-public info such as products or hiring. (If for no other reason than to protect the company itself from accusations that it's letting its people "pump" it's stock.)

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Facebook's root problem is intent. Users who are googling something and seeing AdWords ads are looking for something and often the thing they're looking for shows up as an ad so they - suprise! - click the ad and often become a conversion once on the site.

With Facebook there is zero helpful intent. The only intent when you're on Facebook is to use Facebook. And if you do click an ad, you're less likely to become a conversion because your intent is still to get back to Facebook as soon as possible and see the rest of Dave's party photos or whatever.

<comment><USER8> Intent is huge. I've never been one to click on Google Ads except in real rare instances. Only once I observed my mom using Google did I realize the full value of intent and google ads while searching.

She wanted to watch an episode of The Good Wife that she had missed so she searched in the Safari omnibar for "watch The Good Wife" and the first div under the search bar is an ad to some site that was not CBS that had the Good Wife available to watch via streaming video. To you and I, it's obvious that this "first result" is ad and we would skip over it to the first result. But to my mom, she thinks it's a search result and clicks on it. When she arrives on the site she thinks she's on the CBS site because they naively assumes like many consumers that the site showing the content would be CBS. She doesn't even think twice about the identity. When you are used to TV, you blindly trust that the site/channel showing the content is the correct one.

The only reason I discovered this was because she asked me to pull up The Good Wife to watch on CBS. I, being a savvier internet user, just navigated straight to cbs.com to search there. I got to their Good Wife site and lo and behold, there is no streaming video available on CBS, only teasers and behind the scenes content. I told my mom that "No, CBS doesn't have it on their site" and she was like "Yeah they do. I watch it all the time". I then asked her to show me exactly how she found it on CBS and that was when she showed me that she in fact was clicking on the ad in Google Search between the search box and the search results thinking it was in fact the first result. That's the power of intent and Facebook doesn't have that.

<comment><USER9> "That's the power of intent and Facebook doesn't have that."

Sure they do...

Status Update from malandrew's mom: "OMG I can't wait to watch the new episode of The Good Wife tonight!"

Facebook ads: "Click here to watch The latest Episode of the Good Wife"

Facebook could has something better than Google intent in that they should be able to predict what you intend to search for before you go looking for it.

<comment><USER10> Let me ask you something:

When you want to search something, do you first go to your facebook account and tell your friends "hey, I want to learn more about x!" and then go to your favorite search engine, and actually do your search?

I bet you don't.

In your example, if the mom is saying "tonight", it probably means that she wants to see it "tonight" (maybe she doesn't have the time right now). so, they should try to make the ad really visible that very night, so the user (this mum) will see it before she even goes to look for it anywhere else. But that would feel very creepy. She would think "how did they knew I wanted that?". It would feel like if someone is spying her. I think the average people is ok to have ads displayed while searching (maybe they will not even notice that some "results" are ads). But when the ads start having a very direct relation to what people posts, they start to worry about their privacy.

What I mean is... sure, facebook could infer the user intention, but in comparison, a search engine has it almost served.

<comment><USER11> Look up "retargeting". Creepily chasing people around the web is successful for advertisers.

<comment><USER12> It is a successful tool for ad networks to provide because advertisers pay more for it, I've yet to be convinced that it actually increases conversions. If I keep seeing an ad over and over again, I just get annoyed.

<comment><USER6> I've seen the number, it converts far, far better than average ads. On the order of 10X, for the campaigns I've seen. That's partially because clickthrough rates overall keep dropping, but still, they're really effective.

Yes, it's annoying if you're in the 95% of customers who won't actually convert. But it only has to be effective about 1 out of 20 times to be a huge improvement (and that 1 might even be you, but you're mostly annoyed by the other 19 times.)

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> Interesting side point: the WSJ article was on HN first (<http://news.ycombinator.com/item?id=3978537>) but Forbes's rewrite of it got all the upvotes because the WSJ article is behind a paywall.

<comment><USER14> Probably part of the business plan for Forbes. "Watch WSJ, anytime they have a hidden gem, rewrite it and send it out." Forbes did it with the target targeting parents to be article with the New York Times: [http://www.forbes.com/sites/kashmirhill/2012/02/16/how- targe...](http://www.forbes.com/sites/kashmirhill/2012/02/16/how-target- figured-out-a-teen-girl-was-pregnant-before-her-father-did/)

</comment></comment><comment><USER15> When you're close to an IPO you are very vulnerable to hard-ball negotiation tactics. This could easily be the endgame of 'reduce our rates or else'.

<comment><USER16> ... or Facebook ads don't work.

<comment><USER17> Probably Facebook ads not working.

Two of my friends run a wedding planning business. They gave up on targeted Facebook ads because they got MUCH better results using Adwords.

The ads were targeted to a nice big radius that included Lincoln, NE (a college town) and Omaha, NE (a big city, for NE). They targeted women in a specific age range, and if I remember correctly only women with a status of Engaged or In A Relationship. I think they may have aimed for relevant keywords as well. (I personally don't know the exact details of their ads, so I'm sticking to what I know for sure.)

I can't think of a more ideal targeted advertising scenario, and they got less traction on Facebook than they did via AdWords. That's either a REALLY bad reflection on Facebook's ad platform, or a really good one for AdWords, or both.

(Their business is doing really well, for the record.)

<comment><USER18> Your friends probably tried to do the same thing that they were doing on AdWords, but targeting people instead of keywords. (I am assuming here, so please correct me if I'm wrong)

This doesn't work because they have to approach the people differently; for wedding planning, I would instead do something along the lines of "read these 10 tips to keep your wedding amazing" or "use our free wedding plan tracker"

With an approach based on interest, your friends can educate people and get them thinking in order to follow up for more information. Instead of a hard sell, hit them with a soft one that helps them feel like your friends know what they need.

</comment></comment></comment></comment><comment><USER19> I don't think that's the case for everyone.

I work at a online advertising firm in DC specializing in political and non- profit work - mostly email list building, soliciting volunteers, awareness, etc campaign activities. We work with AOL, Yahoo, Google and Facebook, among many others.

I'm not a fan of FB's policies in general, but... We've found FB to be very effective - on a cost per acquisition basis, much more so than search advertising and on par with other vehicles.

Obviously, test to see what's effective for your needs, but I wouldn't rule out Facebook based on GM's experience. Cars are an unusually high involvement purchase, unlike most things people would be advertising.

<comment><USER20> Perhaps your firm has found Facebook effective because of its altruistic nature. People want to share great things that they are involved in: nonprofit work, political activism, etc. Advocacy for such issues and causes are something FB users probably want to share with their friends.

Meanwhile, I imagine that people don't really share things like "I really like the new model of the Cadillac XYZ!". Maybe they think that their friends will view it as shallow gloating; maybe you don't want to reveal the fact that you bought a new car.

Facebook revolves around "Sharing of information". Brands that have values that users want to share with their friends will do well. Those that can make users think twice about sharing (even if they really _do_ like the brand) may fare worse.

</comment></comment><comment><USER21> > GM spends about $40 million a year on Facebook marketing, according to the > Wall Street Journal, about $10 million of which is for paid advertisements. > It will continue to post relevant content about the company and its brands > on GM's Facebook pages.

The best marketing on Facebook doesn't make Facebook any money.

<comment><USER22> $30 million sounds like a lot for promoting a brand for free on one platform.

<comment><USER21> Direct follow up with people is expensive. From the WSJ:

> GM spends about $40 million on its Facebook presence. About $10 million of > that is paid to Facebook for advertising, the rest covers content created > for the site, agencies that manage the content and daily maintenance of GM's > pages, people familiar with the figures said.

<comment><USER23> That is insane. Only a bloated bohemoth could manage to spend $30 million on its Facebook-focused HR people.

I admit I've never worked at GM, so if someone can tell me why I'm wrong, please do.

<comment><USER24> Their page has (roughly) 300k followers. That's $100 per reachable user per year, which is insane.

If they were using that additional $10mm to get the 300k followers to begin with, that's an even worse indictment of FB advertising for traditional brands.

<comment><USER25> Remember that they don't have just one brand on Facebook. For example, they have 1.3 million followers on their Chevrolet page. They have 1.1 million for Cadillac. 400k for Buick. 660k for GMC. 525k for OnStar. 350k for their "TeamChevy" Chevrolet racing page. Now, there's sure to be some overlap there; but that's still easily 2 or 3 million followers.

That's a factor of 10 more than you were estimating; and that's just based on a quick poll of brands that I took a look at.

</comment></comment></comment></comment></comment></comment><comment><USER26> It really depends on what you are trying to sell. It's pretty obvious that car ads would work better on Google: when you are in the market for a new car, you'll definitely google review sites. A perfect hint to start showing car ads.

I don't think Facebook has the data yet to detect that you are about to buy a car. If you start liking car reviews, maybe, but that's not a typical behavior.

For other products (especially the ones you didn't know you needed), Facebook beats Google hands down. So don't pass judgment one way or another too quickly.

<comment><USER27> You're confusing branding with direct call to action advertising. Two complete different things and priced differently. Big brands aren't going for the people about to buy a car, they are working way before that. By making you see the brand day after day it becomes ingrained so that when you are ready to buy a car you think GM.

<comment><USER4> Sure, because with traditional media, that was the best they could possibly hope for. In today's world of online comparison shopping, though, brands can easily close the deal for you with one click. (The fact that you can't buy a car with one click shows how hopelessly behind the industry is.)

It is not necessary to have an image of a brand planted in your mind before a purchase. It only matters that you're guided towards the brand when you are ready to buy. Advertisers were happy with a "brand image" before because it was the best they could do. But these days, it seems almost worthless.

<comment><USER28> _(The fact that you can't buy a car with one click shows how hopelessly behind the industry is.)_

Cars are, for most people anyway, the kind of really large purchase that requires a lot more effort and deliberation, not to mention financing, than makes sense to do in one click.

<comment><USER26> Until someone gamifies car purchasing, so that when I get 10,000 facebook points, I can redeem for a discount at my local GM dealership. Now that would be a great source of leads for car manufacturers.

<comment><USER4> Whoa, "dealership"? That's the part of the equation that everyone wants gone.

<comment><USER29> Who buys a car without sitting in it first?

<comment><USER28> I would love to decouple the showroom (sitting in the car, test drive, whatever) from the dealership. If a car manufacturer were to create a space were I could spend some quality time with the car without any threat of encountering a commissioned dealer, I would love it.

Then, I can choose where and how I buy the car later. The manufacturer would benefit from this no matter how I buy the car. Keeping these "shark-free- showrooms" stocked with demo cars, coffee, pastries, and branded swag would just be a general marketing expense.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER30> I certainly didn't have a $10MM spend, but I also had dismal results for my B2B campaign. My takeaway is FB is purely a social place where people unwind and don't want to do any 'work' -- whether that is considering a product for their job, or the effort involved in considering a large purchase as rio517 mentions.

<comment><USER31> Any thoughts on better choices for advertising B2B offerings? Has anybody here tried LinkedIn for that, for example?

<comment><USER32> Google AdWords?

<comment><USER31> Sure, that seems to be the default for most things, but I guess what I really meant to ask was more about specific sites that do their own ads, outside of Adwords. I'm guessing industry vertical sites are good for B2B, but I'd love to hear about other folk's experience in that regard.

</comment></comment></comment></comment><comment><USER33> I wasn't under the impression that advertising (for a company like GM) was supposed to "work" in any easily measurable way. Especially not $10million of a budget which, though undefined, is clearly large if they are trying to cut $2 billion from it.

I think that to measure the efficacy of a GM ad based on the same measurable activity that you'd measure an ad for (say) a T shirt company is probably a bit misinformed. No one is checking to see if anyone clicked on GM and subsequently bought a Cadillac.

A lot of the comments on the original article seem similarly misguided. ("I NEVER CLICK ON THE ADS I HARDLY EVER NOTICE THEM.") The McDonalds logo on the back fence of a baseball field isn't to convince you to walk over to it and do something. It's so that later when you drive by McDonalds you "decide" to stop.

</comment><comment><USER34> The thing I don't understand is how can they say facebook ads don't work and even be sure of this, given that, as others have pointed out, they aren't going for a "conversion" as the purpose of the ads is branding, so that people think of their brand and eventually may buy a car made by them. They do other forms of advertising for branding, including TV ads, radio, billboards, etc so I don't know how its possible to pinpoint one channel of advertising (facebook) and say its not helping them with branding.

My guess is that they have an expectation of having more user feedback and involvement from this form of branding (people clicking the ad, filling out some bullshit form so they can bombard them with marketing material, etc), however the nature of the product may preclude itself from this sort of consumer behavior because people don't buy cars very often they may not feel compelled to engage with the brand, however seeing the ads on facebook could potentially have the same "branding" effectiveness as TV ads yet they really have no way of measuring this.

</comment><comment><USER35> Am I the only one that thinks there's a really big advertising/personal data mining bubble that's ripe for popping?

<comment><USER36> No, I sort of agree with you. There seems to be a lot of excitement about how valuable targeted advertising is (once more.. this happened back in the 90s as well..). Social media "managers" popping up in every company, and being paid rather well. (while this should just get filed under PR)

</comment></comment><comment><USER28> I've actually been interested in a handful of things I've seen as Facebook ads. They are generally things that I didn't know existed, wasn't actively shopping for, and sure as heck wasn't searching for. Example: <http://www.mushroomnetworks.com>

If anyone is going to get any sort of value out of the wealth of information I've given away about myself, it's going to be the person who opens my eyes to something new and awesome that speaks to my... unique tastes.

GM can't really be new or awesome anymore, and that's OK.

<comment><USER37> I agree, and I think that the Facebook ads with the highest potential are for products that fall in the disposable income/non-considered purchase/splurge categories.

I'm not likely to see an ad for a GM product and immediately run out and buy one (and I'm guessing this is true for 99% of Facebook users). But I have seen ads, and posts by friends, for random products in the $10-$500 range related to things I didn't necessarily need (or know existed), that HAVE influenced my purchasing decisions.

Facebook is a new and different advertising channel, much like Google and Internet ads were before it, and companies and agencies need to adapt accordingly to this.

If you've been around long enough, you might remember stories from the late 90's from companies that both swore by, and swore off, Internet advertising...

</comment></comment><comment><USER18> That's a $10m account of money wasted by unimaginative people.

You can go nuts with FB ads, you just simply have to get past the notion that it works the same way as every other medium. Unlike AdWords, where you bid on someone searching for "Cadillac SRX" in San Jose, FB is all about inception of interest.

The goal is to create intent in people through innovative ways; the people that spend the millions and keep doing so are the ones who actually, you know, _come up with something new_.

This is the same story as Google AdWords back in the day.

<comment><USER38> "This is the same story as Google AdWords back in the day."

Not really, adwords pretty much worked from day one, bid for placement was inspired by the goto.com paid search engine model which was minting money back in the 00s if I remember correctly.

<comment><USER18> It worked, but people still panned it. FB is the same way :-/

<comment><USER39> I don't remember anybody panning it. I'm probably an outlier[1], but do remember a friend of mine going from broke to making a good living off it through affiliate marketing within 3 months.

[1]Early on he quickly became one of Google's biggest customers, even working alone. He was invited to the first Google Zeitgest. These days he spends in the multiple tens of millions per year on Google.

</comment></comment></comment></comment><comment><USER40> Timing of this announcement is indeed somewhat _awkward_ ...

<comment><USER41> How so?

<comment><USER42> Facebook has a imminent IPO.

</comment></comment></comment><comment><USER43> My limited experience is that Facebook ads, for whatever reason, don't end up costing that much, whereas it's easy to piss tons of money away with Adsense. So I'm happier with the former.

</comment><comment><USER44> The real value of Facebook will be when they release their ad network to compete with Adsense/Adwords. Facebook is more valuable as a vehicle for collecting user data than displaying ads.

</comment><comment><USER45> Either they're doing it wrong. (likely)

Or their customer is difficult to target on FB.

We (a quickly growing clothing company) see an amazing ROI from FB ads. We also have around 350k Likes. We advertise to friends of friends, and target similar companies, fashion companies etc.

I am betting they simply haven't found the best tactic.

</comment><comment><USER46> This is huge.

Why?

Because the auto industry was one of the earliest and remains one of the heaviest users on online advertising.

If any industry knows a thing or two about online advertising, and has been willing to experiment, it's the auto industry.

Facebook is in big trouble, as a "business".

</comment><comment><USER47> There is no such thing as a surefire ad so saying Facebook ads don't work as a broad statement is misleading. Facebook ads don't work for GM the way they thought it would to accomplish their goals but they certainly work for many other companies. The problem GM has as well as most marketers is that they are comparing it to their traditional marketing channels and using those metrics to judge Facebook ads.

You also shouldn't use the number of followers as the addressable audience for the brand, the whole point of social is that messages are amplified through the network effect out towards a much larger reach of users. One user who likes one of your posts or comments on it may mean hundreds of friends seeing it show up in their subsequent feeds like "YCombinator reader just liked GM's Blah Blah".

Everyone's right below that if you're using it as a direct marketing channel, you'll most likely see failure because people want to stay on Facebook. Think of it as a way to stay engaged with your audience and as a one time investment for the ability to message to them again and again in the future. Facebook ads also work much better when you tie them to your Facebook presence vs. trying to send someone off Facebook to your site. GM should have thought of more creative ways to leverage the Facebook app platform to promote on-Facebook activities that drive brand value and help promote their new cars/trucks. For example, how about a contest on Facebook using an interactive car designer to design a GM that also allows you to upload custom patterns for the paint job. If it's two things people like on Facebook it's self-expression and contests.

</comment><comment><USER48> Facebook excels at advertising things people don't search for (and thus for brand advertising as well).

Google excels at advertising things people do search for.

<comment><USER21> Excel is a bit kind, Facebook is still trying to figure out advertising well enough to justify it's current valuation.

</comment></comment><comment><USER49> I hardly notice Facebook ads. However, I think the smaller your company, the larger Facebook ads may have an impact.

</comment><comment><USER50> The thing is, they don't. They really don't. I hardly even notice them, like there's some kind of mental block that prevents the brain from perceiving the ads. Same thing applies to Google ads, I completely ignore them. Has anyone else noticed such behavior in themselves?

<comment><USER51> Me too, for the most part I'm almost totally oblivious to them. I don't even bother with an ad blocker. I suppose it's the result of being bombarded with ads all my life, I'm immune to their charms.

</comment></comment><comment> throwaway63-90 Imagine you have somethng to sell, I have the ability to place ads in people's homes via their electronic devices and I give you the choice of placing an ad for your product in one of two places.

You can place the ad into everyone's photo albums so that when they are flipping through photos they will see your ad.

Or you can place your ad in everyone's telephone book so when they are looking up the contact information for some source of some product, they will see your ad.

Which one would you choose?

Of course, in the real world, advertisers can choose both. They will advertise both on Google and Facebook.

And sure, it matters what the product is.

But overall which do you think is more valuable?

</comment><comment><USER52> With a click-through rate of about 0.051% on Facebook ads [1], I'm not too surprised by this. They also made some changes over the past month to their ad payments, in particular removing the option to manually set your CPM (which is the only option to pay to promote your fan page - it's CPC for an external site). So put together a poor CTR and losing some control over how much you're spending, and this is what happens.

[1] [http://www.kikabink.com/news/facebook-ad-click-through- rates...](http://www.kikabink.com/news/facebook-ad-click-through-rates-ctr- are-half-industry-average/)

<comment><USER53> Hey,

That's not true, you can do either CPC or CPM for any kind of facebook ad; what they did do is replace the CPM functionality (which btw, is still available if you use a third party ad tool with facebook) with an "optimized CPM" which auto-bids for you according to what results you want to get.

You can still set a manual max bid though :)

<comment><USER52> Thanks, I'll have to look into the third-party tool option. Mostly I've been running ads with external links and it would only let me do CPC, but I did do it all thru fb's dashboard.

</comment></comment></comment><comment><USER54> I'm surprised as to why Facebook isn't looking in other sources of income instead of ads. Like e-commerce for example. Providing a platform for the gazillions of small to medium companies that already have an account would be IMHO a more wise decision. Or build an analytics platform and combine it with real time demographics and blow the competition away. I'm sure there are dozens of ideas as to what they could build and still we don't see anything innovating.

But then again perhaps their problem is intense scaling. With 800M users even the simplest idea becomes cumbersome in developing.

</comment><comment><USER55> I can't help but recall all these Anti-Baldness treatment ads I get on my facebook all the time - I truly believe the only thing that triggers them is my being a 31-yo male (note - I will probably never need these treatments, ).

My suspicion is that either the GM advertisers are complete muppets, or Facebook's offering in self-service targeted advertising simply isn't sufficiently good at catering to this specific market's needs.

</comment><comment><USER56> I think everyone I know uses, checks, updates, posts to Facebook using their mobile phone or iPad/Android tablet. Almost no one I know actually visits the website.

It's been a while, but last I checked the clients for these devices don't even have ads in them. If this is the case, I would wager that no one is seeing these advertisements even if it is one of the largest most visited sites in the world.

</comment><comment><USER57> Its obvious that Facebook ads don't work. How often you see a relevant Ad in Facebook? Almost never. So, advertisers show interesting images, but when you click on that image, it is some non-sense website. Facebook has some private information about the user, other than that FB has no clue what is my mood or what I am looking for. Its no wonder GM pulled out of Facebook.

<comment><USER58> This is really not my experience. My facebook ads are so relevant that they almost seem like a useful service at times. It knows a few of the things I'm interested in thanks to who I'm friends with or pages i've liked or whatever - so I see ads for RC planes, chess software, local restaurants... the ads seem both more relevant and less spammy than my google ads.

<comment><USER57> This is interesting. I only "liked" friend posts or pictures. May if I "like" more direct things like restaurants, brands, facebook may be able to provide me a better "ad" experience. But, its good to know that it works for some people.

</comment></comment></comment><comment><USER59> One day later, Berkshire Hathaway announced that it has been buying 10 million shares of GM stock over several months.

[http://www.mlive.com/auto/index.ssf/2012/05/warren_buffetts_...](http://www.mlive.com/auto/index.ssf/2012/05/warren_buffetts_berkshire_buys.html)

</comment><comment><USER60> Banner ads are a relic of the 90s. I fully expect facebook to discontinue them eventually.

Because who cares if ads don't work? GM just endorsed sponsored content (to the tune of $30M, no less), a form of advertisement facebook can easily serve to their ever growing mobile user base.

<comment><USER61> Also, I'm not sure GM's marketing dept. is experienced in advertisement for online media

Sure, it's easy to advertise on FB (or Google Ads). It's a whole different story to make it effective.

Take Google AdWords. If you don't optimize your strategy you'll have a high CPC (cost per click), will probably pay for ineffective words. Also, there are changes you can do to your content (being advertised) that affect your CPC.

<comment><USER62> GM isn't a mom and pop. They engage marketing agencies who certainly know what they're doing.

<comment><USER61> They certainly aren't mom and pop but it doesn't mean they are up to date

They may keep an old agency just for the sake of it, who may not be specialized in modern medias

And they can hire the best people for internet marketing just to end with their campaigns not approved by GMs marketing department, having to get something conservative (hence, ineffective)

</comment></comment></comment></comment><comment><USER63> This might have much more to do with GM than it does with Facebook. It doesn't matter how much money you plunge into ads, which ad platforms you use, and how targeted the ads are if nobody wants your product.

<comment><USER64> General Motors was the number one selling auto company in the world in 2011 with 9.025 million units sold, outselling second place by a full million.

I know plenty of people that will never buy a GM, regardless of their advertising. However, advertising is crucially important to GM success.

</comment></comment><comment><USER65> Maybe the problem is with GM and their cars and not Facebook

<comment><USER66> Bingo.

</comment></comment><comment><USER67> LOL, and rain is wet. The day a start-up comes with a reliable way to measure the true efficacy of online ads, no one will want to invest a penny in them.

</comment><comment><USER68> The timing might not be significant. Would anyone have cared that GM saved 10 million months ago? Probably not. But its a good story around IPO time.

</comment><comment><USER39> I think the more relevant data point is that they spend $30 million on their Facebook presence. Facebook appears to have reinvented the AOL keyword.

</comment><comment><USER69> Who is to say that GM didn't pull ads from Facebook so they could short sell the Facebook stock and earn their $10 million back? Why not?

<comment><USER70> That would be absurd. Anyone who would propose something like this at a GM board meeting would be marched out with all their personal belongings in a cardboard box.

</comment></comment><comment><USER71> Most people I know block ads on Facebook. It's hard to sell a product (eyeballs) when the eyeballs circumvent the tech!

</comment><comment><USER72> The only reason I would buy facebook stock is to sell it to fools at a profit. Enron is a better long term investment.

</comment><comment><USER73> what did GM hope it would accomplish by advertising on facebook? Unless they are offering a discount coupon for 50% off their next GM car, facebook users wouldnt care. did they hope facebook users would be more inclined to buy GM vs a foreign car? if that is the case...i have bridge i would like to sell you.

<comment><USER62> _did they hope facebook users would be more inclined to buy GM vs a foreign car?_

Is there something particularly unique about Facebook users? Is it some niche group?

Of course not. It's a cross-section of demographics.

And among normal people, yeah most _do_ choose to buy a GM car. I have a nice GM SUV -- fantastic vehicle. I see a lot of people are cludging out the dated "durr GM bad" nonsense from the 90s.

</comment></comment><comment><USER74> If $10mil of the total is on ads, what is the breakdown of the other $30mil in spending on facebook marketing?

</comment><comment><USER75> I'm tempted to wonder why this announcement is made two days before Facebook goes public.

<comment><USER76> dump and pump

</comment></comment><comment><USER77> All this will be moot when Facebook launches its search engine in couple years.

<comment><USER78> It takes time to actually build a search engine - you just can't get up and say you're gonna build one. Even if you somehow bring in a partner like Bing. Google has been fighting spammers, scrapers, black-hatters, and thinking about all kinds of search problems for over a decade.

<comment><USER77> _Google has been fighting spammers, scrapers, black-hatters, and thinking about all kinds of search problems for over a decade._

Same could have been said of Yahoo and other search engines before Google.

<comment><USER78> yep, and they failed.

<comment><USER77> Eventually every company fails.

</comment></comment></comment></comment></comment><comment><USER79> Saying Facebook advertising doesn't work is like saying display ads don't work. Sure, the closer you are to the transaction the more value you provide:

\- Facebook: CPM - bill boards : consumer in the position to buy, but not given it much thought

\- Google: CPC - yellow pages : consumer in the position to buy and is actively looking

\- Groupon: CPA - re-seller : consumer has decided what to buy and is purchasing

But whilst Groupon can provide more value, the pool of potential consumers it can reach is smaller. Same with Google (informational queries only). Facebook reaches the consumer in the very early stages of the purchase-funnel, before there is clear "intent". Same as bill-boards, display ads will always have value - after all advertising is about making us want something we haven't already planned to buy, otherwise its wasted cash (think groupon vouchers sold to existing customers). And whilst the conversation rate (clicks) on Facebook ads will naturally be lower, there are many more customers at the pre-intent stage (everyone in the world).

Sure a display ad for a Ford may not have great immediate conversion rate (clicks). What about a bill-board or a magazine ad? Yet do they have no value? If I would be considering purchasing a car within the next year, but not actively searching for one, then an image of some appealing product would actually get stuck in my head, and when I come to search for a car on some price comparison site - it just might be a Ford I saw a few weeks ago.

Each of these models have issues though:

\- Groupon - a large number of buyers are already existing customers. GroupOn is only necessary because there isn't a platform for merchants to issue their own vouchers. If there was, they could advertise those vouchers on Facebook/Google and not pay groupon their brokering fee.

\- Google - provide a free yellow-pages service. Instead of an alphabetical listing they aim to provide the "best" results first, so the only way to make money is to display ads next to those results for companies that haven't made it to the top. Why would anyone select those companies? The only reason I can think of is if these companies offer temporary aggressive discounts like on Groupon. If G displayed "sponsored ads" as banner ads so people wouldn't get fooled into thinking it's a result - would anyone still click on them?

\- Facebook - unlike a magazine which has associated readership with a particular set of interests (eg car enthusiasts) - everyone is on Facebook. A niche social network for car enthusiasts would get a better ROI for GM then blasting their cars at everyone in the world. Need more single girls from NYC in the age group of 20-25 to join your dating site? Facebook will probably deliver great ROI there cause it can target ads by all these attributes.

Facebook has to expand its targeting capabilities, and that means gathering more data: my interests, my income, estimated net worth, what car I drive, where I live, who I have my mobile contract with, etc. If FB knows that I just graduated and got a job that pays enough to lease a Ford, and my commute time to work is over an hour - GM would probably get a decent ROI. If I visit enough car-related websites with the "Like" button on there, Facebook should know I'm interested in cars.

As Facebook builds a more detailed profile of me - it will deliver ads that _predict_ my purchase intent, and in theory, that's a great position to be in.

In practice, I think people prefer to "pull" ads rather than having them pushed at us. The old broadcasting model of advertising was necessary when people couldn't poll the world for "whats the best car in my price range". As more information becomes available, people won't need companies telling them which products to buy. Think of Amazon - you don't purchase based on ads, but based on reviews and ratings from other people. Humans have become much more connected and knowledgable when making purchasing decisions, so ads matter less and less. I don't remember the last time I bought anything because of an ad, instead I read reviews left by other people. The advertising-intermediary is no longer necessary, businesses simply need to create great products. And Facebook is a great product - for sharing photos, keeping track of friends and killing some time. I wish they'd concentrate on making that product better, and I'd happily pay $1 per month to use it. Even at $1 per year - they would make as much as they currently do from 1 billion people. What will make me leave Facebook is the ads in my newsfeed, not the 1 buck a month I'd have to pay. My time is more valuable than $1 / hour, so if I decide to waste several hours on Facebook a week - then I can certainly afford to pay $1 / month.

</comment><comment><USER80> GM Says Facebook Ads Don't Work, For A Car Company....

</comment><comment><USER81> GM kindof has their work cut out for them on facebook. Most of facebook isn't looking for a new car (maybe a used one) and the facebook moms aren't exactly stoked for GM cars.

<comment><USER82> I think a better question is how GM measures the effectiveness of their campaigns on Facebook. Its not like you can track the conversion rate from ad click to car buy.

<comment><USER83> I'd imagine that they're doing a form of A/B testing geographically. All other things equal, its easy enough to only do an ad campaign within a certain radius of a dealership and measure the change in that dealership to others in the state.

</comment></comment></comment><comment><USER84> Hey GM, your FB ads don't work because no one wants to buy your cars. $45k for an 'electric' car that goes 15 miles on electricity, nice product.

</comment><comment><USER85> You wouldn't download a car?

</comment><comment><USER86> +1

</comment><comment><USER87> I bet if GM made more sociable* cars, they would pay a lot MORE to advertise on FB. I'm not saying they should be making sociable cars: I'm just saying GM doesn't necessarily have much overlap with a social experience like facebook. (Neither do loads of other necessary products, like toiletry items, apartments and houses, insurance, etc etc etc.)

Lots of products (and services, experiences like Disneyland or baseball tickets, a local bar, etc) are still very social by their very nature, and a much better match for facebook advertising.

Note: I say this as someone who doesn't know anything.

* <http://www.thefreedictionary.com/sociable>, definition 2

</comment><comment><USER76> Facebook is far to useful to the Government to go anywhere. I bet GM knows this, I suspect a case of "dump and pump"

</comment><comment><USER88> Maybe nobody is interested in GM cars...

<comment><USER89> That would be very odd considering the large number of brand new GM cars and trucks I keep seeing...

</comment></comment><comment><USER66> The better educated you are, the more likely you won't consider GM to begin with .

(purely a guess based on anecdotal evidence ... the only guy I know with a Cadillac STS was a guy who only has high school and was a well-compensated salesman; but even he is now driving Audis)

<comment><USER48> Wow is that ever a gross generalization.

That's based pretty heavily on your personal social circle, I suspect. It doesn't match with mine at all.</comment></comment>


Array Iteration Interview Problem - <AUTHOR> http://blog.jazzychad.net/2012/08/01/array-iteration-problem.html <comment><USER2> > _Lots of people do this, which is fascinating to me, to handle the negative > n case_

It makes sense, because performance differences between that and the "optimal" solutions are usually negligible, and the "optimal" solutions aren't usually optimal when you take into account readability and maintainability.

Embedded development is significantly different than developing for the web. Buying more servers is usually more efficient than taking twice as long to develop and update code. Interviewing with people who refuse to acknowledge this is extremely frustrating.

<comment><USER3> Performance differences are anything but negligible. In the case of the "billion elements", you are now spending the majority of time for reversing the array twice.

As a programmer you should always know what kind of cost you are incurring, both asymptotically and down to cycles.

Trying to condense all the cases into one (using reverse or local state like 'step' from OPs version) is what hurts readability and maintainability.

Also, the "buy more metal" argument is hardly applicable for implementing this one way or another. Its an argument for using whatever platform you are most productive in.

<comment><USER4> > As a programmer you should always know what kind of cost you are incurring, > both asymptotically and down to cycles.

No, as a programmer, you should _be able to determine_ what kind of cost you are incurring _when it matters_ , and much more importantly, you should be able to determine when it matters and when it doesn't.

</comment></comment></comment><comment><USER5> My python solution, with commentary.

First step: the increment requirement, the in place requirement, the short circuit requirement, are all the same thing. So, break that part off.

        def addl(list, target, n):

            indexes = lazy_find_n(list, target, n)
            for index in indexes:
                list[index] += 1

The general purpose for loop gives me the willies.

        for (var i = start; i != stop; i += step) {
          if (arr[i] == val) {
            arr[i]++;
            count++;
            ...

What is the difference between i += step, arr[i]++, count++? Are you absolutely sure your start, stop, step & count won't over run your array boundaries? Are you willing to bet control of your users, CPU instruction pointer? What if a new requirement is an operation besides increment? What happens when the next guy, implementing the new operation, isn't as careful with his loop/subscript conditions? (end rant)

Second step: create a lazy_find_n() which returns an iterator of the indexes of the list items we want to modify.

        from itertools import ifilter, islice

        def lazy_find_n(list, target, n):
            # generate indexes in desired direction
            if n >= 0:
                indexes = xrange(len(list))
            else:
                indexes = xrange(len(list)-1, -1, -1)

            # filter indexes for items matching target
            indexes = ifilter(lambda i : list[i] == target, indexes)

            # only as many as requested
            if n != 0: indexes = islice(indexes, abs(n))

            return indexes

Since xrange, ifilter and islice return iterators, the value of indexes is computed only as needed. That is, if islice only returns a 2 item iterator, it doesn't matter how many items the iterator from ifilter would have returned, as long as there are at least 2. (If there are less, islice returns less.) Furthermore, the iterator from xrange only processes until ifilter, and islice are satisfied.

</comment><comment><USER6> Here's my second Javascript draft. I intend to refactor it tomorrow so that the three if branches are unrolled into their own functions. Especially since some bizarre facet of Javascript's type coercion makes it impossible to do early returns inside the iterator function ([] << 1 somehow comes out as 1, not [1]).

[https://github.com/austinyun/challenges/blob/master/array- it...](https://github.com/austinyun/challenges/blob/master/array-iteration- interview-problem/add1.js)

        function increment_where_pure(array, match, n) {
            var count;

            function iterator(f, acc, item) {
                // f is the function used to combine array arguments -- push || unshift
                if (count === 0) {
                    f.call(acc, item);
                } else {
                    if (item === match) { item += 1; }
                    f.call(acc, item);
                    count -= 1;
                }
                return acc;
            }

            if (n === 0) {
                return _.map(array, function(item) {
                    return item === match ? item + 1 : item;
                });
            }

            if (n > 0) {
                count = n + 1;
                return _.reduce(array, iterator.bind(null, Array.prototype.push), []);
            }

            if (n < 0) {
                count = -n + 1;
                return _.reduceRight(array, iterator.bind(null, Array.prototype.unshift), []);
            }
        }

</comment><comment><USER7> I've posted and deleted this a few times, since I keep rethinking it. This is a Lua version, and I'm pretty new to Lua (it's good practice). No reverses needed; just numeric for loops.

I'd rather keep n = 0 as a separate case since it doesn't need to consider a break point or a count variable. The test - Is n 0? - happens once and by including it, you can omit a lot of pointless tests - Am I at the breakpoint? - and increments - Add another one to count. Those tests and increments seem much worse than the single test - especially if the array (a table in Lua) will grow to very, very large sizes.

But I would be happy to hear if I'm looking at it wrong or missing a good trick in Lua.

        function add1(t, val, n)
            if n >= 0 then
                start = 1; stop = #t; step = 1
            else
                start = #t; stop = 1; step = -1
            end

            if n == 0 then
                for i = start, stop, step do
                    if t[i] == val then t[i] = t[i] + 1 end
                end
            else
                break_point = math.abs(n)
                count = 0
                for i = start, stop, step do
                    if count == break_point then break end

                    if t[i] == val then
                        t[i] = t[i] + 1
                        count = count + 1
                    end
                end
            end

            return t
        end

</comment><comment><USER8> I changed the interface to what I think it's more 'Ruby'. If you are looking for in-place solution, we should use the ! to indicate it's more 'dangerous' than the other solution which returns a new copy.

I'm new to Ruby so I'd love to hear feedback from other more experienced Rubyists on HN. (And I couldn't find reverse_each_with_index so I had to write my own.)

<https://github.com/tpun/add1/blob/master/add1.rb>

</comment><comment><USER9> While the implementation of this would be pretty straightforward, the method signature you're asking for seems convoluted, in my opinion. Here's why:

\- "add1" is not very descriptive of what the method actually does, since it adds one, but only sometimes. This title makes it sound like the method simply increments each value by one.

\- When you say "if it is zero, do this, but if it is positive, do this...", this thinking creates a "secret handshake" in your code, so a new developer would have to read the method in depth to understand what it does in each case.

\- If this method will have widespread use in your code for arrays, consider extending the array class with the method, so that you can call it directly on an instance of an array.

I propose you change the method signature to:

      increment_where_value_equals(value, options = {})

So you could call it like:

      increment_where_value_equals 1, { :direction => :forward, :limit => 2 }

or even like:

      increment_where_value_equals 1

While the implementation may get a little more complicated this way, you're making the method signature much more clear and descriptive, which will lead to better code overall.

</comment><comment><USER7> > Are you using iterators like .each or .map, or are you using a normal, > index-based for loop?

I doubt you mean anything very judgmental by 'normal', but this still jumped out at me. In Ruby an index-based for loop is pretty unusual. The for loop is non-idiomatic, and it also has a scope leak: <https://gist.github.com/3232118>.

<comment><AUTHOR> hmm, my apologies if that sounded judgmental. I started coding a long time ago, so doing for loops was a very fundamental part of learning how to code. I (incorrectly?) assumed most people learned that form of looping first.

<comment><USER7> Again, I didn't really think you were being judgmental. It's just that in Ruby, the for loop definitely doesn't have pride of place at all. You're may be right that most programmers learn languages where for is more common, but I wonder about people who start with Ruby. That is, do they think for is weirdly primitive when they start doing Javascript?

Anyhow, no offense taken at all. But I would be shocked if any Rubyist _did_ use for.

<comment><USER10> Even in languages like C# the standard for-loop seems to be heading in the direction of being considered harmful. Its status hasn't gone nearly as far along the path as for Ruby, but the tide's turning that way.

As far as creating a new array (or several new arrays) goes, there are some new considerations such as composability that are starting to be valued more highly than efficiency. And pure functions are more composable than ones that mutate the existing data.

Granted, the n < 0 case could still be handled in a way that's more efficient but still pure by allocating an array and filling it backward rather than using two reverses and an iterator.

</comment></comment></comment></comment><comment><USER11> Please never actually write code like this!

Here's my C version. :)

        #include <stdio.h>
        #include <stdlib.h>

        #define NELEMS(x) (sizeof(x) / sizeof(x[0]))

        void add1(int* arr, size_t size, int val, int n) {
            if(!arr || size == 0) return;

        #define add1_start ( n >= 0 ? 0 : size-1 )
        #define add1_end (( n >= 0 ? i < size : i >= 0 ) && ( n != 0 ? inc < abs(n) : 1 ))
        #define add1_iterate ( n >= 0 ? ++i : --i )

            int inc = 0;
            for(int i = add1_start; add1_end; add1_iterate) {
                arr[i] += (arr[i] == val ? ++inc, 1 : 0);
            }
        }

        void test(int val, int n) {
            int arr[] = {1,4,1,5,1};
            add1(arr,NELEMS(arr),val,n);

            for(int i = 0; i < NELEMS(arr); ++i) {
                printf("%d ",arr[i]);
            }
            printf("\n");
        }

        int main() {
            test(1,0);
            test(1,2);
            test(1,-2);
            return 0;
        }

</comment><comment><USER12> My Python solution:

        def add1(arr, val, n):
            it = xrange(len(arr))
            if n < 0:
                it = reversed(it)
                n *= -1

            found = 0
            for i in it:
                if arr[i] == val:
                    arr[i] += 1
                    found += 1
                    if found == n:
                        break

            return arr

<comment><USER13> One for ruby 1.9:

      def add1(arr, val, n)
        limit = (n == 0 ? arr.length : n.abs)

        enumerator = (n < 0 ? (arr.length-1).downto(0) : (0).upto(arr.length-1))
        enumerator.each do |i|
          if arr[i] == val
            arr[i] += 1
            limit -= 1
          end

          break if limit == 0
        end
        arr
      end

</comment></comment><comment><USER14> Chicken Scheme:

      (use vector-lib)

      (define (add1 vec val n)
        (define *clone* (vector-copy vec)))
        (define fold-using (if (>= n 0) vector-fold vector-fold-right))
        (define (substitution-of total-replacements value)
          (define replacements-left (if (= total-replacements 0) (vector-length vec) (abs total-replacements)))
          (lambda (index mutable-vector current-element)
            (if (and (= current-element value) (> replacements-left 0)
              (begin
                (vector-set! mutable-vector index (+ 1 current-element))
                (set! replacements-left (- replacements-left 1))))
            mutable-vector))
      (fold-using (substitution-of n val) *clone* vec))

I don't like that I have to make a copy of the vector though. Maybe unfold ...

</comment><comment><USER15> > _My background is mainly in embedded systems programming. My main concern > when I code is for speed and efficiencey, both in runtime and in memory > consumption._

Do you specify this to your candidates when they write their code?

This is the thing that annoys me most about interview programming questions. If you don't give me constraints, I am going to implement a naïve version of your requirements, because you have not given me any additional criteria by which you are going to judge my code.

Knowing things about what sorts of inputs the method has to expect (should I assume that i'm going to encounter a billion elements or not?) is really important to judge correctness of fit, or whether you're just wasting your time thinking about cases you'll never encounter.

<comment><USER16> Part of being a good developer is teasing the constraints out of the customer. You're never going to be handed a perfect requirement. If you're not given constraints don't get annoyed, simply ask about them.

<comment><AUTHOR> Precisely. I also say, "This is a very open-ended question in which I am intentionally vague on some points. Ask me about information you want or points you need clarified."

Like I said, I have no desire for them to create the "perfect, correct" solution; but I do want to know how they think about a problem and what questions they ask in the face of deficient information. I proactively encourage them to do so, so I am not trying to trick them into failure or anything.

<comment><USER4> A problem with entirely made-up domain-less questions like this is that any additional constraints are equally as arbitrary as the question itself, and thus difficult to probe for in the same way that someone would probe a customer for constraints to real problems.

It seems like you're very interested in people asking questions like "how big might the array be" or "what order of time can you afford to wait for the answer to this", to which you might answer "a billion" or, "as little as possible", but those questions are very different and less meaningful than questions like "how many users will this system have", and "how much time can users of this system afford to wait for a response", even though the answers may be the same.

</comment></comment></comment></comment><comment><USER17> Here's my 10-minutes-of-thought JavaScript implementation. I was going to do Ruby until I realized how long it's been since I wrote any Ruby.

I only got it down to 2 cases

        function add1(arr, val, n) {
          var m = 0, i;

          if(n > 0) {
            for(i = 0; i < arr.length && m < n; i++) {
              if(arr[i] === val) {
                arr[i]++;
                m++;
              }
            }
          } else {
            for(i = arr.length; i >= 0 && (m !== n || !n); i--) {
              if(arr[i] === val) {
                arr[i]++;
                m--;
              }
            }
          }
          console.log(arr);
        }

</comment><comment><USER18> Overly complex C++11: <http://ideone.com/yHzej>

The output assembly is actually pretty good (std::vector specialization):

            ; prologue
        L19:
    	add	eax, esi
    	cmp	ebx, eax
    	je	L4
        L8:
    	mov	ecx, DWORD PTR [eax]
    	cmp	ecx, DWORD PTR [edi]
    	.p2align 4,,3
    	jne	L10
    	add	ecx, 1
    	sub	edx, 1
    	mov	DWORD PTR [eax], ecx
        L10:
    	test	edx, edx
    	jg	L19
        L4:
            ; epilogue

</comment><comment><USER19> this reminds me of how even fulton, the author of the ruby way, made a critical mistake in "the ruby way" 1st edition (fixed in 2nd edition) and matz chimed in saying " "Don't modify the receiver while you are iterating over it." [http://www.justskins.com/forums/collect-with-block- modifying...](http://www.justskins.com/forums/collect-with-block- modifying-71472.html)

</comment><comment><USER20> My Python version (in-place, no reverse):

        def add1(arr, val, n):
            todo = abs(n) or len(arr)
            seq = xrange(0, len(arr), 1) if n >= 0 else xrange(len(arr) - 1, 0, -1)
            for i in seq:
                if arr[i] == val:
                    arr[i] += 1
                    todo -= 1
                    if not todo:
                        break
            return arr

</comment><comment><USER21> perl, for fun:

      sub add1 {
          my ($arrayref,$val,$count) = @_;
          # Just incremet matches and return if we aren't limited
          # Useless return of array ref
          return \map { $_++ if $_ == $val } @$arrayref unless $count;
          # increment up to count matches
          for ($count<0 ? reverse @$arrayref : @$arrayref) {
              next if $_ != $val;
              $_++;
              # Advance count towards zero
              $count<0 ? $count++ : $count--;
              return if $count == 0;
          }
      }

Splitting the loop into separate versions for positive and negative counts is quicker than checking if count is positive or negative each iteration, but I figured that's a step more than I wanted to take it.

Alternatively, defining a variable for the amount the $count changes (-1 or 1) and just adding that to count would work as well, but I'm working under the assumption that's less likely to be special cased in the interpreter than post-{in,de}crement.

Edit: Clarified reasoning behind post-increment, etc.

</comment><comment><USER22> Solution in CoffeeScript:

        add1 = (arr, val, n) ->
          n = arr.length if n is 0
          arr = arr.reverse() if n < 0
          count = 0
          for num, i in arr
            break if count > (Math.abs n)
            arr[i]++ if num is val
            count++
          return if n < 0 then arr.reverse() else arr

<comment><AUTHOR> another double reverse... I guess coffeescript really does want to be ruby :)

<comment><USER23> Here's my version without using reverse or underscore. If coffeescript supported reverse loops or negative indices, this would be a lot cleaner.

        add1 = (arr, val, n)->
          d = Math.abs(n||1)/(n||1)
          n = if n is 0 then arr.length else Math.abs n
          i = if d < 0 then arr.length - 1 else 0
          end = if d < 0 then 0 else arr.length

          while n and i isnt end
            num = arr[i]
            if num is val
              n--
              arr[i]++
            i = i + d
          arr

</comment></comment></comment><comment><USER24> I wouldn't do any of this, Ruby / Python are OO so they provide already baked in primitives to do this, e.g:

        array.map { |e| e + val }

It bugs me when developers roll their own instead of utilizing what's already been done (minus performance reasons).

</comment><comment><USER25> With MATLAB, find is built-in!

      function arr=add1(arr,val,n)
      if n==0
          ind=find(arr==val);
      elseif n>0
          ind=find(arr==val,n);
      else
          ind=find(arr==val,-n,'last');
      end
      arr(ind)=arr(ind)+1;

</comment><comment><USER26>
      #   n < 0  means increment up to n occurrences of val
      #          from right-to-left (backward)

Presumably you mean "increment up to abs(n) occurrences", otherwise this requirement is nonsensical.

<comment><AUTHOR> yes, that is technically correct (the best kind), however everyone has understood it as intended so far. I also state it like that so as not to give a tip that abs() might be helpful to them down the line.

<comment><USER12> You could also say -n if you didn't want to say abs. I found the problem confusing because of how it was written.

Also, unless I'm mistaken, you can lose the "if (n === 0)" case completely.

</comment></comment></comment><comment><USER27> In Common Lisp:

        (defun increment (sequence val n)
          (substitute (1+ val) val sequence
                  :from-end (< n 0)
                  :count (if (= n 0) nil (abs n)))

<comment><USER12> I don't know Common Lisp, but it doesn't look to me like that works. Can you explain how it works?

<comment><USER28> I don't know Common Lisp either but if you know any Lisp it's quite readable. I'll guess an explanation (without looking at any docs) and let the real lispers correct me.

 _substitute_ traverses the list _sequence_ replace any element equal to _val_ with _val + 1_. I don't know if sequence does this in-place but that doesn't necessarily affect the correctness, since this wasn't mentioned in the spec.

If used as above then all elements equal to val would be replaced. But there are 2 additional (optional?), named parameters.

 _from-end_ indicates whether to traverse the list in reverse order. It will be true if and only if n is less than 0.

 _count_ indicates how many replacements should be made. If n is 0, then this will be _nil_ , which indicates "replace all". Otherwise it will be the absolute value of n.

It's likely that the interviewer would ask you to implement _substitute_ , though.

</comment></comment></comment><comment><USER29> it's interesting that you say you have a functional background but then chastise people for not modifying the array in place ...?

<comment><USER30> And using map that short-circuits.

</comment></comment><comment><USER31> I would like to see some of the ruby solutions you ran across in your interviews to see how rubyish they may have been be.

</comment><comment><USER32> The OP's implementation wastes cycles in the n == 0 case because the statement `if (count == n)` is unnecessary.

<comment><USER33> And surely the `count++;` statement.

I don't see an obvious solution that doesn't "unroll" the three cases and doesn't waste any cycles, but maybe that is why I don't work at OP's company. ;)

<comment><AUTHOR> yes, the count++ (and count variable itself) are unnecessary since I could just text n against 0 and then break. good catch.

<comment><USER33> But decrementing n would still cost you cycles in the case where n was given as 0 that you wouldn't need if you had separated out that case, wouldn't it?

<comment><AUTHOR> yes, that's right. Then it becomes a tradeoff of cycles and code-readability since I would have to special case for 0.

</comment></comment></comment></comment></comment><comment><USER34> here is my "c++ with stl" version. it's in-place, with only one separate case and w/o array reversing at all.

[http://okertanov.github.com/2012/08/03/Array-Iteration- Inter...](http://okertanov.github.com/2012/08/03/Array-Iteration-Interview- Problem/)

</comment><comment><USER35> OK, here's a C version. Had to add a parameter, of course:

      void add1(int arr[], int length, int val, int n)
      {
        int direction  = n >= 0;
        int counter    = n == 0 ? length : abs(n);
        int index;

        for(int i = 0; (i < length) && (counter != 0) ; i++)
        {
          index = direction ? i : length - i;
          if(arr[index] == val)
          {
            arr[index]++;
            counter--;
          }
        }
      }

Verified with test vectors.

</comment><comment><USER36> My javascript version, <http://jsfiddle.net/kjqTg/>

var add1 = function(arr, val, n){

        var x = n,
            end = 0;

        if( n < 0 ){
            arr.reverse();
            x = Math.abs(n);
        }

        for(var i=0, len=arr.length; i<len; i++){

            if( arr[i] === val )
                arr[i]++;

            if( x > 0 ){
                end++;
                if( end >= x+1)
                    break;
            }

        }

        if( n < 0 ) arr.reverse();

        return arr;

}

console.log( add1( [1,4,1,5,1], 1, 0 ) ); // [2,4,2,5,2] console.log( add1( [1,4,1,5,1], 1, 2 ) ); //[2,4,2,5,1] console.log( add1( [1,4,1,5,1], 1, -2 ) ); //[1,4,2,5,2]

<comment><AUTHOR> another double reverse :)

</comment></comment><comment><USER37> Right at first I would have two remarks. The first remark has to do with how to describe such a problem. The second remark points to what appears to be a serious error in the problem description.

My first remark would be that the problem statement is not in any natural language.

E.g., what is the role of the many instances of the character '#'? Those instances are not in a natural language.

E.g., what is the token

'add1'?

That token is not in my Webster's dictionary, and I have been given no way to parse it.

E.g.,

"increments items in an array matching specified value"

is not a sentence.

E.g., "param:" is not English.

Continuing, it is not clear what meant by an 'array'. So, we do not know the value of the smallest subscript or the largest or how to determine these.

Next the terms

"from left-to-right (forward)"

and

"right-to-left (backward)"

are undefined and require a reader to guess. A careful guess would want to know if the computer was big endian or little endian.

Finally, one might object to "most optimal" since, really, something is 'optimal' or it is not so that 'most' is superfluous.

Here is another way to start to write the problem statement:

Suppose you are given positive integer n, and suppose for i = 1, 2, ..., n, you are given an integer x(i).

Etc.

Lesson: In computing, clear communications are important. Those communications should be in a natural language, e.g., English.

My second remark would be to consider the part of the problem statement:

n < 0 means increment up to n occurrences of val from right-to-left (backward)

So, with this statement, if n < 0, then there is nothing to do since we cannot do something a negative number of times.

So it appears that what was intended was:

n < 0 means increment up to -n occurrences of val from right-to-left (backward)

<comment><USER4> You are being overly pedantic here.

One of the great things about two people from any reasonably mature field communicating with each other is that they can take advantage of widely- agreed-upon shorthand. Nearly everyone coming in for a programming interview in 2012 will understand that the '#' character is often used for non- executable program meta-data, that functions are often named with tokens such as 'add1', that 'param:' typically means a function parameter with a description of its value following the colon, what an 'array' is, how subscripts work with them, and what is meant by the terms left-to-right, forward, right-to-left, and backward (regardless of endian-ness, the inclusion of which is sort of humorous since our hypothetical interviewee has, up to this point, been assumed to be completely ignorant of programming-related terms). You go on to suggest defining the problem in terms of short-hand from a more mature, but less specifically relevant field, which I would argue would actually be well understood by _fewer_ potential interviewees.

I do agree with you that it should probably be pointed out that the number of occurrences should be stated as the absolute value of 'n', rather than just 'n', but this would become obvious very quickly when the candidate starts asking clarification questions.

<comment><USER37> I was trying to be simple, elementary, and easy to read! But my comment was not at all "pedantic"!

Even with all the context you suggested, the problem statement is just not very clear, and, in computing, computer science, and software, that lack of clarity is not a small point.

Put more bluntly, there is no excuse, and in serious software, especially for embedded systems, there is no role, for abbreviations that are on or over the line into gibberish. You are correct that such gibberish is common in software; my point is that we should not do that and should object.

Yes, in my suggested problem statement, I used notation common in mathematics. Still, the math community still says that such writing is English. GOOD.

Here is a big point: Computer science, computing, and software have no good substitute for such use of how mathematics is written. There is a partial substitute in practice if assume a particular programming language.

The error of n instead of -n or the absolute value of n is small but is an example of a huge point: A subroutine needs a description. A subroutine is precisely something and should have a precise description. The problem here is so simple we can get by with being imprecise as you suggest, but computing is not limited to such simple routines, and the complicated ones also need precise descriptions. Net, we need to write precise descriptions. Knuth did this in TACP (yes, I abbreviate!); it really is possible.

For assuming that 'add1' means an argument 1 passed to a function add is asking a lot even just in the context of software.

In passing a constant to a function there will be the issue, that should be addressed, of passing 'by value' or 'by reference'. In Fortran a constant is passed by reference with all the problems, side effects, and surprises there unto appertaining! We can't yet assume that Fortran is buried!

If my work does well and I start to hire, I will give a lot of weight to people who are good at reading and writing technical material and will prefer that they know how to read and write abstract math. For learning Visual Basic .NET, a book of code samples and a one week class should be able to do a lot. Net, I'm questioning if I should require new hires for programming to know any 'computing' at all.

</comment></comment></comment><comment><USER37> Here is a solution in Microsoft's Visual Basic .NET making a little use of some of .NET:

         ' ADD.VB --
         '
         ' Created at 21:34:59 on Wednesday, August 1st, 2012.

         '    Note:  There are some risks of fixed overflow
         '    depending on (1) the values of the components
         '    of arr() and (2) how the logic works for ending
         '    a For-Next loop in the case n is the largest
         '    value of Int32.

           Sub add( _
             arr() As Int32, _
             val As Int32, _
             n As Int32 )

           Dim arr_upper_bound As Int32

           Dim i As Int32

           Dim n_changes As Int32

         '    http://msdn.microsoft.com/en-us/library/system.array.getupperbound%28v=vs.100%29.aspx#Y104

           arr_upper_bound = arr.GetUpperBound( 0 )

         '    http://msdn.microsoft.com/en-us/library/cy37t14y(VS.80).aspx

           Select n

             Case n = 0

               For i = 0 To arr_upper_bound

                 If arr( i ) = val Then arr( i ) = arr( i ) + 1

               Next i

             Case n > 0

               n_changes = 0

               For i = 0 To arr_upper_bound

                 If arr( i ) = val Then

                   arr( i ) = arr( i ) + 1

                   n_changes = n_changes + 1

                   If n_changes = n Then Exit Select

                 End If

               Next i

             Case n < 0

               n_changes = 0

               For i = arr_upper_bound To 0 Step -1

                 If arr( i ) = val Then

                   arr( i ) = arr( i ) + 1

                   n_changes = n_changes + 1

                   If n_changes = -n Then Exit Select

                 End If

               Next i

           End Select

           Return

           End Sub</comment>


A story about a man who outsourced his own job - mkr-hn http://nowiknow.com/what-about-bob/ <comment><AUTHOR> The story is old but I have to say that anyone who manages to outsource his job to China for a quarter of his paycheck and get top-notch quality (he was considered a rockstar programmer until they found out), has my respect.

You don't fire such a person, you appoint him CEO.

<comment><USER2> > he was considered a rockstar programmer until they found out

I assume his work was being done by a whole team of engineers, though; is it really all that difficult to get a team of five people to contribute more than you're expected to do by yourself? A recent graduate from a top Chinese university can be happy to make less than USD 2K / month. I know a few making 5000 yuan / month (USD $800) plus housing in a company-provided communal apartment.

If you're looking to outsource something to some young but highly intelligent chinese programmers, do let me know ;)

<comment><USER3> Outsourcing is "hard" (and usually fails) because usually, the process is performed by a middle manager who (a) is trying to optimize for cost, which hurts quality and is expensive in the long run, and (b) doesn't have the technical talent and therefore can't recognize it. In any country, the bottom of the barrel is going to be bad. But if you don't have the ability to pick talented people and others in the market do, you end up getting hurt by adverse selection. Then, outsourcing becomes really expensive.

Painting Bob as a slacker doesn't tell the whole story. He had to set up his own business. At least while he was ramping up, he had to hire, fire, train, and check the work. At the same time, he had to deal with inconveniences caused by time zones, and cover his tracks. Maybe he slacked once it was established and he could coast, but it's not _easy_ to set up a business like that.

To win at the outsourcing game, you need to (a) pay well, so that people care, and (b) pick great people, because paying incompetent people well doesn't do anything. Going overseas might make (a) easier, but it doesn't make (b) less hard.

<comment><USER2> I don't intend to paint him as a slacker at all. I respect that what he did took a lot of effort to establish, but I doubt he did a lot of hiring and firing himself -- the article I read on this guy said he employed an existing chinese consulting company. What I'm assuming is that he paid that company enough to engage several engineers at once, which means I'm not surprised that "his" output was considered especially impressive.

I think the greatest obstacle to retaining chinese engineers is actually (c) communication across the language barrier.

<comment><USER4> I suspect at the start he would have done code reviews because otherwise he couldn't know if the other party [the consulting firm] was a competent entity.

I'm sure once he figured out their level of competence and how far he could trust their agency [e.g. How much direction they needed to succeed], I suspect that is really when the slacking started.

I wouldn't be surprised if this was the second or third consulting company he had tried.

Honestly, I doubt that process took more than 3-6 months.

Do you find most Chinese programmers don't know written English?

<comment><USER2> All (recent) chinese people are supposed to know English (it's a mandatory subject at all levels of schooling), but fluency levels vary widely. It's generally not a big focus for engineers. At the startup I worked at last year, the founders had decent english and the employees knew almost nothing. The college students I know can communicate at an acceptable level, but (a) they are still highly prone to misunderstandings unless I make the effort to use simple phrasing and (b) there's a huge selection bias in which people I'm on speaking terms with.

I do find that for almost all the chinese people I know, it's more effective for me to communicate with them in written chinese (but, sadly, spoken english, as my spoken chinese is appalling).

So summing up... there might be a decent population of chinese programmers who can communicate in written english, but there's a much, much larger population that can't.

<comment><USER4> Fair enough. :)

I guess the much, much larger population is going to make less money if they do outsourced/consulting time work since they have to deal with a middleman because of it [who will take a cut and do project management/sales].

<comment><USER2> Also, this may sound weird, but jobs speaking english can pay better than programming jobs, which will cut down on the number of english-speaking programmers.

<comment><USER4> That sounds very weird but different job markets I suppose.

Why do you think that is?

<comment><USER2> Jobs speaking english involve serving english-speaking foreigners, who have money.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> Does anyone know which consulting firm in China he was outsourcing his work to?

Asking for a friend...

<comment><USER6> Can you let me know when you find out? My friend also wants to know.

</comment></comment><comment><USER7> Hi! This is from my email newsletter of interesting facts, Now I Know. If you want to give it a try, [http://nowiknow.com](http://nowiknow.com) is the signup page.

It's free, I don't give out email addresses, etc., and have 100,000 subscribers so it can't be all bad.

<comment> mkr-hn It's also WordPress-based, so tacking /feed/ on the URL will give you an RSS feed.

</comment></comment><comment><USER8> Bonus fact: Bob had to ship this RSA SecurID token to his developer in China to that they could submit their code, defeating his corporate strong authentication policy.

</comment><comment><USER9> I can't help but notice how much whining there is about outsourcing (including from me), but when it's in the benefit of a single employee skipping his work then it's a "great trick", worth of respect, etc.

Assuming the company needed that level of work that was being delivered by this guy's shadow team and he could not deliver that alone... then they would hire better people and/or more people. In this specific case they HAD to because it was US-govt work.

This is no different then a CEO outsourcing a whole department to India or China (in that it doesn't take into account the ripple effects of that decision -- including the local economy, the quality of the work, the added communication issues, etc.)

If you think this story is _just_ great, please remember it when your or your friends' jobs get outsourced to cheap labor overseas based on cost alone (if it's based on quality and expertise, then it's a whole different argument -- a much rare one btw).

<comment><USER3> _I can 't help but notice how much whining there is about outsourcing (including from me)_

As an American programmer, let me say that I don't think that many of us consider "outsourcing" to be the enemy. There's no moral reason whatsoever why people in one patch of land deserve jobs and people in some other patch don't.

The enemy is the commoditization of programming talent (and on adverse terms; I'd be happy to be commoditized at a rate near what I'm actually worth) and the attitude that we're just cost centers to be squeezed and trimmed, and the fact that when this approach backfires (the cheapest programmers, anywhere in the world, produce shitty code) it's not management but engineers who have to clean up the mess. Management gets promotions, engineers get legacy code. That's the evil. It doesn't matter, morally speaking, if it's a shitty outsourcing shop in India or California. Likewise, if it profits you (and the programmer) to hire top talent in California or in India, you should do so.

The technical term for this is _labor arbitrage_. When a company spots a true labor arbitrage (a chance to profit by outsourcing work to a cheaper country) it has the right to use it. I don't think anyone disputes that. As Omar Little says, it's all in the game.

But if it's a legitimate move for a company, it's also a legitimate move for an employee. This person spotted a labor arbitrage and took the spread for himself. Unless he compromised classified information (then I feel differently about the whole matter) good for him. If his employer spotted a labor arbitrage (i.e. that his job could be outsourced) they would take the profit all for themselves, and he'd be out of a job. He spotted it first, and he got the profit.

<comment><USER9> I did not say outsourcing was the enemy (see my comment about skills and expertise). He surely compromised US-govt information (I don't think the US govt would agree to have their source code available to China). Outsourcing is a legitimate move for a company, sometimes.

Your arguments are very valid in a dog eat dog world like ours. My comment was in an opposite direction.

</comment></comment></comment><comment><USER10> Two things:

1- This urban legend has been recycled numerous times, b/c we've all thought of it at one point or another. I've seen it on Hacker News at least once before. If you have the ability to actually do this, you can start a successful consulting firm, so unless you're thick in the head, why take the punishment of having to show up at work everyday & not just start an outsourcing firm?

2- The unfortunate truth is, there are plenty of folks that have that work schedule. The difference is that they don't have the productivity part, b/c their organization is hopelessly broken. To me it felt like prison, but other HNers have posted that eventually they got used to it.

I got the hell out of the second situation and went the startup route and am waaaaay happier. I can sit at home all day if I don't feel like working, and that's on me.

<comment><USER11> I personally employ other developers for side projects and they get paid significantly below what i get paid at my 9-5. If i was dishonest i could pretty easily pull off this scam. Not as extreme as doing 0 but i could have 80% of my work done and just review and commit..

</comment></comment><comment><USER12> Repost of the classic story from a couple years ago. Still makes me chuckle and envious though. Not something I'd do myself though; I like to write code, dislike managing people, and sitting in the office for 8 hours a day watching cat videos would kill my brain.

</comment><comment><USER13> I love this story. I do love to outsource my pet projects. After a long day at work, I come home and find myself too drained to write code. I have so many ideas and no motivation code. This article just gave me an idea that perhaps I should outsource my personal pet projects. Is there anyone here reading who has ever outsourced their pet project? I'm not talking about via odesk/elancer, but through another medium where you can get really competent developers like Bob did.

</comment><comment><USER14> > _Take, for example, the story of a former software developer identified by > the press only as Bob._

This is an old story, and despite all this time it feels as ephemeral and weird as when it first surfaced. Is it, in fact, true?

Several stories cite the Verizon security blog, without actually providing a direct link to the entry in question. Can anyone remember having read the original blog, or heard additional corroborating details?

<comment><USER7> I wrote the article linked to above, and in it, I link to the archive.org saved version of the Verizon security blog. It's all there.

</comment></comment><comment><USER15> From Wiki: "Leadership has been described as "a process of social influence in which one person can enlist the aid and support of others in the accomplishment of a common task"."

I don't see how this isn't exactly what every single manager does, everyday. They get paid twice what I get paid, just for giving me work to do. Whether I'm in the office or in China, what difference does it make?

</comment><comment><USER16> For anyone interested, the author of this post does a daily "Now I Know" email. There is the occasional dud or re-post, but, on the whole, they're pretty entertaining little blurbs that pop into your inbox a few days a week.

EDIT: My bad, just saw below.

</comment><comment><USER17> Copy and paste of original Verizon blog article:

[https://groups.google.com/forum/#!msg/ba.internet/34erJO7jqP...](https://groups.google.com/forum/#!msg/ba.internet/34erJO7jqP0/EPMIw_sj6UwJ)

</comment><comment><USER17> The Onion's take on this kind of stuff

[http://www.theonion.com/video/more-american-workers- outsourc...](http://www.theonion.com/video/more-american-workers-outsourcing- own-jobs-oversea,14329/)

</comment><comment><USER18> So how did verizon determine all of this information? To include revenue numbers.

<comment><USER19> "according to hundreds of PDF invoices also discovered on his work computer" \- [http://edition.cnn.com/2013/01/17/business/us-outsource- job-...](http://edition.cnn.com/2013/01/17/business/us-outsource-job-china/)

This story came out a while ago, and was a bit light on details back then too. Entertaining, nonetheless.

<comment><USER18> Ahh. That link suggest that Verizon was actually the company he worked at, not just the ISP.

</comment></comment></comment><comment><USER20> I wonder if "Bob" is actually Timothy Ferriss?

[http://fourhourworkweek.com/](http://fourhourworkweek.com/)

</comment><comment><USER21> Looks like we finally found that guy who knows 'One Weird Trick'.</comment>


Top 20 Entrepreneurial Quotes - <AUTHOR> http://www.cheaprevolution.com/the_cheap_revolution/2007/11/top-20-entrepre.html?partner=rss <comment><USER2> Ahh, the inevitable rise of the "top n <something>" lists.

<comment><USER3> Agreed. This article would have been just as good without the 'Top' in its title.

</comment></comment><comment><USER4> It's missing a favorite of mine from An Evening (Wasted) with Tom Lehrer: "I thought I would acquaint you with some of the results of my recent researches into the career of the late Doctor Samuel Gall (...) He soon became a specialist, specializing in diseases of the rich. He was therefore able to retire at an early age..."

Is your next start up curing a disease of the rich?

</comment><comment><USER5> Some of those were new to me + really good. Thanks for sharing.

</comment><comment><USER6> Some nice quotes here, but also lots of crap from people who don't belong on a list of entrepreneurs:

JFK - son of a bootlegger whose 9th birthday present was $1 million. Never did an honest day's work in his life

Eisenhower talking about planning (lol!) - His botching of D-Day sacrificed many American lives unnecessarily and extended WWII by another year. Asleep at the wheel during the start of the cold war.

Robert T. Kiyosaki - liar and showman - stay away from here please.

Donald Trump (lol) - There's 3 ways to have a million dollars: 1. inherit it 2. work for it 3. Be Donald Trump and start out with $2 million.

Shakespeare - Someone given credit for the work of others.

Anonymous, on the other hand, seems really smart and is quoted all over the place. Who is this guy?

<comment><USER7> This is completely off topic, but everything I've read about D-Day has said that as much as can be expected in that kind of massive operation, things went alright.

<comment><USER6> Maybe so, but do you really want to take advice about planning from the leader of the group that came up with the acronym "FUBAR"?

<comment><USER7> "In preparing for battle I have always found that plans are useless, but planning is indispensable"

Seems like good advice to me, and similar to what a lot of other people have said in various ways.

Agree 100% about Kiyosaki - that guys seems pretty dubious to me:

[http://en.wikipedia.org/wiki/Kiyosaki#Criticism_and_controve...](http://en.wikipedia.org/wiki/Kiyosaki#Criticism_and_controversy)

<comment><USER6> Nice link.

In Washington they call a lie "misinformation".

Here they call it a "literary device". lol

</comment></comment></comment></comment></comment><comment><USER8> Great list! The comments contain some great ones as well.

</comment><comment><USER9> number 4 is bullshit

</comment><comment><USER6> Even though there is some good stuff here, I decided to make a new submission with the really good stuff (IMO):

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