Is running ads on a programming blog worth it? - <AUTHOR> http://danluu.com/blog-ads <comment><USER2> I have a sneaking suspicion that certain groups of people are just much less susceptible to ads. I never click on ads. I mean, literally never. If you run an ad monetized site, I am the moocher who never makes you any money. If I search Google for something, and the result comes up as both an ad and a non- ad, I click on the non-ad link. If it only comes up as an ad, I keep searching. With me it's almost irrational, stemming from when long commercial breaks would interrupt cartoons and movies I watched. Ironically, I am building a mobile app that's going to be ad monetized (well, at least the free version will be). I suppose that makes me hypocrite.

At the same time, I think I'm not alone. There's just something dreadful about having your decision making so directly influenced. It's sort of a "why are you trying to push this thing on me? Is it not good enough to stand on its own merit?" I believe that when I need something, I will find it and do my own research. This is why I also never put much value in Facebook. Who clicks on those ads? Aren't you just there to socialize?

Edit: I should say that I am aware enough to realize that there are much more subtle form of marketing that definitely do influence me. If a person I respect gives something a good review, for example, I will be more likely to buy it. If a company has a good story to tell about themselves, that makes me think highly of them. If it's a product I've seen on Shark Tank I'm more likely to consider it because I'm more familiar with what they do. Ads are just too obvious about it for me.

<comment><USER3> It's also easy for me to ignore ads on the web. I am always baffled by those commenters on HN who claim they would rather pay for content rather than seeing ads or those that seem to have a deep aversion for ads. For me, ads are so easy to ignore that those point of views are hard to understand.

<comment><USER4> It's not the ads that bother me [if they're not moving/sounding or actively drawing my attention]. It's the implicit cross site tracking.

If someone hosts their own ad content, I'm far more likely to click it if it's relevant (and won't block it, which is my default for anything cross-site).

</comment></comment></comment><comment><USER5> No. There are two main points for a programming blog - to keep your own notes in one place, and to try and raise your profile / build an audience to make the next contract or pay review a much happier experience.

Neither of those are helped by ads, and the latter is probably negatively impacted.

You have really impressive views afaik - which is why someone probably called you. But even so, you are thinking a rough likely income of 140usd a month. It's really hard to put the logical business case, but being the guy in the department who gets 100K views on his blog is easily worth 1700 usd at the annual pay review (read patio11 post on this subject).

If you are a contractor or can build a network from the blog that 1700 pa is going to get wiped out in one deal.

Stick a mailchimp form on your blog and keep writing interesting stuff.

<comment><USER6> _There are two main points for a programming blog - to keep your own notes in one place, and to try and raise your profile / build an audience to make the next contract or pay review a much happier experience._

If one subscribes to your extremely limited view of what a "programming blog" should be or aspire to be, and what its author(s)' goals are or should be, then maybe this is reasonable. But I don't find that at all convincing.

 _If you are a contractor or can build a network from the blog that 1700 pa is going to get wiped out in one deal._

No... it'll still be there. And it'll be there if you have a bad month -- or year -- and you end up depending more than you'd want on that otherwise paltry sum.

I'm not saying this is without merit. I'm just saying it's incredibly short- sighted. I like to look at the big picture as well, but to suggest that money you might bring in with minimal impact is necessarily useless in the face of the potential to bring in more money in other (largely or totally unrelated) ways strikes me as seriously out of touch with the lows reality can drop on your doorstep.

 _Stick a mailchimp form on your blog and keep writing interesting stuff._

This is at least much more reasonable than making blanket statements that start with "No."

<comment><USER5> Well the No was a direct answer to a direct question. :-)

And I think that putting ads onto an otherwise nice and coherent personal site sends out all the wrong signals (it makes us judge this not as a personal site but as a commercial entity - which demands higher production standards (and oddly lowers the trustworthiness of his opinions on Intel die layouts etc). The small amount of advertising income is unlikely to ever pay for that trust loss - and if the OP is ever likely to find that income vital then they should fight for a pay rise today.

I am negative on the value of broadcast style advertising - I would say that going for advertising dollars when you don't think they will pay for the young graduate you really ought to be hiring to do ad sales by phone is a bad idea. I really cannot see advertising being democratised by giving tiny slices to smaller and smaller outlets. _Maybe_ affiliation sales will work at those levels but probably not.

</comment></comment></comment><comment><USER7> I have tried for two years to monetize my programming blog without making $100 in that entire time while I make a nice living from ads on my other sites.

I save RAW hard drives via a post I wrote 2 years ago. It's not really a programming post on my programming blog but like forums, you have little control over the demographic that ends up flocking to your blog. Especially if it is eclectic like mine.

There are thousands of visitors daily to the post and I get emails and try to answer comments everyday.

Ads, affiliate links, Amazon, eBay, Adsense, BSA, direct ads, CPA, CPM, nothing works on my programming blog with thousands of visitors each day. Extensive a/b testing is inconclusive due to lack of actions.

So now I only have a bitcoin address in that particular post and hope one day to get something from that :)

Ads do not work for all niches on the internet. Unless, of course, you want to deceive your users and trick them into clicking on something that is not what they think it is. That always works, for awhile at least.

In the meantime, I'll keep helping the people who end up there for free as best I can because in the end, that is in line with what I have hoped the internet would be.

</comment><comment><USER8> I tried running ads once, made about a penny in a month. Turned off the ads, cleaned up the site, focused on posting my notes/work, and ended up getting recruited through some engineers finding my posts when searching for info. To me, that was way more worth it than any ad revenue, but of course, your mileage may vary.

</comment><comment><USER9> I use Amazon affiliate links on my blog. If I'm reviewing a book, or piece of kit, I make the links point at Amazon's UK site with my tracking ID.

If a user clicks on the link, and either buys the product or something else, I get ~6% of the purchase price.

In a good quarter (100 - 200k views) I can make ~£150. Not "quit my job" money, but "offsets the hosting, and lets me buy toys" cash.

Downsides are:

\- UK only. There's no (easy) way to send US traffic to the Amazon.com site. So all my international traffic isn't making me money.

\- Not all my blog posts talk about a product. So I can go months without any new "money making" content.

\- Can feel a _bit_ scummy. I'm conscious that I'm writing a post not to impart information, but to entice people to click on links.

\- While AdBlock doesn't seem to interfere with the links, services like Ghostery _do_.

Overall, I'd say that running a blog is cheap. You probably don't _need_ advertising on it. You're not going to make retirement money unless you're literally getting millions of hits per day.

<comment><USER10> > There's no (easy) way to send US traffic to the Amazon.com site

You can run a small snippet of JS that replaces all the links with amazon.co.uk to amazon.com. You have to figure out that the user is from the US (maybe reading the Accept-Language, don't know if that's reliable)

        // untested
        var links = document.getElementsByTagName('a');
        for (i=0; i<links.length; i++){
            var link = links[i];
            if (link.href.match(/amazon.co.uk/))
                link.href = link.href.replace('.co.uk', '.com')
        }

<comment><USER11> navigator.language will return a string like "en-US", "en-GB", or "fr-FR" depending on the user's selected locale. That could be used to map different Amazon URLs, although it looks like you may get a fair number of en-US false reports. See [https://html.spec.whatwg.org/multipage/webappapis.html#navig...](https://html.spec.whatwg.org/multipage/webappapis.html#navigatorlanguage).

</comment></comment></comment><comment><USER12> Signing up to an ad exchange is not the only way to run ads.

I think Penny Arcade was a good example, though they're currently not ad supported. They used to have a small number of banner ads on rotation that were curated by the authors to be unintrusive and for products they happily endorsed. I often clicked on these ads as they represented good-reviews by implication.

It may be simple enough to reserve a rectangle on your site with some text along the lines of "advertise here, x views a month on average, specialised crowd, $y per month", then you could sort it out directly with a product vendor of your choice.

If life's not that simple then someone on here should set up a middleman business that would be a specialised ad exchange for linking products (small, and specialised, lowe marketing spend) with blogs (small and specialised, expert readers, blog owner must approve of the product and ad).

<comment><USER13> > _I think Penny Arcade was a good example, though they 're currently not ad > supported. _

More information behind this: Penny Arcade ran a Kickstarter to remove ads on their site which was incredibly successful ([https://www.kickstarter.com/projects/pennyarcade/penny- arcad...](https://www.kickstarter.com/projects/pennyarcade/penny-arcade-sells- out))

This method wouldn't work for normal developers because a) Penny Arcade has a massive fanbase and b) Penny Arcade makes most of their money off of merchandise.

Although, would a Patreon for a developer work? It would be a hard sell, though.

<comment><USER12> This is all true, and another interesting alternative to signing up to an ad exchange.

I specifically used past tense as their current setup is inapplicable to the blog in the article, though I'd be interested if anyone could reference other sites that are currently using PA's previous approach.

</comment></comment></comment><comment><USER14> Nice post!

I wrote an answer on Quora for "How much do content producers who are apart of "The Deck" ad network make monthly?" which also gets into some additional details: [http://www.quora.com/How-much-do-content-producers-who- are-a...](http://www.quora.com/How-much-do-content-producers-who-are-apart-of- The-Deck-ad-network-make-monthly/answer/Todd-Garland)

(disclosure: I'm the Founder of BuySellAds who owns Carbon Ads)

FWIW, when it comes to privacy, BuySellAds (and by extension Carbon Ads) is probably one of the few companies who don't actually do anything we don't tell you about with users' browsing data. We use it for forecasting what's available to be sold - that's it.

We also wrote a handy tutorial that will help folks determine what % of visitors are using AdBlock: [http://support.buysellads.com/knowledge_base/topics/how- to-f...](http://support.buysellads.com/knowledge_base/topics/how-to-figure- out-what-percentage-of-your-visitors-are-using-an-ad-blocker)

<comment><USER15> Keep in mind that a lot of ad blockers are blocking third-party analytics too these days, so measuring an AdBlock ratio by pushing events into GA isn't going to be very accurate.

I display a gentle plea to whitelist my site ([http://encosia.com/blog/wp- content/themes/encosia/carbon-ale...](http://encosia.com/blog/wp- content/themes/encosia/carbon-alert.html)) if the Carbon div isn't in the DOM after a little bit. I'm displaying that by loading an HTML fragment via AJAX, so I can grep my server-side logs and see how often that's loaded. I haven't checked lately, but the ratio was huge the last time I did look.

<comment><USER16> Whitelisting you would also allow AddThis, Clicky, GA, G+, and Adobe. The "gentle plea" just makes your blog (or whatever it is) look annoying and desperate.

<comment><USER15> That's not very nice. Surely you wouldn't look a real person you barely know in the eyes and call them annoying and desperate for something that trivial.

Regardless, I was hesitant to add the nag, but I've only received positive feedback, e.g.:

[https://twitter.com/TweetsOfSumit/status/534623233920598017](https://twitter.com/TweetsOfSumit/status/534623233920598017)

[https://twitter.com/DanTheOther/status/550807053812252673](https://twitter.com/DanTheOther/status/550807053812252673)

But, thanks for your opinion. It's interesting to hear what people think about it.

<comment><USER16> Surely you'd expect a negative response if you walked up to random people on the street and said "let me follow you and show you ads!" IRL, I'd smile and nod politely, while trying to find a way to leave.

<comment><USER15> Considering we're talking about people choosing to visit my site, your analogy seems almost exactly backwards. They're walking up to me, not the other way around.

And, come on. The ad on my site takes up a miniscule fraction of the space above the fold and probably less than 1% of the total area of content on an average page on my site. Following people around showing them ads? That's a heck of an exaggeration.

</comment></comment></comment></comment></comment></comment><comment><USER17> For all the people who mention running adblock, and hate ads on aesthetic grounds, visit his site from a browser not running adblock. The ads displaying in the right hand side are relatively unobtrusive and inoffensive.

(Now, if you're concerned about privacy or performance, keep adblock on).

</comment><comment><USER18> How about using affiliate links for products that are relevant to your audience? E.g. books about programming, hardware, etc...

<comment><USER19> These are _the worst_. Marco Arment periodically does reviews of various things (coffee makers, headphones, etc), and he absolutely packs them full of Amazon affiliate links. I understand that other people have more benign impressions of this, but to me it is incredibly dubious and puts the whole venture under a huge question mark -- was the "review" motivated by pitching affiliate links? Were the items selected based upon their availability on Amazon? Were the higher commission items favored? And so on. There is simply zero legitimacy left when you use affiliate links. Similarly, if you "review" a book and pitch it through affiliate links, I no longer know whether it's even worth my time (most technical books simply are not), or whether your impression of it, and encouragement of its purchase, was motivated by commission links.

Probably the least offputting, brand-ruining tactic is the Daring Fireball technique of periodically putting some shout out to a sponsor and encouragement of their product. I suspect it is far more rewarding both to him and his sponsors, and limits the sliminess to a single occasional post, versus selling one's credibility.

ITT - people pitching affiliate links and crapware on their tiny blogs talk up how great it is.

<comment><USER20> _These are the worst._

It's worth highlighting this as an example of authoritative-sounding comments that will put you on the wrong path, if you're not careful.

Techie websites and visitors are a _very_ different market than your average customer, and within those technical circles, people like this comment writer will _not_ be representative of the majority of your website's readers.

Whilst I think that the comment author is exaggerating for effect, it's always worth asking the question in your head:

\- Does this person represent how _one person_ or _the majority_ of my visitors will think?

<comment><USER19> _people like this comment writer will not be representative of the majority of your website 's readers_

Elsewhere you talked up the benefits of affiliate links, so I find your whole post somewhat ironic.

Further, it's worth noting that affiliate link blogs almost never make it anywhere on HN, /r/programming, or elsewhere. They generally exist on the fringe, existing on the meager search engine traffic, capturing the accidental visitor. Actual empirical reality seems to counter your claims. The only blog of _any_ consequence that actually lowers itself to affiliate links is Marco Arment, and thankfully he confines that to standalone "review" type posts.

</comment></comment></comment></comment><comment><USER21> I think there was a Coding Horror piece years ago titled something like "We don't buy software here."

There is a big segment of software developers who literally don't buy anything. Some of them use free software entirely, others use whatever software management bought. (For instance, I worked at a place that had a MSDN subscription so we had all the Microsoft tools we could have possibly wanted)

If you picked a topic truly out of random out of the great encyclopedia of the situation, you would probably make something around $1-$2 per page view with Adsense.

If you pick a topic because it is something you like (i.e. "programming", "blogging", "japanese aninmation", etc.) you join a group of other unfortunate people that are likely to be getting $0.10-0.20 per page view really because (i) there is too much of that content, (ii) the people interested in that content don't spend money.

<comment><USER22> > If you pick a topic because it is something you like (i.e. "programming", > "blogging", "japanese aninmation", etc.) you join a group of other > unfortunate people that are likely to be getting $0.10-0.20 per page view

$0.10-0.20 per page view is a number that one can only dream of. You probably rather mean $0.10-0.20 per 1000 page views.

</comment></comment><comment><USER23> There is an interesting side discussion as to transparency of ad exchanges.

I run a site with significant traffic that is supported by ads served by an ad exchange. I can track the number of views and the number of clicks and thereby audit the exchange's numbers.

What I can't do, is ever know if I'm getting a fair share of the underlying ad revenue since there is no published formula to translate hits/clicks/CPM to dollars.

What is your experience with this and how have you come to trust or distrust your ad exchanges?

</comment><comment><USER13> > _For one thing, the 143k hits over a 30-day period seems like a fluke._

For reference, a single post that goes viral on Reddit gets about 100k page views, while a single post that goes viral on Hacker News gets about 10k pageviews (both speaking from experience).

It's not worth the hassle of managing ads, at the least. If you're a developer, your income is probably sufficient enough to not warrant the supplemental money from ads. :P

</comment><comment><USER24> "Worse yet, this is getting worse over time. CPM is down something like 5x since the 90s, and continues to decline. Meanwhile, the percentage of people using ad blockers continues to increase."

I hope that someday, the trend described above becomes so pronounced that it means the death of the ad-supported Internet. Perhaps there is a way to make good money on the web without resorting to such slimy tactics.

<comment><USER25> Like what? Make people pay for content? The internet costs money to maintain and I'm sorry to say but much of the convenience we enjoy is provided only because we look at a thousand+ ads a day. Do you really want to pay $5 a month for every site you want to read?

<comment><USER26> Meh.

At one point, I'd have said, "Yes, I would prefer that." And I think in the long run we'd be better off. People love pointing out how much of the internet is available because of ads, but they don't point out how much of it is shitty and difficult to use because of ads. I can do without clicking through 5 pages of useless blog spam looking for a real article, and stories with seven paragraphs split up over 14 pages for ad purposes. Those are business models that deserve to die, IMO.

I think a big chunk of the internet knows that going ad-free would mean they'd go from making small amounts of money off of ad clicking suckers, to making no money from anybody.

But, that said, adblocking software is so good lately, I don't mind keeping the current setup. I'm not paying, and I'm not seeing the ads, so I get the best of both worlds.

</comment></comment></comment><comment><USER27> I doubt that the same sort of ads that run elsewhere on the web would work on a software-related blog.

The blogger would probably have to do paid placement within the text of the posts, containing clickable links. If the ad does not get blocked, and I even notice it when I am scanning the text, I'm likely to just hit the back button and try the next search result.

I'm not intentionally trying to make things more difficult on the people running the blogs, but I am far more likely to remember a trademark if the blogger mentions it as a useful tool for a particular task than if an ad for it serves on a page about something else.

A manufacturer-paid or affiliate-monetized critical review sways me far more than an attached ad image--even if it was not an entirely positive review. Besides that, writing a review is content that you control. If you rely on ad- serving networks, you can't be certain ahead of time what they will be serving from your page, or what you will be paid.

</comment><comment><USER25> With the money that a programmer makes in the current market 150 a month is nothing more then beer money. The blog serves its purpose by acting as an advertisement for yourself, putting advertisements within an advertisement is a bit redundant. That one guy that gets turned away from the ads may be the guy willing to pay you made money.

</comment><comment><USER28> I block ads because advertisers/networks don't respect the do not track flag. I don't want to block ads, but I value my right to privacy more than I value your right to monetize my eyeballs. If the ad companies played in good faith, then I wouldn't have to circumvent them.

</comment><comment><USER29> Hold on, what happened to Coding Horror's traffic?

<comment><USER19> People have generally stopped visiting blogs. Even stand-alone web sites are starting to suffer.

I recently re-enabled my Facebook account for dev purposes, and while there liked the Verge, AnandTech, etc. So now my feed is a small amount of family stuff, and a long list of tech news, most of which I quickly scroll past.

It's interesting because I essentially never visit those sites any more. Not long ago I visited the Verge probably daily, and browsed into random stories. I visited Anandtech weekly. And so on. Now I see the headlines that I skip past, and that's that.

And on the pure blog front, a lot of people rely upon sites like HN and reddit to sift through the chaff, the idea being that those killer blog posts will rise to the top. We know that isn't actually true (HN is mostly about luck and pet topics, with a lot of terrible content rising, while Reddit is horribly, horribly gamed), but the end result is that the good content suffers.

<comment><USER30> Have people "generally stopped visiting blogs?" Do "a lot" of people rely on HN?

Internet usage is 39% __globally __[1]. I doubt there are any statements you can make that apply to 2.85 Billion People. Feels like you are ascribing your personal opinion /beliefs/experiences to "people" in general.

[1] - [http://en.wikipedia.org/wiki/Global_Internet_usage](http://en.wikipedia.org/wiki/Global_Internet_usage)

<comment><USER31> Is this an example of someone adding an irrelevant citation to try to add an air of authority where they have none?

Technology blogs used to be fairly significant ventures. Now there are shockingly few that are still maintained, and even those (such as Coding Horror) detail _dramatic_ declines in readership.

Every reality goes against your garbage post. Yet still you did it. Weird. HN gets stupider by the day.

[1] - [http://www.thekitchn.com/how-to-cook-spaghetti-squash-in- the...](http://www.thekitchn.com/how-to-cook-spaghetti-squash-in-the-oven- cooking-lessons-from-the-kitchn-178036)

<comment><USER32> You kind of have to keep up a regular cadence of new content to get people to keep coming back. For instance, Coding Horror has had only 9 posts in the last six months. For the most part, I don't revisit programming/software dev blogs unless there is new content or there is something relevant that I want to go review again. Ergo, if you write most of your posts on the latest teacup- hurricane scandal or the newest version of X software/hardware product, you aren't going to get the kind of long tail that sustains page views when your posting rate slows down. On the other hand, if you are producing quality content that stands the test of time (something like lazyFoo's SDL tutorials comes to mind), then you are going to move up the search rankings on that topic, which will reinforce that long tail.

<comment><USER31> For sure, but in a way it's a bit of a chicken and egg issue. Spend lots of time making content to see the same sputter and occasional luck on the social news sites.

There was a time a few years ago when you could ask what the best tech blogs where and there would quickly be thousands of posts. Now...most of those have been abandoned, and little has appeared in their place. Even among professional sites it's amazing how many technologies (for instance Intel's tablet chips) get almost no treatment at all, and astonishingly little actual effort is expended, so we just end up with some vapid, high-level commentary that is then blog spammed across autonomously created dupe sites.

It's just a wastelands. People stopped coming and people stopped being interested.

</comment></comment></comment></comment></comment></comment><comment><USER33> I agree that certain demographics are most likely to click than others. I myself rarely click on ads, and estimated that click through rates must be very low (1/1000). Yet, my sudoku game site routinely has CTR of 2-5%. No ad tricks, just a large and obvious ad. I can only imagine what CTR tricky ads get.

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

</comment><comment><USER34> If you want to be evil do like these guys and freeze who has adblock, but I sincerely hope you don't do that (not everything is about money!): [http://www.reddit.com/r/webdev/comments/2to4pm/what_evil_blo...](http://www.reddit.com/r/webdev/comments/2to4pm/what_evil_bloggers_do_to_adblock_make_it_hang_by/)

</comment><comment><USER35> > What advertisers are interested in an audience that's mostly programmers > with an interest in low-level shenanigans?

Employers?

<comment><USER12> People who produce goods and services for low-level programming shenanigans.

</comment></comment><comment><USER36> > _Premium ads can get well over an order of magnitude higher CPM, so the > picture might not be quite as bleak as I'm making it out to be. But to get > premium ads you need to appeal to specific advertisers. What advertisers are > interested in an audience that's mostly programmers with an interest in low- > level shenanigans?_

I've no experience marketing anything aimed at this audience, so have no idea what suitable companies think about this, nor what CPMs or CPAs they'd be used to seeing in their ad spends.

But as a rule of thumb, targeted means more interesting to advertisers who want to hit that audience. For example if a VPS company wanted to advertise, where better than on a popular programmer's blog? (Again I have no idea on what margins or target CPAs a VPS company would have, so just a random example.)

Of course, a targeted audience that doesn't interest any advertisers can have the opposite effect and drive your CPMs down, but more often than not it will help. It's just a question of will it help enough to justify the time getting the right advertisers to part with their money to advertise with you.

(I also have no experience either selling or buying adverts for personal blogs, but the above rule of thumb is pretty scalable.)

edit: Got distracted before finishing reading, and will now add my thoughts to his last paragraph:

> _There's the argument that ad blocking is piracy and /or stealing, but I've > never heard a convincing case made. If anything, I think that some of the > people who make that argument step over the line, as when ars technica > blocked people who used ad blockers, and then backed off and merely exhorted > people to disable ad blocking for their site. I think most people would > agree that directly exhorting people to click on ads and commit click fraud > is unethical; asking people to disable ad blocking is a difference in > degree, not in kind. People who use ad blockers are much less likely to > click on ads, so having them disable ad blockers to generate impressions > that are unlikely to convert strikes me as pretty similar to having people > who aren't interested in the product generate clicks._

I make most of my living from people seeing digital adverts and I'd never argue its piracy or stealing. So I'm with the author on that one.

As to preventing people from reading your website if they don't disable adblockers - I think it's a shitty thing to do, it's not something I'd ever be willing to suggest anyone does, but at the same time I don't see why a website shouldn't at least be allowed to do it. If a site does it and you don't like it then stop visiting.

Personally I like sites that show "You're using an adblocker - you can keep using it if you like, but we'd really appreciate if you didn't". The reason for this is I disagree with the premise that those who use adblock won't click adverts. The number one reason for people using adblock is that too many advertisers/publishers allow shitty adverts. Adverts that pop out of the window. Or cover up content. Or use too much bandwidth or memory. Etc. If you're not one of those publishers, and you don't allow those kinds of advertisers on your site, then there's plenty of people who use adblock but might consider clicking on one or more of your adverts if they could be persuaded to view them. I'm not talking about asking them to click adverts, just that if they see them they might actually _want_ to click on them.

I don't have data to back this up, but have a couple of people I'm going to talk to and hopefully see if I can get numbers to demonstrate this, as I'm confident its the case.

Alternatively if anyone reading this has a decent-sized audience (preferably with a high pageview to unique ratio - i.e. more loyal visitors rather than just visitors driven by search enginges) and would be interested in testing, feel free to get in touch to chuck about a couple of ideas. I couldn't really help on the execution side, but would happy to give advice on how to test if you'd be willing to share numbers with me afterwards. (The basic idea would be to see what % of people respond to polite requests to disable adblock, and how click rates are affected. If you have the technical chops to do more then could go further and either attempt to anonymously identify which clicks came from a previous adblock user, and also look at actual conversion rates rather than just click rates if your advertisers allow you access to this data.)

<comment><USER21> The economics of private ad sales have gotten worse in the last view years, particularly for the bigger sites.

The big thing in online advertising is "retargeting" which means that a bunch of systems in NYC built by people who have burned out of HFT will bid for ads in real time with the consequence that you will look at a pair of shoes on Zappos and the shoes will follow you around for days.

Retargeting has the benefits that: (i) you're more sure people have some interest in the product, and (ii) the results are quantifiable. Spend has moved away from premium venues towards retargeting which is good if you have a bottom feeding site (they can show a relevant ad even if nothing matches the content of the page) and bad if you have a premium site.

<comment><USER36> It's definitely helped shift budget from premium targeted sites to bottom feeding sites, but (at least in my experience) a.) There's still plenty of money for the premium sites (either because a brand wants to be associated with a nice site and/or not associated with adverts on shitty sites, or because it helps build up the cookie pool once people click the ads which then lets them retarget those users) and b.) CPM rates for those premium sites are still considerably higher than would be paid across RTB or retargetting networks.

</comment></comment></comment><comment><USER37> Another reference: I'm getting about $30/month for 60K pageviews/month to www.developingandstuff.com – definitely not serious cash, just a nice incentive.

</comment><comment><USER38> I would suggest you hyper target your site with key advertisers that can support content. For example, MS for Azure content. They can provide readers with real value. But requires you figure out how they can make it worth it for your audience.

</comment><comment><USER39> Then there's AdBlock, of which most of the people reading the blog might be aware of.

The web looks weird with all the advertisements when I'm not on my own machine.

<comment><USER40> Let's be honest here, you didn't read the article.

</comment></comment><comment><USER41> This is very, very interesting. Thanks for the detailed informations! To be, ad monetization is a big black box. It's very helpful to have "insider" information.</comment>


Musk Keeps Hinting at What His Next Project Might Be - <AUTHOR> http://www.businessinsider.com/elon-musk-may-build-an-electric-jet-2016-2 <comment><USER2> Well of course, since his first company built an electric car with fancy battery technology, and Tesla is building a huge battery factory, and he's on the board of a solar company.

Besides the cool factor, Tesla/Solar City would likely be the ones supplying the electricity or batteries, so profits for them.

Even if he just supplied a white paper and encouraged others to do the rest (à la hyperloop) his companies would be better off (and one could argue society as well).</comment>


Ask HN: Entering a saturated market full of low quality competition? - <AUTHOR>

I'm involved with a new startup company (http://anticlothes.com) and one of the main goals of the company is to take on the huge leaders in the field already, who the founder feels deliver almost insultingly low-quality products: Snorg Tees and BustedTees.
Our products are already receiving favorable reviews and compliments, most notably on the style and feel the brand has, and we only print our shirts on American Apparel shirts (regarded as the most comfortable tees you'll ever get your hands on).
My question is: What do you think about joining a particular industry where the competition is HUGE, but you feel it is sloppy and poorly run? Is there a chance, or is it a sort of situation where the odds are just too unfavorable? <comment><USER3> How is Busted Tees low-quality? It churns out constantly-amusing shirts that manage to hit every trend that youth cares about. And they do a pretty good job at it, too.

They print on American Apparel, so you're basically the exact same there.

And you have competition from sites like Threadless, Veer, TurnNocturnal (my personal favorite), so I would find it a bit insulting that you think your designs are better than those of the other companies. One of your shirts rips off a 4chan meme: hardly original. Some of yours look nice, but if I saw them in Busted I wouldn't think they were particularly better than the ones already in the store.

In short: if you've got a truly new product, you've got a chance. But - <USER2> due respect - it doesn't look like you do.

</comment><comment><USER4> I began writing this and its easier in pseduocode

      if you know how they are executing poorly
       if you know how to execute better
         you could kick ass
       else how are you not going to end up doing the same?
      else are you just being cynical?

</comment><comment><USER5> There is a chance, and you know what - there is a market! A huge market that just keeps growing! So why would it fail?

Let me give you an example: There are restaurants everywhere. EVERYWHERE! So is the restaurant business saturated? No, it's just mature. Some come, some go. It's all a matter of financing and marketing. People need to eat, people need to buy t-shirts.

So if you are well capitalized, there is no reason why you cannot capture a significant share of the market. If you have no capital at all, you will fail.

Pick your competitive advantage (slightly cheaper T-Shirts, more mainstream stuff, etc), then create your business based off advertisments. Think of ways to innovate and improve, and there is no reason why you should fail. The market is there, it's certainly not a winner-take-all business.

<comment><USER6> This is good advice. A big mistake a lot of people make is believing that they have to contribute something groundbreaking to be successful. That always helps, but even if your product represents a revolution in your field, there's no guarantee that you'll do well; it all comes down to marketing, in reality.

If your shirts and practices are at least on par with the competition and you can provide designs that people like, there's plenty of room and no reason you can't do well with an enterprise like this. Good luck.

</comment></comment><comment><USER7> I don't really see how you stand out from the rest. That said, a t-shirt company in today's environment doesn't seem all that groundbreaking. What Threadless did was something groundbreaking other than that I have just seen your run of the mill t-shirts.

</comment><comment><USER8> Being very successful in a saturated market is definitely possible, especially if you have a product that's much superior to your competitors. However, I don't believe that you do, especially as fashion is quite subjective and you'll struggle to have an empirically better product.

The t-shirt space is very crowded - it sometimes feels like everyone in the world now owns a t-shirt company - so there really is a hell of a lot of competition.

I don't see how your company differentiates itself from the others and its branding, something I perceive as quite important in the fashion industry, seems quite weak, despite the quite catchy name, especially when you're competing with bigger long-established names in the area that advertise heavily.

You'll likely be a modest success, but your designs are, in my view, largely quite forgettable. I think the high-quality arty designer t-shirt angle is a better, more profitable, higher-margin long-term direction than the more passé low-end "cartoony" or "humour t-shirt" market that you're focusing on since they both utterly sewn up by big names, overly saturated and a completely cliché. I do quite like the zombie t-shirt though.

</comment><comment><USER9> Busted prints only on American Apparel, and Snorg prints some on American Apparel, so how is the quality different?

Your question is somewhat rhetorical, since entrepreneurs usually are the ones who take on industries that are sloppy, poorly run and delivering inferior products. So yes, its been done before. You just have to figure out where all the unsatisfied customers are, or where the cost savings are, or how to run things better.

</comment><comment><USER10> There's plenty of opportunity there, but I think you're asking the wrong question. I'm concerned that you don't really understand your customers well enough. It's not obvious to me how Snorg Tees and BustedTees are "insultingly low-quality", and I am part of your target market since I buy the occasional t-shirt on Threadless.

Personally, I don't care that much about the feel of a t-shirt with a joke on it. I care if the joke is funny. In fact, I never even try on t-shirts before buying them, so the feel of the t-shirt _really_ doesn't matter. I suspect a lot of your target market agrees with me.

So, are you sure that your competition is poorly run? Or do they actually understand better what their customers care about.

</comment><comment><USER11> You need some sort of gimmick to stand out from the rest of the competition. And no design itself won't work.

As an example of a gimmick look at <http://200nipples.com> (the founder posts on here). His approach will get him the necessary exposure and get people talking about it, and once he gains traction he can put up more designs and expand it.

</comment><comment><USER12> The real question you should be asking yourself is this: how hard will it be for the competition to change direction or spin-off a new line to solve the same problems we have identified but which can leverage their existing market presence?

If it is easy for your competition to copy any successful niche you identify then you are probably in trouble. This is not to say that the venture is doomed, because there are lots of good examples out there of entrepreneurs who have followed this route (e.g identify problem in market, introduce solution, profit) but unless you can build your brand identity quickly or tie your competition's brands to the problems you are solving then you may have trouble.

Seriously, how hard would it be for either of the big players to offer a new line from a different shirt supplier? Given their existing market presence they might even be able to convince people to pay a larger markup on the upsale to the quality goods than you can get by only offering the good stuff.

</comment><comment><USER13> Some questions to think about:

\- Are the customers genuinely frustrated with the low quality of the products currently on the market? How do you know? How can you convince them you're better?

\- Will you create new markets? If not, can you differentiate yourself enough that you're not competing purely on costs? Can you beat your competitors on costs? How long can you sustain that? (i.e. as your costs rise can you stay competitive)

The typical books here are:

[http://www.amazon.com/Competitive-Strategy-Techniques- Indust...](http://www.amazon.com/Competitive-Strategy-Techniques-Industries- Competitors/dp/0684841487)

...about competing in markets, and...

[http://www.amazon.com/Blue-Ocean-Strategy-Uncontested- Compet...](http://www.amazon.com/Blue-Ocean-Strategy-Uncontested- Competition/dp/1591396190)

...on creating new markets. (At this point I've only read the latter. The other one is on my queue. :-) )

</comment><comment><USER14> _we only print our shirts on American Apparel shirts (regarded as the most comfortable tees you'll ever get your hands on)._

Really? I thought they were so common just because they were giving printers a good deal or something - they feel average. They're certainly not up to the feel of, say, bamboo t-shirts.

</comment><comment><USER15> See search circa 1997

<comment><USER16> Or budget web-hosting today.

</comment></comment><comment><USER17> These companies are heavily advertised, too. (At least I know their names, and besides Threadless, I don't know many clothing companies.)

I think it might be difficult to beat them without coming up with a way to get your brand out there better than they do.

Another key thought: I worry that a lot of the t-shirt market isn't really about quality, but about the type of cleverness appreciated by the demographic that likes T-shirts. The risk is that it's a little like selling "high quality bumper stickers"-- people might not be looking for quality there.

<comment><USER18> > The risk is that it's a little like selling "high quality bumper stickers"-- > people might not be looking for quality there.

Unless you're selling to a niche (e.g. surfers, skateboarders, etc. and more generally people who want to put stickers on their non-flat gear without having friggin bubbles, faded colors due to UV, stickers that peel due to water/salt and so on).

</comment></comment><comment><USER19> I'd focus my energy on making a deal with a large bricks and mortar retailer for the top n shirts, possibly as a loss-leader just to advertise my site (on the clothing tag) to drive traffic there. Basically something different than what your competitors are doing (focusing on design and t-shirt quality).

</comment><comment><USER20> What, like Google did?

[http://www.ubergizmo.com/15/archives/2008/09/googles_first_s...](http://www.ubergizmo.com/15/archives/2008/09/googles_first_steps.html)

</comment><comment><USER21> Three basic competitive strategies: cost, differentiation, focus. All these seem identical to your competitors when looking at your site.

</comment><comment><USER22> 2 things: Know Your Market & Find Your Niche.

My guess is that you haven't done either yet.

The apparel industry in incredibly brutal and very often without logic. (Comfort is probably not enough of a competitive advantage in this marketplace.)

You look like you have some cool stuff. Find your place and stay under the radar of the big boys. But don't think you're selling clothes. You're selling something else. You could make a very nice living there.

<comment><USER9> I agree, comfort isn't a competitive advantage. Selling the idea of comfort is something you can charge money for though. If you charge $20 more for it, people will feel as if its more comfortable.</comment></comment>


Why Video Games Have Launch Problems - <AUTHOR> https://playfab.com/blog/why-video-games-have-launch-problems/ <comment><USER3> This article completely ignores that single player, mostly-offline games have exactly the same launch problems.

The reason games have these launch problems is that publishers got away with it for too long. Having users who already paid for the game do the beta testing is much, much cheaper and more efficient than in-house testing.

I sincerely hope that steam's move to grant refunds ([http://store.steampowered.com/steam_refunds](http://store.steampowered.com/steam_refunds)) will sort this out. "Oops, 30% of our pre-alpha-published-as-final purchasers want their money back". Have one or two publishers file for bankruptcy over that and it might be a very valuable, albeit painful, lesson for the industry.

<comment><USER4> It doesn't ignore it, it's just a completely different issue. General awfulness of a game on a tight budget and deadline has little to do with backend scalability issues on large budget games...

<comment><USER5> The issue Augustine raises is why games have launch problems. He pins the blame on backend issues and ignores other issues. (I think primarily he was just using failed launches as a vehicle to talk about gaming backends, but nonetheless he argued that backends were the primary cause of failed launches.)

Another issue the article failed to address is that many games fail catastrophically when servers cannot be contacted even for online features that are not necessary for core gameplay; or for DRM purposes. This is a flaw in the front end that contributes to the same problem.

All those "causes" are primarily fueled by the following:

"It's a major threat to their business. So why does it keep happening?"

This here should have clued him into the larger context. It isn't a major threat to their business. Getting a refund on a videogame is becoming easier, but has historically been difficult. Try returning an opened copy of a game to any retailer. Even explaining that it is the game itself that is broken does not always result in an accepted return.

The consumer, rather than the business, is bearing the cost of a failed launch.

So Augustine is correct in a technical sense regarding how backend issues contribute to failed launches. However, it is the market as a whole that is the primary driver behind failed launches. There is little incentive to fix the failed launches regardless of the technical means by which they occur.

</comment></comment></comment><comment><USER6> I've seen two main reasons for this in my experience. The games industry is one where a 'chase the shiny' business mentality requires developers to frequently change their target platforms, development stacks, and desired core competencies for each project. Many of us are jacks of all trades, with little expertise in things like keeping a service standing under incredible load. I've seen developers go into this problem with a 'how bad can it be' mentality, and it never ever ends well.

The other side of things is where you actually have a team capable of delivering a solid, scaling backend service, who simply do not get the chance to do so because of poor production planning and overzealous development schedules handed down from on high. This is not an industry where the engineers get to define the development schedule or feature set. They can influence both, but on many teams the managers expect that crunch will solve all of their scheduling mistakes.

I think you guys at PlayFab are in a great space as this is work that is very difficult to pull off right and many, many developers will (smartly) choose to pay for a solution instead of rolling their own.

</comment><comment><USER7> To address the point of "game developers don't know backends, and backend developers don't know how to build for games"... I want to think aloud about the question "how do you hire engineers who can work on the backend of a large video game?".

One issue parts of the games industry struggle with is simply coding competency. There's a tendency to hire newer grads and folks who will work for lower salaries, because people always want to make games. (And why not? Making games is awesome.) This leads to turnover, poorly thought out (or over- engineered) designs, lack of "common sense" things like load testing before launch (remember the industry standards you learned at college? if your college was anything like mine, you didn't), language soup, etc. And in my experience, the best backend systems are built by those with at least a bit of that experience already - rather than gameplay programmers trying to teach themselves what the CAP theorem is. But what senior engineer wants to work with legacy spaghetti code, or unlaunched promises (and the threat of future layoffs), when they could work at Facebook or Google or whoever?

At a previous large tech company I worked at, we built a games team internally to work on large scale platform stuff (pretty similar to what PlayFab is doing but aligned with said company's products). It was really cool - we got folks who were solid engineers but also ex-games industry, or avid gamers, themselves, advertising team openings via the videogames@ internal mailing list. We tried to combine the culture/fun of the games industry without the baggage and conditions.

But platform isn't content, and I recently joined a similar kind of team in an actual games company (which operates much more like a tech company than most, since our game is operated as a live service rather than a one-off downloadable release). Being able to work alongside artists, designers, narrative writers, sound engineers, event producers etc creates a really creative environment, and though I'm working on MySQL performance tuning and internal monitoring data pipelines, I get to hang out and talk about the new champion releases with folks at lunch. A nice balance, but for those who can't afford their own platform team, or don't have the carrots to lure us in, PlayFab seem like a neat alternative. :)

</comment><comment><USER8> The difference with major online services like facebook and twitter is that games have a -very- big launch, and get a lot of users at the same time all at once. It's really hard to test for all that traffic in advance, as there will be so many configurations, (slow and fast) connections, hackers etc coming in all of a sudden. Its almost impossible to simulate the enormous variation.

Facebook, Twitter etc begin by a stable (code) base and then step by step scale up their systems. When something does not scale they can roll back or quickly fix it. They don't have to ramp up from a few hundred players to hundreds of thousands in a few hours like in the gaming industry.

<comment><USER9> " It's really hard to test for all that traffic in advance"

There's this thing, they're called dedicated servers. The reality is that game companies CEO's/execs don't want to pay for quality when they can push it out now get the money and patch later, aka. They put in the least effort. The whole thing is intentional at big companies, a combination of intentionality and incompetence at small ones.

<comment><USER8> I don't know what dedicated servers has to do with it?

I do not disagree on your point that it might be a combination of intention and incompetence, although I think most of them really do not want to see downtime and negative press at release date, when they sell the most. So next to intention and incompetence there is also a strong incentive for them to prevent this from happening.

But the orignal point I was making is that scaling up all of a sudden for an enormous amount of people/traffic is intrinsically very hard, so its easy for them to underestimate the effort needed, and pay deeply for that on launch date (and we too as gamers).

<comment><USER9> >I don't know what dedicated servers has to do with it?

First see the science, I can tell you the facts and figures and you won't reason to the conclusion correctly.

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

If you wanted to avoid "back end problems" (aka problems with 'stressing servers' because of your desire for locked down games where the server code is never released to the public) then you should allow gamers to run their own servers using server software like what games did in the 90's - <USER2> solved. The corporate world basically stole gamers ability to own and run servers and since most gamers are 100's of miles away from these game companies they get away with it.

The free market simply cannot work when buyer and seller are 100's of miles away from each other, the seller has a huge advantage, all the outraged customers can't patrol outside the company and give the people there an earful for being corrupt criminal bastards.

Free market is a fantasy held onto by people who don't know much about how the real world works and gullibly believe the false ideological propaganda in the universities.

Protectionism for the rich and big business by state intervention, radical market interference.

[https://www.youtube.com/watch?v=WHj2GaPuEhY#t=349](https://www.youtube.com/watch?v=WHj2GaPuEhY#t=349)

Crisis of democracy

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

Manufacturing consent:

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

[https://vimeo.com/39566117](https://vimeo.com/39566117)

</comment></comment></comment></comment><comment><USER10> I think the article left one important reason out: you always only hear about game launches that go bad, never about the ones that go smoothly.

Also: a game launch is like an explosion going off, lots of pressure on the first day. Marketing usually wants to concentrate everything on that one single launch event. Demand on launch day and the 2..3 days after can easily be 100x to 1000x higher than in the second week. You now have the decision to somehow spin up many times the backend infrastructure that you normally need, with the associated cost (theoretically achievable with a cloud service, but see below), even if it is technically possible to smoothly scale up against millions of players wanting to login simultaneously somebody needs to take the cost hit, this is usually when the finger-pointing between management and tech begins. Sometimes it's easier to 'wait it out', since the storm will be over after a few hours.

As for cloud services: Most game-servers have soft-realtime requirements which many cloud providers can't provide (at least with the cheap cost plans). For a web server running at a cloud provider it isn't much of a problem if you have 250ms load spikes or delays from time to time, for an action game it is catastrophic.

And finally: players that can't login will spend the time raging on the internet. If you can't get your iOS update on day 1: well, shrug, I'll try again tomorrow :)

</comment><comment><USER11> > This way in the worst case, the player receives the item in their inventory > and isn't charged immediately. In practice, this has proven to occur very > rarely and has been an acceptable tradeoff.

Except that now the player can spend the money twice in the race window...

That kind of sloppiness by game developers might be related to the launch problems they have.

<comment><USER12> Not having worked in game dev, it seems to me that some of the industry problems (high pressure launches, high turnover rate among developers, low ability to address or prevent technical debt) are responsible for at least some of the sloppiness. I'd think it really hard to make the right infrastructure decisions (and implementations) when you have a year or two to build a multi-million user infrastructure that has to adapt flexibly to any changing requirements from the game producers/directors/publishers and which will be thrown away a few years after that.

<comment><USER13> Also, it seems as if the incentive isn't there. Game studios know they can put a broken product on the market and still make money on it.

<comment><USER14> Which is why steam refunds make so much sense - as it's all digital, buying and refunding are the same couple of easy button clicks for the consumer. If this where to happen on the mobile app market it would be a game changer (because of the 100x more indie games there).

</comment></comment></comment></comment><comment><USER15> They caught up with the rest of the "internet-enabled" software. If it can be updated, the maximum it needs to be is acceptable, not (mostly) bug-free as in the old days. This gives lee-way to juggle quality with release deadlines.

</comment><comment><USER16> As an outsider is it possible to do game development in an Agile manner?

<comment><USER17> It is. Some studios actually do this (e.g. Blizzard, High Moon, some had done it before they had been shut down). The problem is that Agile has been designed for a process at a service firm, one that does work for hire. As far as I understand, in that business you don't really want to ship. Instead of shipping you want to keep your customers engaged and paying your invoices as long as possible, preferably forever. This can also be useful for a firm that provides continuous service since there is no shipping involved too. And there is nothing wrong with it. But games have to ship. Continuous development without a hard shipping date is called "development hell" [1] in game industry.

From what I've seen Agile does not work very well here, at least on the engineering side. Design might be doing something similar to Agile on a small scale.

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

</comment></comment><comment><USER9> Pfft... it's all just bullshit, pressure to release games too early from managers and hit quarterly profit targets.

That and the obsessive desire for control of everything.

<comment><USER18> Moreover is not these game have the necessity of being always online. Remember the bullshit about simcity having to offload computation to servers?

Scalability problem are not because the load of gaming, but as you say because they are obsessive about stealing every piece of info they can to better funnel users into premium.

Remember when people could host dedicated server? You would never hear quake having scalability issues or need to be saved from ec2

</comment></comment><comment><USER19> The reason IMO is game developers just don't care since it's a huge work to micro-optimize a game.

Last years when silicon reached it's limits, all kind of developers start to worry about the performance. The question "how to make a more advanced game?"'s answer is not git gud on hardware anymore. It's up to the software today (again).

</comment><comment><USER20> For PC I get it, uncountable hardware variations. But for console games, it's inexcusable. You have one and only one variation of the console. Up your game.

<comment><USER21> You obviously didn't read the article. That's a completely different issue.

<comment><USER20> The article is mainly about server-side issues with the database, but those still reflect poorly on the client side.

</comment></comment></comment><comment><USER14> Well if someone created an actually good programming language for game development we wouldn't have this problem...

<comment><USER22> Combination of C, C++ and a scripting language of choice are adequate and work well. It think business and design problems contribute more.</comment></comment>


Pet project: Number Gossip - <AUTHOR> http://www.numbergossip.com/

<comment><USER2> Fun. I learned a few interesting facts ;-)

For instance, I did not know that an _evil_ number has an even number of 1's in its binary expansion.

<http://www.numbergossip.com/list#evil_numbers>

However, it seems that 666 is not an evil number.

<http://www.numbergossip.com/666>

<comment><USER3> 616, on the other hand, _is_ an evil number. I guess we now know which one is actually the number of the beast.

(' _The latest volume includes details of fragments showing third- and fourth- century versions of the Book of Revelations. Intriguingly, the number assigned to "the Beast" of Revelations isn't the usual 666, but 616._ ') [http://news.nationalgeographic.com/news/2005/04/0425_050425_...](http://news.nationalgeographic.com/news/2005/04/0425_050425_papyrus_2.html)

</comment></comment><comment><USER4> Neat, but you really should provide some exploration entry points.

<http://www.wolframalpha.com/> does a pretty good job of this w/ the rotating suggestions and the "Examples >>" link.

</comment><comment><USER5> This is delicious!

 _Rare Properties of 93

Cake

The n-th cake number is the maximum number of pieces a (cylindrical) cake can be cut into with n (straight-plane) cuts.

Unfortunately, not everybody gets the frosting. If you cut pizza rather than cake, you get lazy caterer's numbers.

        ..., 26, 42,64,93,130,176,232,...*

</comment><comment><USER6> 3435 deserved more than just: <http://www.numbergossip.com/3534>

From this post: <http://news.ycombinator.com/item?id=2477798></comment>


Ask HN: What motivates you? - <AUTHOR> <comment><USER2> When I was in my teens, twenties and early thirties, I very seriously yearned for world domination. Probably because I grew up low-middle class and was always the small kid being picked on. I didn't work too hard at it because at my core, I'm a lazy person. Still, I put in enough effort to become the big fish in my various little ponds.

I only realised how insignificant I really was when several years ago, I stumbled upon Quora and the various 'How do I join Google' questions, and even more when discovered HN and what proper software development really is like.

HN has given me a huge imposter syndrome while at the same time given me the resources to really educate myself and learn more about making things flash on a monitor.

Nowadays, I do it simply because I enjoy it.

</comment><comment><USER3> I've tried chasing big goals and I've tried avoiding everything through escapism. Turns out that it doesn't matter much what I try, I eventually just do what I do. Thankfully, the trend line is positive.

Once I figured that out and learned to trust it, I stopped thinking in terms of big conscious motivations and instead just started looking at the unconscious roadblocks that were in front of me. If something was getting in the way of where I seemed to be going, or if I noticed myself charting weird paths around some thing in avoidance, I'd start looking closer at why and gradually free myself of the hinderance.

There are plenty more such blocks for me to find and work through, but this method feels more balanced and more effective than any motivation-centered paradigm ever seemed to.

</comment><comment><USER4> My insecurities.

Due to some life circumstances, i grew up feeling that i am not deserving of being where i am at and that at i am the worst person in any given room.

I came to embrace these feelings because they motivate me to keep improving my life on a daily basis.

</comment><comment><USER5> Usually self-preservation. Often, the software projects I work on are things that simplify my life and it just so happens that other people want to use them too.

I enjoy eating, having a home, feeding my children, and playing games. So, I do what I have to do to keep that going. Everything else requires effort for me to even start and once I'm going, even more effort to maintain.

</comment><comment><USER6> Curiosity, awe, love. My job however I see as hindering in most of that (Project/Product Management non-bullshit¹ job offers welcome).

I love to learn, I like science, to analyze and to attempt to shape our information environment. This act of discovery is also great on a personal level, but that was a stronger factor when I was younger. Well and I love people (though I have sympathy for many, that doesn't mean I'm not selective on whom to spend my time with). Some hedonistic sprinkles on top are also welcome (music, travel, good food, a beer).

If I could I would divide my time between exactly those things: 1/3 learning, 1/3 building, 1/3 people and all at a nice place with good food.

¹ [http://strikemag.org/bullshit-jobs/](http://strikemag.org/bullshit-jobs/)

</comment><comment><USER7> Dan Pink struck a cord on the subject of primary motivators - autonomy, mastery, and purpose. > [https://www.ted.com/talks/dan_pink_on_motivation?language=en](https://www.ted.com/talks/dan_pink_on_motivation?language=en)

</comment><comment><USER8> Minimizing the net suffering in the world through effective altruism.

<comment><USER9> Well, the most effective way to do it is just anesthetized annihilation of all humanity.

Probably we should flip the mental script and say that this definition of minimisation of suffering has effective altruism as a local minima, and painless and unconscious death as a global minima, because it eliminates all suffering immediately and thus would be the perfect solution.

Death is considered almost univocally bad, so perhaps this definition of doing good should also take some type of maximization of subjective happiness into account.

<comment><USER8> It's a good point. The preference is on minimizing suffering rather than increasing the happiness of those who are already well off. I'm curious how you'd put that philosophy into a succinct phrase then.

</comment></comment></comment><comment><USER10> Sometimes the thought of doing today's work really well is genuinely exciting to me.

And if not that, I feel a certain sense of "honor", for lack of a better word, in meeting my commitments and doing what I said I'd do.

<comment><AUTHOR> Surprising, but out of the rest, this is probably what resonates with me the most. I just really like the idea of doing what I said I'd do. Or just making a new set of commitments each day and sticking to that.

</comment></comment><comment><USER11> 1\. I want to do certain things/buy things (travel places, climb mountains. buy/build small plane)

2\. need x amount of money/y amount of vacation time

3\. target next company

4\. requires certain technologies

5\. study/practice

6\. interview

7\. success / Failure (go back to step 5)

</comment><comment><USER12> The hunger in my stomach and the desire to not sleep on the streets.

</comment><comment><USER13> Macro Level: The well being of my daughter Micro (Daily) Level: Been using Motivate App and it's been really helping in the mornings.

</comment><comment><USER14> death (we're going to die at some point, let's make the best use of our time).

</comment><comment><USER15> My wife in general + having other people be impressed with me.

</comment><comment><USER16> Learning and the goal of feeling competent.

</comment><comment><USER17> Money.

Every day I want to earn more than the day before.

</comment><comment><USER18> Bringing some order to chaos.

</comment><comment><USER19> Curiosity motivates me

</comment><comment><USER20> fake internet points

</comment><comment><USER21> $

</comment><comment><USER22> Eureka...</comment>


Designing state machines - <AUTHOR> https://drivy.engineering/designing-state-machines/ <comment><USER2> A paper that changed my approach to designing state machines is "Statecharts: A Visual Formalism for Complex Systems" by Harel ([http://www.wisdom.weizmann.ac.il/~harel/papers/Statecharts.p...](http://www.wisdom.weizmann.ac.il/~harel/papers/Statecharts.pdf)).

Statecharts (also called hierarchical state machines) are essentially generalized state machines which allow for nesting and parallel composition of states. The 'nesting' part is my favourite, since it allows one to delegate event handling logic shared by multiple states to a 'parent' state, reducing code duplication.

The great thing about this paper is that you can glean most of its key ideas by just looking at the diagrams.

<comment><USER3> Exactly. UML looked like over-complicated crap when I saw it after reading on Statecharts and Yourdon. The latter are still in use on occasion in high- assurance with Tenix's Dats Diode being an example.

</comment></comment><comment><USER4> While I understand the importance of state machines and its direct usage in complex Business Logic Workflows (and indirectly almost everywhere), there is nothing special in this post. It is a generic comment on State Machines. Am I missing something here?

<comment><USER5> A surprising number of entrepreneurs and developers are unfamiliar with the application of state machines to business logic workflows, so it's useful to see the topic presented in a succinct way. Good learning content tends to get upvoted on HN, especially when the discussion around the concept (for example, the discussion of State Machines and state machine libraries in this thread) is interesting as well.

<comment><USER6> you don't even have to be unfamiliar with state machines to have found some usefulness here. sometimes it's just nice to be reminded of a concept as you're wrangling the 20 different problems you face as an entrepreneur on any given day.

the blog post wasn't particularly deep, but the (short) discussion here was worth perusing, as i'm considering employing a state machine for my rails app and have been generally looking for options and best practices (in a mental background thread). but it looks like most (all?) existing gems assume a fixed set of states and transitions, and i was hoping to find something designed primarily for user-defined states and transitions.

</comment></comment></comment><comment><USER7> There was an article posted here a while back on how to implement a state machine in Rust, purely using its type system to facilitate state transitions. It's a neat concept, even if it's a bit more verbose than what you'll find in other languages.

[https://hoverbear.org/2016/10/12/rust-state-machine- pattern/](https://hoverbear.org/2016/10/12/rust-state-machine-pattern/)

<comment><USER8> How does this compare to the expressivity of Idris' dependent types? I'm intrigued by the idea of type-safe state-machines as e.g. file i/o and network socket code is almost always error-prone. So it feels crucial to rely on the support of a strong type system here.

[http://docs.idris-lang.org/en/latest/st/machines.html](http://docs.idris- lang.org/en/latest/st/machines.html)

</comment></comment><comment><USER9> FWIW there is a standard to describing (finite) state machines despite the RFC being expired [https://tools.ietf.org/html/draft-bortzmeyer-language- state-...](https://tools.ietf.org/html/draft-bortzmeyer-language-state- machines-01)

I have used an "improved" version of it [https://github.com/andreineculau/cosmogol- abnf](https://github.com/andreineculau/cosmogol-abnf) when working on [https://github.com/for-GET/http-decision-diagram](https://github.com/for- GET/http-decision-diagram)

</comment><comment><USER10> I can't recommend Akka's state machines enough. It's an incredibly simple and rock solid state machines built right into the library. ([http://doc.akka.io/docs/akka/snapshot/scala/fsm.html](http://doc.akka.io/docs/akka/snapshot/scala/fsm.html)) We're already on a Play/Scala backend so adding these was incredibly easy for us, but I think they're one of the hidden amazing features of the akka/scala world.

<comment><USER11> I just looked through and I may have missed it but do you know if this does distributed FSM management?

<comment><USER12> Akka FSM in and of itself does not address distributed FSM's. However, supporting such would likely involve their clustering[0] support and perhaps distributed data[1].

0 -[http://doc.akka.io/docs/akka/current/scala/index- network.htm...](http://doc.akka.io/docs/akka/current/scala/index-network.html)

1 - [http://doc.akka.io/docs/akka/current/scala/cluster- usage.htm...](http://doc.akka.io/docs/akka/current/scala/cluster- usage.html#distributed-data)

</comment></comment></comment><comment><USER13> There is good tool for making diagrams (so state machines as well) called mermaid[1], just by writing simple readable text.

[1] [https://github.com/knsv/mermaid](https://github.com/knsv/mermaid)

<comment><USER14> I wanted to like Mermaid, then I realized it was just a neutered version of GraphViz. I had wanted to write a Mermaid-to-Graphviz compiler but never got around to it.

It produces pretty ugly graphs that can't be exported to any other format. Meanwhile just about ever graph manipulation program (e.g. Gephi) can handle GraphViz DOT format.

<comment><USER13> I didn't know GraphViz. I have to try it. DOT language looks very similar to Mermaid.

It was too hard to make that compiler or you have encountered another problem?

<comment><USER14> I didn't even know what BNF was when I had the idea ;)

It's still on my list of short projects. I have a lot of learning to do, knowing nothing about writing parsers and such. Yes, I know I could probably hack it together with a bunch of garbage Python. But that just does not sound fun to write, let alone maintain.

<comment><USER13> Apparently some people also wanted graphviz syntax: [https://github.com/knsv/mermaid/issues/5](https://github.com/knsv/mermaid/issues/5)

I also find another project called Viz.js[1]. It's graphviz in javascript. Looks promising. It's hard to choose between this two. On the one hand is very simple syntax, and on the other hand more flexibility.

[1] [https://github.com/mdaines/viz.js/](https://github.com/mdaines/viz.js/)

</comment></comment></comment></comment></comment><comment><USER15> When dealing with business processes, I feel that the evented nature of a formal fsm can be a bit off-putting. I have on several occasions used a batch- processing approach, that maintains state in a persistent record, giving many of the same characteristics as an fsm. Let's say we have our movie from the example (pseudo-code, obviously):

        class MovieState < Model
          belongs_to :movie
        end

        class InitialStep
          def select
            MovieState.where(state: 'initial')
          end

          def process(movie_state)
            movie_state.state = 'in_production'
          end
        end

        class InProductionStep
          def select
            MovieState.where(state: 'in_production')
          end

          def process(movie_state)
            if movie_state.movie.finished_shooting?
              movie_state.state = 'in_theaters'
            end
          end
        end

        class MovieWorkflow
          def initialize
            @steps = []
            @steps << InitialStep.new
            @steps << InProductionStep.new
          end

          def run
            @steps.each do |step|
              step.select.each do |state|
                step.process(state)
                state.save
              end
            end
          end
        end

This makes it very clear when things are happening. It's also easy to debug and test.

Of course, there are a lot of limitations, most notably that it can't deal with an async event happening. In my experience though, this can be dealt with by storing the payload of that event somewhere in the db, where the step- selector can access it on next run. One thing this model deals very well with, is delays, which is often part of business processes.

Any thoughts? Does this design have a more formal name?

<comment><USER16> That's the problem with kids these days. Everything has to be a friggin class.

You know we did some pretty amazing things with computers before OO. We even landed people on the Moon.

Can anyone program without OO any more?

Just saying.

<comment><USER15> I recognise that your tongue and cheek may be in close proximity here, but care to elaborate?

<comment><USER16> It's just a silly observation. I come from a generation that had to create products like AutoCAD to run on CP/M systems with 64K of RAM and precious little permanent storage. As an aside, few people know that software like AutoCAD started on such --by today's standards-- crippled systems.

Anyone who came up in software development through that path has a full understanding of the cost of every bit of code written, every abstraction.

Today's programmers, unless they've taken university courses to expose them to the low level stuff, are extremely isolated from the innards of what they write. They reach for classes and objects by default and seem incapable of thinking outside of these boxes. All of this adds overhead and bloat, something you had to be keenly aware of with limited memory and horsepower.

I do understand that a higher level of abstraction in the context of massive amounts of memory and horsepower can be nice. What gets me is that this is often an unnecessary default.

Going back to state machines. One does not to create a bunch of classes and methods to implement them. I see that almost as a violation of the conceptual simplicity of state machines.

I mean, to go in a different direction, I use state machine in FPGA's all the time. The synthesized hardware works fine and represents the bare minimum necessary to implement these very high speed state machines. No classes involved. One can do the same in software development.

<comment><USER15> Well.

I'll call it idiomatic form to use OO style in Ruby, which the article (and my examples) were written in. Considering the interpreted and managed-memory model of the language runtime, it is utterly pointless to worry about a few object instances. Heck, this is a language where primitives are objects.

I suspect we work in quite different areas though, which probably gives us very different perspectives of what matters. The kind of applications I build on a daily basis, deal with business processes, and integration with external systems. I/O is going to be 90% of my machines load, if it's ever doing any real work in the first place. Most of the time it'll just sit waiting for a human to do something though.

<comment><USER16> Well, of course, "When in Rome do as the Romans".

Not saying OO has no place. Of course not. That would be crazy.

</comment></comment></comment></comment></comment></comment><comment><USER17> I have recently created some dead simple code to explain the concept to colleagues whom, as the article notes, were not using this very simple and effective construct at all to control state transitions in business apps.

As the article does not really explain how state machines work let me try to do it here so maybe you will go back to your code and put one in place :) In general, if anywhere in your code you have some property/field called status/state/etc... that you update depending on events then chances are that a state machine would improve the robustness of your code.

Ok, so you have some states. For business apps this usually comes from business. For our dummy example we will simulate a day (using Haskell here for conciseness, but no worry, it's trivial and you don't need to know any Haskell to understand it):

        data State = Awake | Dressed | Fed | Ready | Work | Cafe | Home | Asleep

Now most apps stop here and thus they don't have a machinery to control how to move between these. If we were to draw a graph where vertices are the above states and edges are how we go from one to another then, without any restriction, we would implicitly get a complete graph where you can go from any state to any state. Eg. from "Ready" I could go straight to "Asleep" without "Work" :) Our aim is thus to restrict transitions from one state to another to transitions that actually make sense. Making sense obviously depends on the problem we are solving. For our example let's introduce the following events:

        data Event = Alarm | Dress | Eat | GoToWork | Think | Yawn | Coffee | GoHome | Read | WatchTV

Now that we have states and corresponding events we can draw a graph where vertices are states and edges are events. The graph is now explicit in that we can only move between states (vertices) via events (edges). To put this graph into code, let's create a function that takes a pair of state and event, eg. (Asleep, Alarm) and returns a new state, eg. Awake:

        myDay :: (State, Event) -> State

As said above, myDay is a function that takes a (state, event) pair, which we can also call a transition, and returns a state. This function is nothing more than a lookup table, aka. transition table, where we will write down how to transition between states:

        myDay (Asleep,  Alarm)    = Awake
        myDay (Awake,   Dress)    = Dressed
        myDay (Awake,   Eat)      = Fed
        myDay (Dressed, Eat)      = Ready
        myDay (Fed,     Dress)    = Ready
        myDay (Ready,   GoToWork) = Work
        myDay (Work,    Think)    = Work
        myDay (Work,    Yawn)     = Cafe
        myDay (Cafe,    Coffee)   = Work
        myDay (Work,    GoHome)   = Home
        myDay (Home,    Read)     = Asleep
        myDay (Home,    WatchTV)  = Asleep
        myDay (_, _)              = error "invalid state transition"

That's it, we have codified our graph. We explicitly stated the valid transitions and anything else is by definition invalid. We are pretty much done at this point. A state machine itself can be thought of as a generic function that takes a transition table, a transition and returns a state. This is only to decouple a specific transition table from the general machine itself, but it literally does nothing other than lookup whether the transition is in the table. If yes then it gives back the corresponding new state otherwise we get and error.

You can see a pretty picture of the above graph and some code here: [https://github.com/pwm/fsm](https://github.com/pwm/fsm)

<comment><USER18> Brilliant. Superb explanation! Just couple of days I was trying to understand this from my team mates and it took him 30 mins to make it complicated.

</comment></comment><comment><USER19> For anyone else working in ruby, I've grown to love the "Workflow" gem[1] for my state machines. It really helps to streamline things, and also has a built- in way to generate a visual of your class's states and transitions.

[1] [https://github.com/geekq/workflow](https://github.com/geekq/workflow)

<comment><USER20> Looks interesting! I've always used [https://github.com/aasm/aasm](https://github.com/aasm/aasm), but this looks pretty good.

More generally I get worried about my ActiveRecord objects getting too bulky and business logic getting all wound up in post-transition callbacks and such. But that's something that can be managed with service objects and being disciplined about triggering state changes.

<comment><USER19> I used this for a huge project with a lot of states. Separated my workflow out into individual files for each class so they could just be included at the top. Then for each transition method, I created a service object (Interactor gem[1]) to handle all of my complicated transition logic, so the object-level transition methods would just check for a success or failure and perform the transition appropriately. Really love how it turned out.

[1] [https://github.com/collectiveidea/interactor](https://github.com/collectiveidea/interactor)

</comment></comment></comment><comment><USER21> Can't recommend state machines enough. A well designed state machine makes troubleshooting straightforward and makes adding new features a breeze without refactoring much.

</comment><comment><USER22> In case you're using Python, I can't recommend this library enough - [https://github.com/pytransitions/transitions](https://github.com/pytransitions/transitions) . An absolute pleasure to work with.

<comment><USER23> For goodness' sake, no! I just ripped that package out of our production code. It's terrible! It adds methods to your object at runtime, crazy stuff.

I replaced it with just this:

            class StateMachine(object):
    	    '''
    	    A very simple FSM class.

    	    Params:
    	        initial: Initial state
    	        table: A dict (current, event) -> target
    	    '''

    	    def __init__(self, initial, table):
    	        self.current_state = initial
    	        self.state_table = table

    	    def __call__(self, event):
    	        '''Trigger one state transition.'''
    	        self.current_state = self.state_table[self.current_state, event]

    	class Foo(object):

    	    STATE_TABLE = {
    		(current_state, event): next_state,
    		...
    	    }

    	    def __init__(self, xid, token, config):
    		self.fsm = StateMachine('start', self.STATE_TABLE)

    	    def begin(self):
    	        while self.fsm.current_state not in {'success', 'error'}:
    	            method = getattr(self, self.fsm.current_state)
    	            self.fsm(method())
    	        if self.fsm.current_state == 'error':
    	            self.report_error()

If you're using Python anything more involved than a dict mapping (current, transition) -> next is just overkill. Use it, don't abuse it. ;-)

</comment></comment><comment><USER24> I typically try to avoid state machines. I like to have a function like model = reduce(model, event) where model is an environment of variable:value bindings. This function then just uses (if expr/else if expr) to find a condition in which to process the event. Processing the event involves changing the values in the model environment. I suppose on some level the two approaches are the same, but they feel and look different to me. If the "if/else if" pattern is deeply nested, then this is kind of like traversing a state machine to reach the correct state for processing the event. So in this case maybe a state machine is more efficient. However, a state machine, involves a history. You really need an external diagram. You need to see how you get to a state and how you transition out of a state. An "if/else if" type approach puts all the decision making in the code right in front of me. I don't need a diagram. The "if/else if" approach is often much more concise as the expressions are a powerful modeling approach. Finally, I prefer to avoid deeply nested if/else if" conditions, because it can be a chore to traverse the tree and really understand the path taken to get to the event handling spot. If the conditions can be written as linear list of rules where each rule can be thought about in isolation, I find this easier. This often involves repeating test conditions. Just flatten the decision tree by repeating the preconditions. This is again less efficient, but if you save the results of the expression computations then it becomes a simple test of Boolean values. I like to think of this approach as a rules engine instead of a state machine. A state machine encodes information in the state diagram so that it doesn't need to be stored in variables. The rules engine encodes all the knowledge in variables and rules.

<comment><USER16> You might want to read-up on table driven state machines. I'm not sure you have a full view of what's possible.

</comment></comment><comment><USER25> In regard to tip 4, I've been using statesman[1] which allows you to store the transitions as table backed active record objects along with any contextual metadata.

Depending on how much auditability you need on why transitions happened, this may be preferable to papertrail.

[1] [https://github.com/gocardless/statesman](https://github.com/gocardless/statesman)

</comment><comment><USER26> The podcast Podcast.__init__('Python')[1] recently interviewed the developer of Automat module [2]. The author explains when you should consider using a state machine in your Python project. I didn't realize there were so many types of state machines, and the author explains where his module fits into this ecosystem.

[1]: [https://www.podcastinit.com/automat-state-machines-with- glyp...](https://www.podcastinit.com/automat-state-machines-with-glyph- lefkowitz-episode-116/)

[2]: [https://pypi.python.org/pypi/Automat/0.5.0](https://pypi.python.org/pypi/Automat/0.5.0)

</comment><comment><USER27> What a coincidence, I've been working on a PHP state machine implementation myself in the last few days.

Anyway, I find the concept of "events" a bit weird in this case and I prefer to work with "states" only (state transitions rather than events that change the state). It seems like an unnecessary abstraction to think in terms of an event rather than a state.

<comment><USER17> Ultimately state is a function of time. Events are thus temporal effects from the outside world that can, depending on their values, cause a transition from a state to another state within the machine. If you model the machine as a graph where vertices are states and edges are events then a transition can be seen as a function from a (state, event) pair to a state, ie. (CurrState, Event) -> NewState. I've posted a simple explanation below, check it out if you like.

</comment></comment><comment><USER28> What about the DB side of things ? How do you model the state graph in the DB ?

I have been thinking of using Postgresql CTE to do this. When a cycle occurs, I just create a new step to the dB.

Anyone from CRM startups who have interesting learnings here ?

<comment><AUTHOR> If you mean modeling the state graph itself, it's usually not modeled in the db but only in the code. It could indeed be interesting to store the graph itself if it evolves often, or at least a version number.

If you were speaking about storing the instances lifecycles, a simple model using a RDBS is to store one row per transition event in a separate table. This is what the papertrail[1] gem does for example.

[1] [https://github.com/airblade/paper_trail](https://github.com/airblade/paper_trail)

<comment><USER29> "Enterprise" applications such as ERPs or CRMs often have fairly complex workflow features where _everything_ is in the underlying database - both high level workflow/state-machine definitions and compiled code.

</comment></comment></comment><comment><USER30> Anyone got tips for working with FSMs in REST and/or MVC? Very rarely do you find HTTP verbs match FSM events leading to a fudge somewhere

<comment><USER31> You might find it useful to spend some time looking into the hypermedia constraint of REST itself (i.e. hypermedia as the engine of application state). The point of REST is to represent state machines by including hypermedia links in the responses of the API. Those links describe the state transitions a client may invoke in a given state.

Instead then of mapping CRUD operations to HTTP, you would map your application semantics to HTTP methods via link relations. Link relations let you go as far past CRUD as you would like to go depending on your domain and allow you to describe your states and state machine.

I always think a good way to think about a hypermedia state machine is in the context of HTML. Consider a todo app example. You might enter the application and get an empty list of todo items. If you have permissions to add a todo, you might have a "create todo" HTML form. Once you use that form, that todo has a new form called "mark complete." Once invoked, that todo has new transitions called "mark incomplete" or "archive." Once archived, you might see a new form for "unarchive." All of this captures the state machine and transitions in the REST API itself using domain-specific semantics.

Of course, there are other ways of solving this problem, but REST with hypermedia is a great way to work with state machines. There are lots of hypermedia JSON formats out there if you're interested in exploring (e.g. HAL, Siren, Collection+JSON, etc.).

</comment></comment><comment><USER32> yes,and now skip all the bs and grab yourself a real tool [http://twysf.users.sourceforge.net/#A6](http://twysf.users.sourceforge.net/#A6) with a real manual [http://twysf.users.sourceforge.net/ccide_man.shtml](http://twysf.users.sourceforge.net/ccide_man.shtml) .combine this with m4 and generate efficient working code for luajit and c.and as a bonus you learn m4,a macro processor that can take output from cli programs and insert it inside your source code.much more pragmatic than lisp</comment>


Apply HN: A Chatbot for Discounts and Deals - <AUTHOR>

    me: Looking for a 256GB SSD
    bot: Any specific brand?: [Any] [Samsung] [Intel] [Crucial]
    me: [Any]
    bot: The best deal for a 256 SSD appears to be $74.99 shipped from Newegg [Buy] [Set Alert] [Next] [Show 10]
    me: [Buy]
    bot: Here's the link: http://www.newegg.com/2d8em
 In the next few years, chatbots are going to become more intelligent and more widely used. Ecommerce in particular will feel more like an "in-store interaction" through chatbots. We're starting with deals to help people find the product they're looking for and purchase with a single click (or setup an alert for future purchases).
We're a team of engineers in the Bay Area with experience building chatbot APIs and backend interactions for realtime chat applications. <comment><USER2> The Apply HN has closed this morning: [https://news.ycombinator.com/item?id=11588730](https://news.ycombinator.com/item?id=11588730)

Perhaps you can resubmit this as a normal post.</comment>


Find a Google Glass and kick it from the network - <AUTHOR> http://julianoliver.com/output/log_2014-05-30_20-52 <comment><USER2> This won't keep a Glass from recording. The default recorder lights up an LED when recording. If someone goes to the trouble of getting an app that doesn't light up the LED, why wouldn't they use a better recording device, like the phone they already have? Assuming that Glass users are recording or streaming everything never made sense to me. Also it would kill the battery in about 3 hours.

</comment><comment><USER3> I like the idea but using a _"...unique character string that he says he's found in the MAC addresses of Google's augmented reality headsets"_ seems problematic.

I thought MAC addresses consist of three bytes vendor ID and three bytes serial number so I'm not sure how you could filter other than on a range of serial number for a specific vendor. That might boot off devices other than Glass.

</comment><comment><USER4> > it was not possible to know whether they were recording

That's false. If you spend 2 minutes learning about Glass in person, you can tell if it's recording or not. (If it hasn't been rooted and modified.)

Furthermore, if someone WANTED to record you without your knowledge, the LAST device they would chose to do it with would be Google Glass. It'd be like walking around with one of these:

[http://upload.wikimedia.org/wikipedia/en/archive/0/0a/201402...](http://upload.wikimedia.org/wikipedia/en/archive/0/0a/20140211094727!Old_School_JVC_Camcorder.jpg)

They draw attention to themselves, which would be the last thing you'd want to do, if you were trying to surreptitiously record someone.

You might as well be phobic about dying in a velociraptor attack.

People are so irrational.

</comment><comment><USER5> There is way too much hyper paranoia about glass... it makes little sense.

"Public event, but someone might be recording, so I'm nervous" . . .

<comment><USER6> Yes, and nobody ever records video with a mobile phone.

</comment></comment><comment><USER7> Rolls eyes...</comment>


Ask HN: How do you figure out initial pricing? - <AUTHOR>

My startup provides an enterprise software product. I've spent a lot of time over the last couple of months determining the minimum viable product and am pretty happy with where that seems to be today.
The piece of information I don't have is pricing.  I can't just do A/B testing to narrow in on a price because the sample size is too small and the cost of each sample is too high.
What strategies have you used to price enterprise software products previous to sitting down in a sales meeting? <comment><USER2> For enterprise software, the story that keeps coming to my mind is <http://venturehacks.com/articles/pricing>

</comment><comment><USER3> High. It's easier to make it cheaper if you're too high than higher if you are too low. Also, everyone wants a deal so when you have high prices it's easy to discount. A high price also communicates value.

Also read this HN post regarding how increase price led to more sales. <http://news.ycombinator.com/item?id=1417745>

Price is generally the last thing considered, convince your users to want your product and the only people who won't buy it are those that can't afford it. Pricing is an art, not a science, start high and work down.</comment>