The Stack Overflow Age - <AUTHOR> https://www.joelonsoftware.com/2018/04/06/the-stack-overflow-age/ <comment><USER2> SO is definitely a force, but I feel its usefulness has faded from inattention to the user experience and use cases. For example:

#1. There's a huge "homework problem" (narrow, specific questions that aren't broadly useful). Consider flagging homework as homework (and excluding it from searches), trying to divert questioners to other resources before their question is posted ("this looks like homework..."), and more thinking about ways to codify the use case. I'd gladly help with homework if there were tools focused on that (e.g. ability to comment on specific lines of code -- Gooogle Docs for posted source code, etc.)

#2. There are oddly subjective editorial decisions, such as closing my question about an API for generating USPS priority mail labels as "off topic": [https://stackoverflow.com/questions/5690713/how-to- programma...](https://stackoverflow.com/questions/5690713/how-to- programmatically-generate-usps-priority-mail-labels)

(My view: "is there any API for doing X" is no different than "is there any method/function for doing X", it's a question of existence, not opinion. But even then, opinions are often very useful!)

#3. The best answer is often buried under the "accepted" answer. Over time, highly upvoted answers should drift to the top.

#4. There should be explicit UI support for flagging stale/out-of-date information. SO has a long tail of information now, and much of it is dated. It should be super easy to note and see that.

<comment><USER3> [2] isn't an example of "subjective editorial decisions"; your question was off-topic because 'recommendation' questions are prohibited. For that tho, there's a Stack Exchange sister site:

\- [Software Recommendations Stack Exchange]([https://softwarerecs.stackexchange.com/](https://softwarerecs.stackexchange.com/))

I _don 't like_ that 'decision', i.e. to not allow recommendations, but I understand the reasoning behind it, that recommendation questions are basically polls. [But isn't everything on which people can vote basically a poll too? Obviously yes in my opinion.]

<comment><USER4> I never understood it, either. By that reasoning, almost any technical question is an "opinion" question asking for a "recommendation".

For example, pretty much any question about C string handling has many possible answers, e.g., [1] admits that comparing two strings is "rather broad" and the various answers there recommend looping over each index and comparing chars with ==, sscanf, strncmp, regexes, and PEGs. Opinions galore!

But if you want to know the difference between AWS EC2 and EB [2], even though there's one pretty clear answer, somehow the admins unanimously find the question to be "primarily opinion-based".

[1]: [https://stackoverflow.com/questions/16013031](https://stackoverflow.com/questions/16013031) [2]: [https://stackoverflow.com/questions/25956193](https://stackoverflow.com/questions/25956193)

My _hunch_ is that due to the desire for longevity of content, there's a large unspoken bias in favor of questions about simple programs, and against questions about remote services (which are more likely to disappear or change, even though that's not likely to happen with major AWS services), and that the question closure explanations like "primarily opinion-based" are just a smokescreen.

<comment><USER5> Also there seems to be no problem with users who submit opinions instead of answers.

Q: How do I do X extremely specific thing that I need because I have an unusual case that needs this specific thing.

A (top voted): Why would you want to do X? You shouldn't do that. I clearly know more about your problem than you do because I assume everyone on here is a college student and not a developer working with a large mostly static codebase. You should do Y instead. It is much better.

<comment><USER6> I find this disingenuous. It is a _very_ common scenario that a new user knows of some way to solve some part of their question (or just thinks they do), and assumes the best/easiest/fastest/safest/whatever answer involves using that technique. This is exactly the scenario that Alex Papadimoulis referred to in his blog post[1] that I have to believe was the inspiration for his site The Daily WTF[2]:

> "A client has asked me to build and install a custom shelving system. I'm at > the point where I need to nail it, but I'm not sure what to use to pound the > nails in. Should I use an old shoe or a glass bottle?" >...[potential > answers] >b) There is something fundamentally wrong with the way you are > building; you need to use real tools.

The answerer is often telling the person, what you are trying to do sounds like a really bad/inefficient/ineffective/whatever solution. The common way to solve this is Y because of reasons A, B, and C. Are you doing something where those reasons are not a concern?

[1] [https://weblogs.asp.net/alex_papadimoulis/408925](https://weblogs.asp.net/alex_papadimoulis/408925) [2] [http://thedailywtf.com](http://thedailywtf.com)

<comment><USER5> I have no problem with alternate solutions, but for gods sake, at least answer the original question as well.

</comment></comment></comment></comment></comment></comment><comment><USER7> Stack Overflow is useful at times, and frustrating at others.

If you have basically no idea what you're doing, or just want an example for something, it can be great.

On the other hand, if you try to find an answer about something you're really knowledgeable about, the result is often unsatisfactory:

Like trying to find the reference documentation to answer some specific question, and the documentation is buried under a lot of SO questions (that usually don't answer that question).[1]

Or you find someone who asked _exactly_ the question you're looking for an answer to, but it either: has no answer, despite being very old, or has been closed due to being "not constructive" or "off topic".

[1]: While I generally prefer the in-language documentation, e.g. Python's integrated documentation is often missing notices (deprecation notices, warnings about illogical behaviour, ...) that exist in the web version.

<comment><USER8> Yes, once you start asking _really_ difficult questions that require in-depth knowledge of a niche topic to answer SO becomes less useful, since the pool of people who know enough to actually answer your question is too small.

In cases like that I usually just end up answering my own question later, after I've figured it out by other means.

<comment><USER9> This is actually one of the use cases I really like. I'll often deliberately add a question with an answer if I think it is something I'll use again in future and is not found somewhere else obvious on the web.

</comment></comment></comment><comment><USER10> It's interesting to see all the negative comments about the SO culture here. I just hadn't really noticed it but maybe it is a problem for beginners. I generally find what I'm looking for and when I post a question I try to research first to avoid spam. Isn't that how it's supposed to work?

<comment><USER11> I cannot help but read "beginners" in a derogatory tone. Or at the very least a way to hand-wave away the unhealthy atmosphere that has formed at SO.

It is definitely a problem for people with low SO Reputation since others can come along and edit their posts completely changing the context and meaning, and seem more brave to bully low rep users (e.g. delete/dup their posts).

I have fairly high SO Rep from way-back-when, and all I seem to use that for is undoing others abusive mod actions (like de-dupping something that points to a completely different programming language or framework). But it isn't a community I care to take part in much these days, too toxic.

Back in my day SO existed exactly to help beginners. Now they want to be "the Wikipedia of programming questions." So be it, but none of us have to stick around to help form their little out of date empire of desert.

<comment><USER9> For my last two jobs, I've created a new SO account for that job. I'm a pretty experienced user with decent reputation on my main account. I think I'm a pretty good question writer. I do my research beforehand, pay attention to niceties like formatting and grammar, and try to provide the right amount of context.

My first couple questions almost immediately get downvoted without explanation. Comparable questions from my main account rarely if ever face this prejudice. If I sign in on my main account and reverse the mystery downvotes, I'm usually good from that point on.

I feel a little dirty doing it. Other the hand, WTF is wrong with some of these SO users?

I work with few young developers and students who have reported similar issues. On my teams, I often encourage devs to share their questions once their posted just so we can counter this kind of crap and, if they're new, they can actually scrounge enough reputation to do basic stuff like upvote questions and answers.

That said, I'm a huge fan of the site and all the thought that has gone into the interface. And it looks like admins are doing they're best to deal with this issue. It seems like one of those eternal struggles against human nature.

<comment><USER12> > If I sign in on my main account and reverse the mystery downvotes, I'm > usually good from that point on.

That's the type of thing that will get that account deleted for vote fraud and sock puppetry. At that point, _all_ of the votes it cast will be invalidated and all of the people you've tried to help by casting upvotes on their questions in the effort to be nice will lose those votes and that rep.

That will leave a sour taste for many developers and will probably turn many of them away.

</comment></comment></comment></comment><comment><USER13> >Instead of putting all the Java programmers in one little forum and all the C++ programmers in another, we dumped everyone together and just let them tag their questions

And yet for some reason the site can't handle off-topic and pure "answerable by fact" questions on one site? So often I search for something and the top post is an closed off-topic post on SO. I've never even had one of my own SO questions closed as off-topic so it's not a personal grudge - I just think the site is very stubborn about this. So many questions and organic search results is a huge signal that they are ignoring.

It's not like they're running a forum were the first page would be polluted with off topic stuff if they allowed it. Their fear of becoming yahoo Q&A has prevented them from filling a need that is there. Often I just want to people's opinions on stuff - that's mostly why I read HN.

</comment><comment><USER14> > In the early days of the Internet, before the Web, there was a system called > Usenet which created primitive online discussion forums.

I wouldn't call Usenet groups 'primitive online discussion forums'; indeed, I rather strongly believe that in most respects Usenet was better & more advanced than current technologies.

It was _fast_. How fast? Really, _really_ fast: every article was already sitting on your local system, so there was no network lag (or just LAN lag, if your local system was on a network). Articles were plain ASCII text: no ads, no images, no JavaScript. The combination of local articles & small articles wins over web pages every day of the week.

It was easy to find stuff. While the system was distributed across the world, there was a nice, neat hierarchy. This wins over the Web, which needs a service like Google to be usable. If one wanted to, one could perform full- text search over the entire newsfeed in realtime (James 'Kibo" Parry was famous for this). Imagine being able to grep the Internet!

It was decentralised: you could get multiple newsfeeds from multiple sources. You could have site-local newsgroups if you wanted to, or just share certain groups with your peers.

It had killfiles. It's hard to express, nowadays, how valuable these were. And _you_ were in control, not some unaccountable moderator.

A 21st-century version of Usenet, with encryption, authentication & Unicode, and capable of scaling up to 7 billion people, would be just awesome.

Web forums are a primitive version of Usenet.

<comment><USER15> It was "fast" in the sense you refer to as because it was batshit: every ISP and Usenet provider was forced to keep a copy of every public message everybody was reading. In its heyday, running a market-competitive Usenet server strained commercial storage technology (running an actually-competitive Usenet server required custom software engineering), and that was with a userbase a fraction of the size of Reddit.

Of course, it was incredibly slow in a more important sense: the latency with which you'd see responses to your messages. Your reply had to propagate through the network of Usenet peering relationships before your counterparty could see it. Contrast that to "primitive" web message boards, where that propagation is instantaneous.

But, most importantly: because everyone was keeping a replicated log of everything anyone had ever sent, _almost nobody had archives_. The only way to read old forum messages was to... wait for it... go to a web application like DejaNews.

Software piracy killed Usenet --- binaries made it impossible for a typical provider (of any sort) to provide full-feed Usenet, which is what customers demanded, and so everyone gradually migrated to centralized providers. But even if that hadn't happened, Reddit would have killed Usenet eventually.

(I ran a Freenix-ranked Usenet server in the 1990s for a mid-sized regional ISP, in part by independently inventing the INN history cache; my love for NNTP is deep and real.)

</comment></comment><comment><USER16> Good to see Joel is blogging a bit more these days. I know a lot of people disagree with a lot of what he says, but he always has points of view worth discussing, in my opinion.

<comment><USER17> I think it's really weird that right now both Joel Spolsky and Steve Yegge started blogging again. Maybe we're about to hit the apocalypse

</comment></comment><comment><USER18> It's too bad the culture of SO turned out the way it did. I was eager and happy to use it early on but was quickly disillusioned and it's my last resort to turn to if I have questions these days.

<comment><USER19> From a "lurker" perspective who often stumbles on SO after a web search it's really a great resource.

On the other hand I never actually contributed anything to the website... because it won't let me. One day I stumbled upon a question regarding some problem I had, the accepted answer had a C code snippet that contained an error. I thought I'd be a good netizen and decided to create an account to submit a correction. It turns out that it wouldn't let me make an edit that was less than 6 character long (why? It was just a one character typo). So I decided to add a comment pointing it out, hoping that somebody would be able to fix it for me. You can't comment without a certain reputation threshold.

So basically if I get it right if you have a new account you can only ask questions or answer them. Except if like me you only end up on SO from your search engine and generally end up on already-answered questions (or questions you don't know the answer to since you're looking for them) then there's nothing for you to do. I'm sure they must have done a lot of testing to end up with this system but it basically means that I'll probably never contribute anything to their website.

<comment><USER6> If I recall, there are actually a number of things you can do to get rep besides questions and answers. You can edit a post (with more than 6 characters), you can do a review, you can flag a post for moderator attention, and I think even your first up-vote gives you a point or two. (Some of those might award badges instead - it's been a long time and the rules sometimes change.)

I feel like SO can't win no matter what it does. It has some limits, like requiring at least 6 characters before an edit is deemed useful to stop it from becoming a breeding ground for "grammar nazis" and other similar types. If they didn't do that, people would complain it's overrun with grammar nazis who don't focus on the actual code being posted. Damned if they do, damned if they don't.

<comment><USER12> Neither review, flag, nor vote give reputation.

The only ways to get reputation is to create content that gets up votes or do edits that improve the post.

</comment></comment></comment></comment><comment><USER20> A few months ago I wanted to learn jq really well but unfortunately I didn't really know where to start and couldn't find much of what I would call well written documentation so I decided to train myself by contributing an answer to every reasonable jq question on StackOverflow.

I found many of the newbie restrictions off-putting and if I wasn't there with the specific goal in mind to improve my own skills by helping others with their real problems I probably would have just left immediately like I'm sure many others have. Getting involved in the pettiness of the self-appointed there isn't worth the time.

I stopped contributing when my free time evaporated after changing jobs. I might go back to StackOverflow when things settle down but I feel like I know jq well enough now, my experiment has run its course and for me to learn more I'm going to have to spend some time working on the jq internals and going into deeper questions then SO can handle.

</comment><comment><USER21> _And, also: we're just a few weeks away from launching Stack Overflow Teams, the biggest upgrade to Stack Overflow ever, so that's going to be really cool._

Ah that explains firing up the old blog editor again content marketing ftw!

</comment><comment><USER22> Reading this thread makes it feel like stackoverflow has become the new PHP. You can't even say something positive about it before hell breaks loose.

It is really really useful. Actually it is indispensable. It got so many things right, just think about the world before Stackoverflow.

But the few things it gets wrong, people make it seems like it breaks everything else. Yes, it sucks. Most of the time I can't find an answer, I am frustrated. When i ask on Stackoverflow and the question gets closed or just marked as duplicate, i get even more frustrated.

Does it mean it sucks as a whole? Hell no. We gotta be grateful for the good part, and help fix the bad parts.

<comment><USER23> SO sucks for the most part. I've certainly given up on it. It's certainly not that I think I could do a better job. Managing such a large community is more than likely a losing game. It's only going to get worse, I suspect, because of the growing inequality between the old-timers (who don't actually seem that interested in answering questions but in excessive moderation) and the newbies. The only hope of SO is devolution: spin out the communities that can be saved and give them more autonomy. But this will never happen. This means the site is going to die. There are powerful negative forces aligned against it. Eventually, even the old timers who've amassed these enormous reps, are going to start wondering why they devote so much time and energy to making Joel rich. Wikipedia, at least, is a non-profit foundation.

The interesting thing will be what comes after SO. I'm always struck by the Ubuntu community which does a much better job providing fast, relevant answers and support to the community than SO ever did. (The Stack Exchange, [https://askubuntu.com/](https://askubuntu.com/), is dead. All the exciting stuff happens elsewhere.) There's also something much more organic; you've got blogs, wikis, Q&A, chat, and various reddit forums all working together to serve the community. This seems to me be the future and should scale better than SO at the end of the day.

</comment></comment><comment><USER24> > One of the biggest such forums was called Experts Exchange.

By what metric? I don't know anybody who was actually subscribed there (although they must have existed). Instead, people were using various other forums that were free. Some of these forums were absolutely huge, both in terms of number of users, and by the number of questions/discussions.

Experts Exchange started dominating Google search results, true. But I always thought this was merely due to SEO trickery, not because they were actually widely used.

Truth be told, I would be hard pressed to even call it a "forum" — typical forums (bulletin boards) functioned very differently.

<comment><USER25> Worth noting:

I always just scrolled to the very bottom of the page to see the answers on EE.

This might not have worked in the start (I don't know) but as far as I can remember it worked.

I think they did this intentionally because google would ban them otherwise.

<comment><USER19> IIRC they changed their approach several times and I think for a while you wouldn't have access to the answer at all until they changed it to what you describe (answer buried at the bottom of the page). I assume they settled on that format for the reason you mention, Google would have ended up removing them from their results if they kept cheating.

</comment></comment></comment><comment><USER26> The Pedant Police make Stack Overflow very difficult to use.

<comment><USER27> I don't think so. They try to keep it a question and answer site, not a question and opinion site.

<comment><USER28> I have tried to ask questions two times in the last few months and the responses were pretty much "if you don't know what you are doing you should hire an expert" or "why would would anyone do such a thing?". I definitely didn't feel very welcome and will stop posting there. It seems most questions that get answers are very simple and straightforward ones. Difficult stuff doesn't get discussed.

<comment><USER29> Perhaps in the first case the question you asked was too broad compared to the standard expected for SO questions? Or too precise to be of use to anyone else?

<comment><USER28> The question was pretty broad but I think discussing it would have been very valuable for quite a few people. What bothered me were the snide responses. At minimum they should have stayed quiet or explained that SO doesn't deal with this kind of question.

<comment><USER30> > discussing

SO is not for discussion!

<comment><USER11> Until it is.

Ironically most of the more helpful SO google results are helpful exactly because of the discussion/updates that took place in the comment chain under an answer from ten years earlier.

> Guys how do I filter an array in JavaScript?!

>> Use XYZ

>>> XYZ works, but it doesn't work in IE5

>>>> If you're on IE10 or above you can use ABC instead of XYZ, it is cleaner!

>>>>> Hey guys, change this {} to this {}, makes it faster on mobile!

<comment><USER12> The indents there suggest a threaded discussion that looks more like a 1 on 1 chat or threaded discussion board.

Wouldn't one of those resources be a better place to hold such a discussion?

<comment><USER31> In the best (and rarest) examples of SO, those comments percolate into the accepted answer as edits (and marked as such).

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER32> I think Stack Overflow is great and it's helped me a lot in the past, but I'm not sure how useful it'll be in the future. I've been learning Elm the past few weeks and have noticed a lack of good SO questions and answers on it. It's a smaller community, but I also think many people go to the Elm Slack channel to ask their questions, which they get in realtime.

Not sure if that's just an Elm thing. A language specific Slack is useful in the moment (probably moreso than SO) because you get a real time answer and can ask follow ups etc, but I can't help but think there's a ton of knowledge/people asking similar questions that is just disappearing into the ether. Makes picking things up harder for more people long term.

<comment><USER33> That's the problem with platforms like slack, the question is decoupled from the answer and it usually isn't archived in a searchable way. The next person googling that question will have to ask it again instead of just looking up the answer.

</comment></comment><comment><USER34> Stack Overflow (and the Stackexchange network as a whole) is the second most important website on the internet (after Wikipedia). Thank you Joel for this.

</comment><comment><USER35> Ah yes, old expert sexchange and scrolling to the bottom for answers....</comment>


Active-matrix organic light-emitting diode display on human skin - <AUTHOR> https://phys.org/news/2020-07-active-matrix-light-emitting-diode-human-skin.html <comment><USER2> At first I thought this was implanted, and thought it was insane, and now I'm disappointed it isn't! (Unless I'm still reading it wrong)

Nifty stuff, I do think we'll get to some kind of bio-luminance that is computer controlled in the next few decades.

<comment><USER3> Get paid to wear video ads on your face.

<comment><USER2> Viable career.

<comment><USER4> Luminfluencers

</comment></comment></comment></comment><comment><USER5> Great, but what about heat output?

</comment><comment><USER6> Why not fabric?</comment>


Ask YC Archive - <AUTHOR> http://www.gabrielweinberg.com/startupswiki/Ask_YC_Archive <comment><USER2> sed s/\ /\\\\\n/g < Ask_YC_Archive | grep id\= | cut -d '=' -f 3 | cut -d '"' -f 1 | sort -n

gives 363096 as the highest id there, so <http://news.ycombinator.com/item?id=363096> is the latest entry that was added to the collection, which is 1 year and 9 months old.

There must be plenty of quality stuff added in the meantime. Is there a reason why the list is no longer updated? It's a wonderful resource by the looks of it.

<comment><USER3> Gabriel mentioned it was manually done and took a lot of time. Fair enough, but boy I wish it was updated and current.

<comment><USER4> Try this:

<http://ask.searchyc.com/>

</comment></comment></comment><comment><USER5> <http://news.ycombinator.com/ask>

</comment><comment><USER6> I've got an updated one of these in the works that will be up within the week!

Let me know of any specific requests for things that Gaberiel's list doesn't have. I'm already planning on keeping a current link to the most recent "Who's hiring" and including "Rate My Startups"s.

<comment> mkr-hn I would like to see a HN question archive, meaning questions about HN. I still haven't been able to figure out how to do an indented quote block (which I've seen), but I know someone had to have asked about formatting at some point.

<comment><USER7> There's a FAQ link at the bottom of every page, and that has a link to the formatting.

<comment> mkr-hn It's entirely possible that I am blind.

I've been down there before and didn't notice the FAQ link. :(

</comment></comment></comment></comment><comment><USER8> It would be nice to have a section with all the "review my start up" posts. Those are usually some of the best ones.

</comment><comment><USER9> <http://ask.searchyc.com/> is also a good resource - posts are displayed with font sizes relative to their points.

</comment><comment><USER7> I parse that title as

"Here's your opportunity to ask questions of the YC archive"

rather than the intended

"Here's an archive of the 'Ask YC' items."

Sometimes what one writes is not what the reader reads - care required. The URL for the Italian branch of PowerGen springs to mind, as does the URL for the site listing the representatives of various celebreties.

</comment><comment><USER10> Wow it's like the old handmade directories of the web (before google ended all that).

<comment><USER11> I think the word you are looking for is curated.

</comment></comment><comment><USER12> Duplicate entry - See <http://news.ycombinator.com/item?id=1126993> for additional discussions.

<comment><USER13> People can get excited about the same thing time to time. Especially in a community new people coming in.</comment></comment>


Comprehensive guide to bash scripting - <AUTHOR> http://talesofacoldadmin.wordpress.com/bash-shortcuts/

<comment><USER2>
        $(>/path/to/a/file)

        This isn't exactly a variable, more a method of reading
        files

Do not use this for reading files. This will overwrite the file in question. The correct syntax is:

        $(</path/to/a/file)

</comment><comment><USER3> A pretty decent reference. Some of it would be easier to read if it was formatted better. ie. all the flags really don't need two lines to explain them.

</comment><comment><USER4> "Comprehensive" is a pretty tall claim, this doesn't really seem to stand up to it.

<comment><USER5> The article doesn't make any claims to being anything near comprehensive. The author describes it as being his own bash cheat sheet, and posted it just in hopes other people would find helpful what he found helpful.

A change of submission title might be in order here.</comment></comment>


Should we pay for email? Interesting take on this - <AUTHOR> http://www.imore.com/newton-and-promise-paying-software <comment><USER2> Absolutely should be paying for email. Then we know our provider is financially aligned with providing quality service, first and foremost.

<comment><USER3> Any chance you (or anyone else) has a recommendation for a provider? I'm currently on the fence between FastMail and ProtonMail.

<comment><USER2> I picked FastMail and I feel like it was the right choice. While their privacy protections aren't quite as strong as ProtonMail, FastMail is a lot more usable, and has a lot more capacity for your money. FastMail is hosted in a country with far better privacy laws than the US.</comment></comment></comment>


Employee sends his own job to China so he can surf the web - <AUTHOR> https://www.npr.org/sections/thetwo-way/2013/01/16/169528579/outsourced-employee-sends-own-job-to-china-surfs-web <comment><USER2> What a waste of your life. Why do this only to look at Reddit all day? I would have at least done something productive, learned something new, etc.</comment>


Show HN: Merchant.js, a state framework for creating idle games - <AUTHOR> https://github.com/Flaque/merchant.js <comment><USER2> I like immutable objects. But my worry is it will lead to lots of small objects being created just to get destroyed right away, putting lots of pressure on GC. I wonder if this is a known issue in the immutable js community.

<comment><USER3> GC?

<comment><USER4> GameCube

</comment></comment></comment><comment><USER5> Looks cool! Alternatively I found that Vue.js rather than React makes it really simple to handle these types of games (though you no longer have the immutability and history which can be useful for persistence). At last Ludum Dare, I quickly hacked one of those games (look at the source to see how compact it can be) [http://aqua.gistnoesis.net/ld39.html](http://aqua.gistnoesis.net/ld39.html) .

<comment><USER6> You can use Redux with Vue as well, it isn't just restricted to React

</comment></comment><comment><USER7> Looks really cool!

I think I noticed a typo in the docs here: [https://flaque.github.io/merchant.js/#totalof](https://flaque.github.io/merchant.js/#totalof)

Should "Map({GOLD -2});" have a colon between the key and value?

<comment><AUTHOR> Oh! Thanks for pointing that out <3

</comment></comment><comment><USER8> This is really nice. I'd love to make one for native mobile some day.

<comment><AUTHOR> Thanks <3

I fully recommend building one! Idle games are a fantastic programming zen exercise.

They're incredibly state-focused rather than UI focused, which means the hard parts are typically creating the systems rather than dealing with weird css quirks. For the same reason they're really easy to test so if you've ever been itching to try out some pure test driven development, an idle game might be a good place to start.

</comment></comment><comment><USER9> That paperclip game is insanely addictive!

<comment><USER10> Are there similar games designed to be "hacked" with javascript in the console?

<comment><USER11> I don't know about being designed for it, but me and a few coworkers had a great Friday afternoon a year or two ago screwing around with [http://zty.pe/](http://zty.pe/)

</comment></comment></comment><comment><USER12> The live example is broken right now

</comment><comment><USER13> I was hoping this could be used to gamify things, but this is basically a clicker, yes?

<comment><USER14> The name may not be familiar to everyone, but I believe tthats what idle games in the title refers to, i think.

<comment><AUTHOR> Yeah. Clicker, idle game, incremental game. I combine them all into the same genre in my head.

</comment></comment></comment><comment><USER15> Why Map is used instead of plain object {} ? And why it's Map and not new Map ?

<comment><USER16> Because their Map type is not the JavaScript Map type but immutable.Map.

</comment></comment><comment><USER17> I've recently been playing a fascinatingly complex mobile incremental/idle game called Almost a Hero [0] by Bee Square Games, and as a case study in game design, it's rather fascinating to think about how the developers must have implemented the game logic to result in the reliable behavior the game exhibits.

While OP's framework is well-suited to an online idle game, in which you can count on a constant thread modifying ledgers on a timeout, one of the constraints for (well-made) mobile idle games is that there should be progression while the user is offline. Almost A Hero's devs took this all the way to the craziest conclusion; you don't just accumulate predictable "gift boxes" while offline, your characters actually simulate live gameplay at an accelerated rate when you next start the game, with dozens of simultaneous powerups interacting in nonlinear ways at any given time all simulated to give an accurate account of loot you would have gained had you had the app open for that time. So if you wanted to run an accurate offline simulation of the game logic, you could either store timestamps of historical, immutable events and try to derive things mathematically... or you could step frame by frame, and keep running ledgers, _but_ you'd need to ensure that you can tick the frames based on arbitrary fractional units of time, i.e. if you have a powerup that's exactly 1.5 seconds long you wouldn't want to just round that to the nearest 1FPS frame, nor would you want to do the simulation at 60FPS when a user might have been offline for hours.

And that's just the game logic; if you actually want to animate character movement based on these values, you also need to manage declarative rendering i.e. "because I began my most recent weapon swing at time T-3, paint sprite X at time T."

All of these interactions are at play in AAH, and it's led to remarkably complex gameplay with a delightfully positive min-maxing strategy community [1].

So, returning to OP's framework, I'd encourage folks thinking about this problem to take time management into consideration as something a good idle game framework should help developers to build. It's a fun problem space to innovate in!

[0] [https://itunes.apple.com/us/app/almost-a- hero/id1116630619?m...](https://itunes.apple.com/us/app/almost-a- hero/id1116630619?mt=8) / [https://play.google.com/store/apps/details?id=com.beesquare....](https://play.google.com/store/apps/details?id=com.beesquare.almostahero)

[1] See, for instance, the guide here: [https://www.reddit.com/r/AlmostAHero/comments/706k7n/almost_...](https://www.reddit.com/r/AlmostAHero/comments/706k7n/almost_a_guide/) ; there's an active Discord channel as well.

<comment><USER18> Not sure what your point is. You think it should be possible to run the simulation at increased speed?

<comment><USER19> I think the point is that they'd like to be able to simulate things that happen _while the player is not on the page_. So, save the state somewhere with a timestamp, and when re-hydrating it compute things that would have happened while they were gone.</comment></comment></comment>


Creating a Javascript Templating Engine - <AUTHOR> http://colinsidoti.com/2011/09/creating-a-javascript-templating-engine/

<comment><USER2> It's missing namespaces, inheritance, escaping, include tags, or at least that's what I expect from a templating engine

<comment><AUTHOR> Yea there's a lot more to it, I'm looking at this as the fundamentals. If I can't make the fundamentals enjoyable nobody will use the rest of it.

Includes are kinda rough in javascript because they require a separate http request, and would get out of hand if they're used as frequently as they are in server side templating. I need to implement some type of front-end caching, but need a way to distinguish which templates are in memory and which require a request. Thoughts are appreciated.

<comment><USER2> Honesty, most are stopping at the fundamentals and not proceeding further. I have yet to see a good JS templating engine that is rich.</comment></comment></comment>


Introducing Ring -3 Rootkits: BIOS rootkit targeting vPro chipsets (2009) [pdf] - <AUTHOR> https://www.blackhat.com/presentations/bh-usa-09/TERESHKIN/BHUSA09-Tereshkin-Ring3Rootkit-SLIDES.pdf <comment><AUTHOR> Highlights from the slides:

Your CPU chipset is also standalone webserver. Most vPro chipsets (MCHs) have:

\- An Independent CPU (not IA32!)

\- Access to dedicated DRAM memory

\- Special interface to the Network Card (NIC)

\- Execution environment called Management Engine (ME)

Your chipset is a little computer. It can execute programs in parallel and independently from the main CPU!

How might we design some malware that embeds itself into the chipset? Such malware would be able to survive reboots, brick the hardware on demand, reboot on demand, act as a MITM for all network traffic, inject vulnerabilities into the host OS during bootup, etc.

Step 1: Search for an attack vector in any version of the Intel BIOS. If you can find any attack vector in any version of the BIOS, you've won. For example, if the latest Intel BIOS is v3.9.2, but you found an exploit in BIOS v2.3.1, you've still won. Because...

Step 2: ... as the attacker, you can downgrade the victim's BIOS to any previous version without any user consent! Any old version of the BIOS is of course signed by Intel; all versions are. The chipset firmware allows any valid signed BIOS to replace the current BIOS regardless of whether it's older or newer than the current.

It was pretty shocking that the BIOS can be downgraded without any user consent. Downgrading requires a reboot, but that's probably not a huge problem in practice.

This article is from 2009, so at this point it's just an interesting piece of history. But I wonder whether any of these issues still persist today, such as the ability for userspace programs to downgrade/upgrade the BIOS at will?

<comment><USER2> Once you find a bug in certain critical paths, you can write to flash at will, no signatures required. AFAICS some Samsung and Lenovo users ran into one of those when installing Linux.

As for the management engine (the CPU that drives the vPro stuff), it exists in _all_ Intel chipsets since Series 5, vPro is just a certain configuration of its firmware. It also has full access to RAM, some access to USB, network and graphics.

<comment><USER3> For reference

[http://en.wikipedia.org/wiki/Blue_Pill_(software)](http://en.wikipedia.org/wiki/Blue_Pill_\(software\))

[http://en.wikipedia.org/wiki/Joanna_Rutkowska](http://en.wikipedia.org/wiki/Joanna_Rutkowska)

</comment></comment></comment><comment><USER4> So if I understand correctly this can be used to install a persistent hardware rootkit on the chipset that listens for a "secret" knock procedure with TCP (because it has access to the NIC) and then in response to the secret signal modify the host OS kernel through DMA-access to disable for example all access checks [1].

Imagine infecting a machine with this either before delivery (requires physical access, but should be doable for FBI/NSA/foreign-counterpart) or in a "rent a server" situation. Most providers will allow you to rent a full server with root-access for a month and then cancel the contract. I'm assuming those servers get re-used if they're not too old.

[1] Code to disable access checks through DMA has been around for a long time: [http://www.breaknenter.org/projects/inception/](http://www.breaknenter.org/projects/inception/)

</comment><comment><USER5> you fight find this more recent work interesting:

[http://media.ccc.de/browse/congress/2013/30C3_-_5380_-_en_-_...](http://media.ccc.de/browse/congress/2013/30C3_-_5380_-_en_- _saal_2_-_201312291830_-_persistent_stealthy_remote- controlled_dedicated_hardware_malware_-_patrick_stewin.html)

> In this work we present a stealthy malware that exploits dedicated hardware > on the target system and remains persistant across boot cycles. The malware > is capable of gathering valuable information such as passwords. Because the > infected hardware can perform arbitrary main memory accesses, the malware > can modify kernel data structures and escalate privileges of processes > executed on the system.

> The malware itself is a DMA malware implementation referred to as DAGGER. > DAGGER exploits Intel's Manageability Engine (ME), that executes firmware > code such as Intel's Active Management Technology (iAMT), as well as its OOB > network channel. We have recently improved DAGGER's capabilites to include > support for 64-bit operating systems and a stealthy update mechanism to > download new attack code.

edit: you still have to first get the malware in though

</comment><comment><USER6> This is another excellent example of when security-through-obscurity fails; the vPro environment docs are presumably NDA-only (or never released outside Intel), but reverse-engineers will figure things out anyway, and they're not really willing to disclose how much they know...

None of my machines have vPro; I remember someone I know calling it "the ultimate pre-installed RAT" when it first came out.

Another interesting little fact: Intel's wireless cards, at least the 3945/4965 generation, also use an ARC core to run their firmware.

<comment><USER7> Oh, the 4965 generation. I vaguely remember the days of the Linux driver development, there were discussions to open-source the binary blob firmware.

IIRC this was ultimately abandoned due to the possibility of turning the 4965 into a pretty sophisticated SDR. What a shame!

<comment><USER8> Reminds me of why older Broadcom wireless chips don't have official open source drivers.

</comment></comment></comment><comment><USER9> Many of these exploits "we're just learning about now", have been discussed at CCC, Defcon and Blackhat conferences in the past few years. It's just that most people weren't aware of them. NSA, on the other hand, has paid much attention to them.

Here's another one about hardware backdooring from 2012:

[https://www.youtube.com/watch?v=tV0YqJa-0OA](https://www.youtube.com/watch?v=tV0YqJa-0OA)

But when we discover a backdoor on Intel chips (not necessarily put there by Intel) in 5 years, everyone will probably act in shock and awe that it was possible.

</comment><comment><USER10> And yet the Intel product pages say

"Prevent attacks below the operating system

Intel vPro technology protects against difficult-to-detect, penetrating rootkits and malware that threaten users working in cloud or virtual environments. It combines several hardware-based features, including Intel® Trusted Execution Technology (Intel® TXT)3 and Intel® Virtualization Technology (Intel® VT)4 for centralized image management and administration, secure network storage, and out-of-band protection—all beyond the firewall."

Irony? Or hopefully the current version of vPro as built-in to some Xeon processors is a bit more hardened...

<comment><USER11> Kind of like buying a gun for self protection and then having an intruder get hold of it and kill you with it. In a talk I gave to some Swiss banks about security a looooong time ago I talked briefly about security measures as vulnerabilities which are analogous to data protection bits being the source of data corruption errors. You have to evaluate whether the system as a whole with is more or less (or the same!) level of secure with the code you've added for security.

<comment><USER3> I hadn't really thought about ECC bits getting errors and thus corrupting the thing they were supposed to protect.

Do you know if hardware uses [http://en.wikipedia.org/wiki/Reed- Muller_Code](http://en.wikipedia.org/wiki/Reed-Muller_Code) for the ECC bits?

<comment><USER11> I believe they use Reed-Solomon encoding but as it is up to the memory controller to implement it can change. The memory just provides the extra bits for the software to use. In our fictional gun ownership example it would be like the owner hiding _multiple_ guns around the house so that if one was compromised by an intruder they could still defend themselves. :-)

</comment></comment></comment></comment><comment><USER12> Are there any ways to defend against the attack?

I can only think of buying AMD Chips with CoreBios instead, which of I don't know, if they may have similar issues. Maybe buy Tilera, or other manycore chips instead?

This article with the title: "Expert Says NSA Have Backdoors Built Into Intel And AMD Processors" raises some concerns, even though I don't know, if the source can be trusted. [http://www.eteknix.com/expert-says-nsa-have-backdoors- built-...](http://www.eteknix.com/expert-says-nsa-have-backdoors-built-into- intel-and-amd-processors/)

<comment><USER6> Not all Intel chipsets have vPro/ME.

E.g. this one doesn't:

[http://ark.intel.com/products/64015/Intel- BD82X79-PCH](http://ark.intel.com/products/64015/Intel-BD82X79-PCH)

(Whether they actually do have the silicon and are just disabled somehow and could be enabled/not is a different issue, however...)

<comment><USER2> To check, I downloaded Asrock X79 Extreme4's BIOS update and looked into it. It contains 2MB of ME firmware.

That's definitely not the vPro enabled version (which uses about 5MB), but approximately matches the regular non-vPro versions in size.

Maybe the "ME firmware N/A" field is meant to mean "don't bother, we don't want you to configure it"?

edit: updated with information from another bios update that isn't a diff

</comment></comment></comment><comment><USER13> Is this one place where the fabled BADBIOS could live?

<comment><USER14> Seems so. The independent CPU has access to system RAM, that is pretty much game over. SMM (ring -2 in the slides) may be another good choice. [0]

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

</comment></comment><comment><USER15> _Your chipset is a little computer. It can execute programs in parallel and independently from the main CPU!_

So, basically, the "trusting trust" extends to even your chipset. Basically, the majority of people are doomed to be the subjects of those controlling the means of production. Most of those few who have the wherewithal to peer past the curtain can easily be bribed and intimidated into cooperating.

Tinfoil hat on: I wonder if such vulnerabilities might have been concocted as a means of sneaking backdoors into the technical projects of non-US countries?

</comment><comment><USER14> Does anyone know if it is possible to get a dump of the firmware running on the vPro? I'd like to take a look in IDA!

</comment><comment><USER16> Time to get off the x86 consumer hardware train. NetBSD anyone? :)</comment>


Why I Feel Like a Fraud - <AUTHOR> http://blog.asmartbear.com/self-doubt-fraud.html

<comment><USER2> Competent people worry that they might not be competent. To a large extent, that constant critical self-appraisal is what _makes_ them competent.

In contrast, incompetent people regularly believe they're doing a great job.

<comment><USER3> Well said -- that's a terrific summary of my post.

<comment><USER4> This is well-documented in the literature under the name Dunning-Kruger Effect. It is different from Imposter Syndrome in that the latter implies pathology. You can learn more about research into self-appraisal and skill here: <http://en.wikipedia.org/wiki/Dunning–Kruger_effect>

<comment><USER5> Note, however, that there's newer evidence that says it's not just incompetent people that overestimate their own abilities, but "Kruger and Dunning's main data is better explained by positing simply that we all have noisy estimates of our ability and of task difficulty." <http://www.overcomingbias.com/2008/11/all-are-unaware.html>

</comment></comment></comment></comment><comment><USER6> Once some of my hard earned knowledge has internalized, I often feel like its just a collection of parlor tricks and sleight of hand. If other people took a moment to think about it, they'd see through what I'd done and exclaim "That's easy! He just XXX".

Sometimes it makes it hard to contribute back to the community, even though that same community makes my employment possible, because I fear that once they learn my tricks, the magic will be gone and I'll be seen as someone who merely pulled a fast one.

I've decided that this will be the year that I really work on some introspection and posting some of that knowledge. It will either help me get over my fear, or prove that I didn't know that much after all. At least I'll know.

<comment><USER3> Remember: When the magician shows you how the trick is done, you still go back to that magician for the next trick. The magician is still the expert.

<comment><USER7> If you know one more trick than everyone else, the best strategy is often to explain all the common tricks to the general public...

Then you are the only magician in town with real magic.

</comment></comment></comment><comment><USER8> Having self-doubts is a wonderful spur to growth and improvement and, indeed, the worst performers in my experience tend to be those who believe they have already "arrived" and who therefore have a tendency to coast and stagnate while the best are those who always see a need to strive to "fill holes" in their repertoire. At some point, one gains authentic self-confidence based on a record of achievement but even then the need to continually examine one's weaknesses is critical to sustained growth.

<comment><USER9> But there is the fear of failure because of your insights which could stop you from succeeding. Some can't overcome the fear to face the consumers with an imperfect product/service even when it is more than perfect from the consumers' point.

Many great things never got to see the light because of this I would imagine.

</comment></comment><comment><USER10> oh yeah this def sounds familiar:

        * You dismiss complements, awards, and positive reinforcement as "no big deal."

\- just reached 35K visitors after 2 months, down to top 100K in Alexa. Page Rank of 5. Meh...why isn't it a million? Why isn't it top 10,000? Why isn't is Page Rank 7?

        * You are crushed by mild, constructive criticism.

-Well I wouldn't say crushed, but it does affect me more than it should. i.e. I've had like 6 complaints about the design. After like 50,000 people saw the site since it launched. Yet it already made me start working on a redesign.

        * You believe you're not as smart/talented/capable as other people think you are.

-oh yeah, I feel like other people on HN can code stuff in their sleep, while all I do is hack things together in firebug.

        * You worry others will discover you're not as smart/talented/capable as they think you are.

-oh yeah, it just feels too easy, like I'm not doing any actual work.

        * You think other people with similar jobs are more "adult" than you are, and they "have their shit together" while you flounder around.

-oh yeah, I feel that while I spend my time "hacking" things together, others are on the phone getting coverage from CNN. That in the same period others would have created 500x more features.

        * You feel your successes are due more to luck than ability; with your failures it's the other way around.

-definitely, if I fail it's like I wasn't trying hard enough. If I win, it's just the luck of the draw,

        * You find it difficult to take credit for your accomplishments.

-Well this one not really. I don't mind taking credit. But in the back of my mind, I feel like the credit is due to luck, rather than any special work on my part. It's like anyone could hit the same #s if they tried.

        * You feel that you're the living embodiment of "fake it until you make it."

-that's actually my motto.

<comment><USER11> Can you please, um, reformat your comment.

Two newlines in the textbox makes a line in the actual comment.

Edit: It was fixed by the time I submitted this.

<comment><USER12> scroll-bar equalizer :-)

</comment></comment></comment><comment><USER13> The section below reminded me very much of the book called _Learned Optimism_ (someone on HN recommended the book and I found it very interesting). It's all about how you explain your successes and failures, and how positive explanations enable you to continue on and do well. On the other hand, negative explanations are discouraging and make you more likely to give up.

From the article:

* You dismiss complements, awards, and positive reinforcement as "no big deal."

* You are crushed by mild, constructive criticism.

* You believe you're not as smart/talented/capable as other people think you are.

* You worry others will discover you're not as smart/talented/capable as they think you are.

* You think other people with similar jobs are more "adult" than you are, and they "have their shit together" while you flounder around.

* You feel your successes are due more to luck than ability; with your failures it's the other way around.

</comment><comment><USER14> This was excellent. This is a tough thing to talk about if this is an issue for you. It's funny how these feelings come up when you're in a prominent role in a company-founder or not. I struggled with this for years and still do to some degree. I remember being in a meeting at my last job and being completely shocked after being told by several employees that they slept better at night because they knew I would take care of any problems that came up with the product and gave them the support they needed to keep our customers happy. I walked out thinking they must have been abused by very bad programmers in their past or something.

I've always tended to respond to these feelings well and just get up every day and trying to do my best. Getting praise from people is still very strange and I'm not so sure I like it.

</comment><comment><USER15> It helps to think of how poorly "real" companies perform. I mean, which software vendor ships bug free products? It's a fantasy: and the difference is that startups (that care) can turn around fixes in the blink of an eye. This leads into the greater area of support: so many large corporations treat their customers like rubbish. If you treat your customers with a baseline level of decency, they'll be happy. The bar has been set so low that if you really care about support your customers will love you!

Honestly, the "professionalism" of large corps is nothing to aspire to.

</comment><comment><USER16> Why I do not feel like a fraud

I share many of OP's sentiments, but not his conclusion.

Sure, there were many times when something I did seemed "too easy". So many times I'd listen to the user, understand their problem, and help them solve it with software. No big deal. Many of us have been doing that for years. Then the user would say, "Thank you, thank you, thank you!" "You're so much better than anyone else we've tried," or "This software is incredible! You should take it to market."

Or when I got compliments I didn't think I deserved. People called me "the smartest programmer I ever met," "brilliant," or "head and shoulders above the rest", and I _knew_ it wasn't true, but accepted their praise anyway. And believe me, I'm not bragging, I'm just sharing experiences that many of you probably had too. Others thought we were geniuses and we thought that we were just doing our jobs.

So why don't I feel like a fraud? Because I paid my dues. I may not the smartest or most gifted guy, and I'm certainly no genius, but I know I did the hard work.

While others were partying, I was debugging til 2 in the morning. While others were at lunch, I was eating a sandwich at my desk trying to find a better way to do something. While others promoted "good enough" software, I dug down 5 more levels to overcome the tradeoff. And while others accepted the status quo, I wrote my own framework to provide software that was in a different class from theirs.

I bet many of you share the same experience. Sure, we have been given gifts that many others never got, but those gifts only took us so far. We had to learn how to use those gifts. The real successes came from hard work. The kind of hard work that many people I know never do.

So if someone "overpraises" me, that's OK. I know I don't deserve it, but I accept it anyway. Kinda makes up for all those hours when I was slaving away and no one said anything at all.

<comment><USER17> _but I doubt that anyone works harder than me_

Seems like a pretty bold statement to make on a forum full of workaholic entrepreneurs.

<comment><USER16> Fair enough. Modified to "I know I did the hard work".

</comment></comment></comment><comment> alan-crowe Collide this story with Clay Shirky's piece, on hacker news two days ago: <http://news.ycombinator.com/item?id=1056689>

What flies out of the wreckage is the idea that it is not really about, in Clay Shirky's words, "Not enough women are arrogant self-aggrandizing jerks." The issue is actually how to triumph over imposter syndrome. Men are doing it by "cheating" and claiming to be able to do things that they actually can do even thought they think they cannot and are merely imposters. Women are failing to triumph over imposter syndrome.

<comment><USER18> There may be some truth to that, but I think it is more complicated than that.

In the US, women who are childless and unmarried make about 98% as much as men with similar education and experience. Women who are married and/or have kids make, on average, about 2/3 what men make which means men make about 50% more than women make. About 90% of women have kids, sooner or later. Those who don't, are likely to adopt. When a man moves, it is usually because he got a job elsewhere. When a woman moves, it is often to follow her spouse or boyfriend to his new job. This means when a given couple move, he is probably taking a step up in his career and she is very likely taking a step down. Given that women are much more likely than men to stay home with the kids for a time or otherwise take time off from work to attend to the children, for most women it makes sense to favor supporting his career goals over hers.

Additionally, most jobs and education are geared towards a schedule that works well for your typical white american male with his own car and with a woman attending to details like grocery shopping so he can focus on his job/education. This hurts not only women but minorities who have fewer resources and/or a different lifestyle/different values and cannot readily conform to such expectations. Benefits also tend to line up with the expectation that you can work full time for a number of years at it. So a woman who works part-time (even 30 hours a week) at the same company for 20 years will have nowhere near the resources that someone working full-time would have. She is not likely to get tenure, she may not qualify at all for many of the benefits programs, etc.

Additionally, studies show that male traits, like being tall or having a deep voice, are generally viewed as "authoritative". This can be an insurmountable obstacle. For example, high heels may make a woman appear taller but they are not generally associated with being in charge. They are more likely to be interpreted as "sexy" rather than "authoritative".

My personal experience has been that behavior which is viewed as normal and acceptable in men is often interpreted as extremely aggressive in a woman and is socially censured. The fact that I tend to sit up front in classes or large meetings often gets noticed by other people and seems to be viewed as "aggressive". The truth is, I do so for reasons like: I don't see that well and I have some hearing problems. Other people don't necessarily know that and seem to assume I'm some brass balls bitch....or some such. Even if they did know it, I don't know that it would be viewed as more acceptable. The last week of GIS school, I realized that most women consistently sat in the back two rows of class. Given the amount of negative attention I get for doing "aggressive" things like sitting up front, I really can't blame other women for avoiding such behaviors. <shrug>

<comment> alan-crowe I thought that the Clay Shirky piece had two flaws. First the examples were mostly about people getting a key break by pretending to have a higher level of skill than they actually possessed. His headline grabbing phrase went far beyond the actual insight in the piece. Second the insight lacked plausibility. If you claim skills that you lack, you get caught.

This second flaw required amplification. There is a huge issue with creeping credentialism. This includes asking for skills that are not infact required. Naturally people lie about possessing _these_ skills and escape detection because the question was bogus to begin with. However Shirky's article focused on examples where the skill was actually required and assessed. So there is a problem.

I respect Shirky so a question got lodged in my mind. He has seen and written about something real, but what? Two days later: a post on Hacker News about imposter syndrome. Now it makes more sense. You can draw but feel like a fraud, so when asked if you can draw, you say _no_. Then you are asked "how's your drafting?" It is good enough, but again you feel like an imposter and answer _no_. That is how opportunities are missed.

My badly written toplevel comment was intended to focus very narrowly on this area of intersection between the imposter piece and the Shirky piece.

<comment><USER18> No sweat. I've just read a lot about women's issues over the years and I think it very often gets short shrift. Even if women are 'more arrogant and self aggrandizing' or 'better at overcoming impostor syndrome'...or whatever the issue is here... That whole baby-bearing thing tends to trip them up. I've been close to some women who didn't initially have any particular plans to settle down and have kids and were all too happy to pursue life in a man's world on the terms offered. They did very well -- until they had a baby. Then it all came crashing down and they wound up enormously frustrated with their lives and bewildered at their inability to escape the fate of so many women that they thought for a time they had already escaped.

In contrast, European women have generally faired better than American women. Historically, they didn't fight for "rights". Instead, they worked for support and assistance for the burden of bearing and raising their kids. Getting that has allowed women in some European countries to close the wage gap to some extent and to do a better job of balancing career and family. They also generally have more family support and lower divorce rates. The typical historical American attitude of "Don't tread on me" (and the general F... You attitude that goes with it) works okay until you have a baby and then _need_ community support of some sort. Then bitchy positions about not needing a man (or anyone else) suddenly don't work so well.

Um, I'll just stop here. Consider it a pet topic of mine. Okay? :)

</comment></comment></comment></comment><comment><USER18> This feeling is extremely common with very intelligent/competent people. I think one reason is that it is difficult to find a valid basis of comparison. If something comes a great deal more easily to you than to most other people, you won't have to "work" at it the same way they do. Most of society measures a lot of things based on the time and effort you put into it. If you simply have a better idea/better understanding of something, that's not a valid measure. You may still work at it -- you may work very long hours in fact -- but if you are getting results that far exceed what others are doing, it can be hard to quantify how and why that is happening.

I think very smart people also get a lot of hostility from other people out of jealousy or out of feeling threatened, which I think is part of why some people seem "very sensitive" to criticism. And then if it is normal for you to accomplish things at a certain level, "praise" often rings kind of hollow. For some things, it is a little like if your spouse made a big deal every single day about "Gee, golly whiz, you drove home from work without getting into a deadly car wreck!! I'm so proud of you!! You are just so amazing!!" You might think something like "Um, yeah, I do that everyday. Shut up and get off my back you whacko."

The antidote to this feeling is finding a solid basis for comparison that makes sense to you, that is rooted in facts and not in social BS that can be biased either by being excessively impressed _or_ hostility/jealousy. Sometimes people who know you well can give meaningful feedback, both in terms of constructive criticism and in terms of telling you 'Yea, verily, you did good -- most people can't do that' without it feeling like it just rings hollow. But most folks who are only acquaintances will not be a good source of meaningful, useful feedback for this issue.

</comment><comment><USER19> Wow, quite relieved that I am not alone!

:D Thanks for sharing this.

</comment><comment><USER20> Fake it till you make it!

<comment><USER20> <http://en.wikipedia.org/wiki/Fake_it_till_you_make_it>

<comment><USER20> [http://www.brainyquote.com/quotes/authors/s/steven_tyler.htm...](http://www.brainyquote.com/quotes/authors/s/steven_tyler.html)

Its a valid quote, a very valid concept, and it is this article described in one sentence. If its good enough for recovering alcoholics to get back on their feet, and good enough for one of the greatest rock musicians of our lifetime, it's certainly good enough to be my own personal motto when diving into anything for the first time.

</comment></comment></comment><comment><USER21> Possibly related: Impostor Syndrome

<http://en.wikipedia.org/wiki/Impostor_syndrome>

<comment><USER3> It's not "possibly related," it's explicitly stated in the article, including this very link to Wikipedia.</comment></comment>


Bootstrapped, Profitable, & Proud: Logik - <AUTHOR> http://37signals.com/svn/posts/2385-bootstrapped-profitable-proud-logik

<comment><USER2> Seems like search is still huge business... all industries have same problem of information overload issue; not able to categorize and find the information they need, as and when they need it. Any inc that can come up with a decent proposal do solve this issue, is sure to do quite well.

</comment><comment><USER3> I'd really like to hear how they over came the legal barriers to innovation in the legal services domain.

<comment><USER4> It appears that they work closely with their client law firms on big projects -- presumably they bring the technical expertise, their clients bring the legal expertise.

Examples:

<http://logik.com/case_studies/japanese_data_tsunami/>

<http://logik.com/case_studies/operation_data_rescue/>

From the second case study it seems the key factor to overcome legal barriers is not to make any mistakes that anyone will ever notice.

<comment><USER5> Sorry, I accidentally downvoted you when clicking over to this browser window.

<comment><USER6> you are forgiven :P

</comment></comment></comment></comment><comment><USER7> This, monsieur, is the dream. I applaud 37signals for starting this series.

</comment><comment><USER8> Please tell me that Friday lunches are from 5 Guys ;)

<comment><USER6> HA! Yes...sometimes. We vote every Friday. It varies wildly. Five Guys burgers are ahhhhmazing though and we would probably eat them everyday if it weren't for that thumping thing in our chest telling us not to.

<comment><USER9> Here ya go:

[http://washington.bizjournals.com/washington/blog/2010/05/st...](http://washington.bizjournals.com/washington/blog/2010/05/study_five_guys_still_unhealthy.html)

[Of course that's a bacon cheeseburger, so . . . ;)]

</comment></comment></comment><comment> brown9-2 Nice looking office space they have there.

<comment><USER6> thanks! feel free to stop by and say hello if you are in DC. we have cold beer and fruit always in stock to entice the curious onlooker.</comment></comment>


Ask HN: What is it with the recent DDoS attacks on Linode? - <AUTHOR> Linode has been experiencing a wave of DDoS attacks in the last few days. I've noted connectivity issues at Newark and London datacenters. DDoS isn't something of a novelty, but being a Linode customer for several years now I don't recall having that much of a problem with availability before. Is this attack of any special significance?<p>http://status.linode.com/ <comment><USER2> [Just posted to status.linode.com]

In progress - An update from Linode about the recent DDoS attacks Dec 31, 22:45 UTC Scheduled - I'd like to share some updates about the recent DDoS attacks.

I am one of several network engineers at Linode who have been working around the clock on DDoS mitigation. While things are stable, I would like to take a moment to publicly address the large and frequent DDoS attacks that we have been receiving since Christmas Day.

It has become evident in the past two days that a bad actor is purchasing large amounts of botnet capacity in an attempt to significantly damage Linode's business. The following is a partial list of attacks we have received in no particular order:

\- Multiple volumetric attacks simultaneously directed toward all of our authoritative nameservers, causing DNS hosting outages

\- Multiple volumetric attacks simultaneously directed toward all of our public-facing websites, causing Linode Manager outages

\- Layer 7 ("400 bad request") attacks toward our web and application servers, causing Linode Manager outages

\- Large volumetric attacks toward our colocation provider's upstream interconnection points, overwhelming the router control planes and causing significant congestion/packet loss

\- Large volumetric attacks toward Linode network infrastructure, overwhelming the router control planes and causing significant congestion/packet loss

All of these attacks have occurred multiple times. Over the course of the last week, we have seen over 30 attacks of significant duration and impact. As we have found ways to mitigate these attacks, the vectors used inevitably change.

As of this afternoon, we have mostly hardened ourselves against the above attack vectors, but we expect more to come. We are working extremely closely with all of our technical partners, including our network equipment vendors and our colocation providers, to prevent future attacks.

Once these attacks stop, we plan to share a complete technical explanation about what has been happening. Additionally, we will be announcing the details of an ongoing project to significantly improve our internet connectivity and resiliency.

We would like to apologize for the lack of detail in some of our recent status-page updates. Please know that we are dedicating all resources from multiple departments to stopping these attacks. We acknowledge the amount of downtime we've been experiencing is completely unacceptable, and we appreciate the understanding and support we have received over the past several days. We will share more information as our investigation continues.

Alex Forster Network Engineer at Linode

</comment><comment><USER3> [https://news.ycombinator.com/item?id=10797795](https://news.ycombinator.com/item?id=10797795)

</comment><comment><USER4> It's becoming a major issue for us, if it's not resolved by Saturday we are pushing the big red button, we can ride out a couple more days because most of the stuff we write/run for clients is LoB for SME's and everyone is shutdown for the holidays pretty much, after that not so much and it's going to be grim.

<comment><USER5> Why put all your eggs in one basket anyway?

<comment><USER4> Frankly? Because its worked fine til now, each client has their own VPS and linode has been very reliable for 6 years for me and 3 years since I started company.

But yeah I should have and did know better :(.

</comment></comment></comment><comment><USER2> The attack is clearly of significance though Linode has not made much information public. Many have been told that the attack is bigger and better organized than the typical DDOS attack. There have been multiple methods of attack, and when one is mitigated they change to a different one. Some have speculated that a competitor may be behind it. Others have speculated that the perpetrators may be demanding a ransom to stop.

I've been following the issue closely, and that is all I know. Linode support has been careful to avoid answering questions like: "How long will this last?" and "What are you doing to prevent it?"

</comment><comment><USER6> Same have been a customer virtually from the start, all my important stuff is with AWS these days but there are still a few minor things at Linode and its getting annoying.

They will come back better from this thou. Its sad to see their business going partly down the drain, will be a huge hit.

If I had anything of use at Linode right now then I would be long gone, not many businesses could afford a week like this.</comment>


ES6 in Depth: Classes - <AUTHOR> https://hacks.mozilla.org/2015/07/es6-in-depth-classes/ <comment><USER2> Hopefully this will clear the whole "class" thing in javascript up with some people. Every time I mention using classes in Javascript I get the obligatory response, "That's stupid, they are not actual classes, just syntactic sugar. I'm not using that!" _face palm_

Yes, I know...but look at how much nicer that is to type than his first example...

Pretty good, straight forward write up though!

<comment><USER3> It's a Faustian bargain. It blesses Javascript with a wider audience, less initial balking by new JS programmers, and a few characters for established JS programmers. But it does so by deliberately misleading programmers by naming the syntax to be the same as the thing they think they want, but JS doesn't contain. That seems like a dick move that condemns a whole slew of new developers to permanent misunderstanding of what they're writing, and a fundamental lack of clarity on prototypical inheritance.

I will use it. Because syntactic sugar in this case does save some work. But I'm very conscious the code has swapped superficial clarity for deep lies.

I suspect Stack Overflow will overflow with even more 'javascript OO is broken' questions and the MDN article won't make more than a dent on clearing up that (deliberate) confusion.

I agree with Crockford on this.

<comment><USER4> The flexibility of prototypical inheritance is one of JavaScript's greatest assets. JavaScript: The Good Parts includes several different approaches to OOP which prototypes make possible.

`class` just picks one and pretends the rest never existed.

<comment><USER5> I don't see what's wrong with that. Converging on one way of doing things is part of the purpose of a standard. We still have the option of implementing a different method if we prefer, just as much as we ever did.

<comment><USER6> If it's truly a standard, there should be no other options.

Instead, this sets the stage for lots of OOPish JS which feels very different from a lot of existing code out there, and will result in awkward shims to interface the different paradigms.

We already see such ugliness in C++.

<comment><USER5> > _If it 's truly a standard, there should be no other options._

That's a bit strong. Most languages come with a standard set of data structures, but that doesn't mean they make it impossible to implement other data structures if it suits you (e.g. few languages include binary trees as a standard data type, but that doesn't mean you can't use them).

C includes standard string algorithms, but that doesn't mean you can't write your own — you can even create your own string type if C strings are problematic for some reason.

Many things in many languages are there to offer a reasonable default that is generally useful. This seems along those lines to me.

</comment></comment></comment></comment></comment></comment><comment><USER7> This is unrelated to JS classes, but is there a good reason for using getters/setters for some properties but not for other? I've always had trouble understanding why some people prefer this style. For instance, given the article's Circle definition (any of them), accessing a circle's radius is different than accessing its area:

      let c = new Circle(10);
      c.radius   // => 10; good
      c.area     // Nope, that returns a function.
      c.area()   // => 314.15... OK
      c.radius() // Raises a TypeError, 10 is not a function

Presumably, the author declared the area accessor as a function instead of a getter because it does some other computation beyond returning a stored value. But a different implementation of Circle could instead store the area and compute the radius from that[1]. In that case, would we then have to change the way of accessing the circle's properties to `c.area` and `c.radius()`?

I think it'd be much better to define these properties so accessing them has a uniform syntax: either `c.area` and `c.radius`, or `c.area()` and `c.radius()`[2]. Isn't in fact the purpose of adding getters and setters to the language to allow users to define how a property is accessed?

[1]: That _might_ make sense if it turns out that asking for a circle's area is much more common than asking for its radius, and it's done so frequently that it impacts performance; or if we prefer to have circles with nice round numbers for areas in our application and don't care too much about their radii.

[2]: Yeah, i know that there is a named principle for this. In fact i always thought that adding getters and setters was motivated by the Uniform Access Principle.

<comment><USER8> This is not a hard and fast rule and I have no idea if there is any pattern, but I reserve getters for trivial properties like `firstName + " " \+ lastName;`

If it does any non-trivial amount of work, then I always use a function. The reason for that is in codebases that I've worked on in the past, getters were heavily overused and people ended up writing code that while at a glance seemed entirely reasonable, it was actually doing an absurd amount of redundant work and was causing performance issues. I feel that requiring the `()` to invoke it as a function at least hints that "this does stuff" rather than hiding the implementation in a getter.

Does that make sense?

<comment><USER7> > I feel that requiring the `()` to invoke it as a function at least hints > that "this does stuff" rather than hiding the implementation in a getter. > Does that make sense?

It does. But don't you feel that making that distinction makes the code more inflexible for (arguably) little gain?

To put a concrete example, let's consider an "items left" property of a TODO list:

      class TodoList {
        // ...
        itemsLeft() {
          return _.count(this.todos, todo => !todo.done)
        }
      }

itemsLeft was defined as method because it's computed by iterating a list, so we deem it non-trivial. But let's say that later on we discover that a better internal structure for our TodoList is to have the unfinished and finished todo's in different lists, so our itemsLeft becomes "trivial":

      class TodoList {
        // ...
        itemsLeft() {
          return this.unfinishedTodos.length
        }
      }

If using getters is preferable for trivial properties, should we then change itemsLeft to be a getter and refactor the existing code that uses it?

Besides, there's the problem of having to draw a line between trivial and non- trivial code (e.g., "is string concatenation trivial?", "but it's O(n+m) on the lengths of the strings!", etc). Using always the same style for accessors (either plain-old methods or getters), regardless of how complex the underneath code is, frees us from having to make this consideration in the first place and also leaves the door open for changing an object's implementation without changing its public interface.

\---

I feel this perception probably depends on the language background tough. E.g., in languages like Ruby you always interact with objects via messages, so you never have this distinction of whether something is computed or not from a the caller's perspective (or at least not in a syntactic level).

But it's weird that this distinction is made in JS though, as many of the classic JS APIs have computed properties that "do stuff", and quite a lot! (e.g., Node#textContent). My guess is that most likely it's a result of the language lacking user-definable getters and setters for such a long time.

</comment></comment></comment><comment><USER9> Working with classes in ES6 is such a relief. My only complaint is that if you save a method as a variable or pass it to another function, it'll just be a function with its own scope (`this` won't reference the class instance, but instead the method function).

Easily "fixed" if you remember to put `.bind(this)` everywhere, though.

<comment><USER10> Or use :

      myMethod = (arg) => {return this.value + arg;}

With es7.classProperties in babel. [https://babeljs.io/docs/usage/experimental/](https://babeljs.io/docs/usage/experimental/)

<comment><USER11> Or more tersely:

      myMethod = arg => this.value + arg;

</comment></comment></comment><comment><USER12> Fun fact: code within a class definition is always strict mode code. Indeed, so is anything within a module.

<comment><USER4> w- _what_?!

So there is a new way to activate strict mode?!

<comment><USER12> Nope, you'll still need to use "use strict" if you're not in a class definition or a module. It's just that classes and modules are strict mode by default (and there's no way of changing that as far as I know).

</comment></comment></comment><comment><USER13> I'm sad that they don't have executable bodies. That was a key feature of CoffeeScript classes for me, and not having it makes ES6 classes considerably less useful/interesting.

</comment><comment><USER14> Not gonna lie, classes, destructing, TCO, and all these "engineering optimizations" are great... but what JS really, really, really needs is some sort of way to declare decorator macros. A great use case for these macros (especially in the browser) is in dealing with those god-awful deprecation warnings any given big-enough framework will eventually start spitting out after enough usage.

Right now, framework developers use console.warn which, as a function, is usually buried in the framework, and so gives stack-traces that are entirely useless to a developer using said framework (especially if the framework wraps console.warn in some way). A good clean way of declaring macros will allow JS frameworks to not be cancerous to maintain by making the stack-trace for deprecated user-code very easy to spot and correct.

And unlike features such as classes, generators, symbols, and even TCO that are reasonably achievable through clever engineering, macros flat-out have to be special-formed in. But their utility in making JS a much more maintainer- friendly language would go a long way to reducing the misery of us plebeian js users.

<comment><USER15> You mean like the ES7 decorators proposal[1], or something else?

[1] [https://github.com/wycats/javascript- decorators](https://github.com/wycats/javascript-decorators)

<comment><USER3> But decorators are just syntactic sugar around functions. You can have them now with;

        var deprecated = function(fn) {
           console.warn("Deprecated!");
           fn.apply(this, arguments);
        };

then

        var oldMethod = deprecated(function() {
        });

In ES7 you'll be able to call decorators with the new syntax:

        @deprecated
        function oldMethod {
        }

But nothing stopping you writing modular code now. The complaint about 'I have to write console.warn everywhere' seems to have an obvious answer; 'no you don't'.

As for other issues with ES6+7, the new syntax trades a few characters for a lack of clarity about what is actually happening.

<comment><USER14> Thanks for writing it out, but you've actually illustrated exactly my complaint. When you call oldMethod console.warn will spit out the line number of the wherever in your framework you have the

        var deprecated = function(fn) {
           console.warn("Deprecated!");
           fn.apply(this, arguments);
        };

declared... but you (as the user of a framework) still have no real idea where the actual function you shouldn't be calling (the fn) lives in your code (especially since the function can be anonymous)... you just know that the framework is telling you you're using a deprecated function somewhere in the code you wrote.

What I really want, and what can't be achieved with your purely in-language solution (and it really is a great solution considering the constraints), is a special form for things like @deprecated such that it straight-up can capture not only the function it's decorating, but also meta-data about the function (e.g. where it's declared, the caller / callee, etc.)

<comment><USER3> I was responding to the person responding to you mostly, but thanks for clarifying, I'd not taken your issue seriously in my reply.

Having just a deprecated macro seems very narrow and special case to me.

Something like FF's getSource would work.

        var deprecated = function(fn) {
           console.warn("Function "+fn.name+" deprecated (at "+fn.getSource()+")");
           fn.apply(this, arguments);
        };

but obv. isn't useful in real code at the moment because it is FF-only (afaik).

I'm generally quite nervous of 'special forms' in languages that don't allow you to define them yourself. Part of why scheme is so powerful is that most of it can be implemented in the same tools it gives you. I'd like to see that approach.

</comment></comment></comment></comment></comment><comment><USER16>
      static set circlesMade(val) {
        this._count = val;
      };

What's the value of "this" here?

<comment><USER17> It's the class constructor function.

Something like:

      Function Circle(){}

      Circle.circlesMade(val) = function circlesMade(val){
        this._count = val;
      }

<comment><USER16> That's strange, coming from Java.

<comment><USER17> That's a validation of some of the other discussion in the thread. JavaScript gets a 'class' keyword, but it's really just syntactic sugar over prototypical inheritance. So there is some misunderstanding about what it does and doesn't do.

That said, it could have also been written as:

      static set circlesMade(val) {
            Circle._count = val;
      };

which means the exact same thing, and would maybe help people to understand that "_count" is just like a static class property on the Circle "class"

</comment></comment></comment></comment><comment><USER18> So... JS with Classes... or JS++

edit: Why the downvote? I'm just having a bit of fun.

<comment><USER19> Regarding why you're probably getting downvoted: your comment does not add much to the discussion. Quick one-liners, which tend to make the obvious jokes, are usually seen as noise, and get downvoted.</comment></comment>


Why is there a weight limit for carry-on luggage when the plane is almost empty? - <AUTHOR> https://travel.stackexchange.com/q/154854/101 <comment><USER2> The plane may be almost empty, but your wallet is full...</comment>


HireHive (YC S10) shutting down - <AUTHOR> http://hirehive.com/ <comment><USER2> Just to be clear, our company isn't shutting down, we're just turning off our initial product so we can focus on a new product we're working on that we think has bigger potential.

<comment><USER3> Awesome that you're pivoting instead of giving up ... best of luck!

<comment><USER4> Thanks! We're pretty excited.

</comment></comment></comment><comment><USER5> Wasn't there another YC company in the recruitment space that shut down a while back?

Oh, it was SnapTalent (I think they wrote about their experiences, too). Is the recruitment industry just a tough nut to crack?

<comment><USER2> Just to clarify, we're shifting focus to a new product (also in the hiring space), not shutting down.

</comment></comment><comment><USER6> Are you guys sticking with the Recruitment industry or is this a completely new thing?

<comment><USER2> It's a different product, but still in the hiring space.

</comment></comment><comment><USER7> Good luck guys! I liked the idea of HireHive, but it seems like execution might have been difficult. Good luck!

</comment><comment><AUTHOR> This is too bad. I really enjoyed the YCommonApp, and hope something fills its place.

<comment><USER2> We're going to keep the YCommonApp up for the time-being, but in the long run we think our new product will do better at matching YC (and other) companies with people who are good fits.</comment></comment>


Top 5 Secrets Of The Moon - <AUTHOR> http://www.cosmosup.com/top-5-secrets-of-the-moon/

<comment><USER2> I've been looking at your posting history and I'm curious - what is your connection with the cosmosup.com web site?</comment>


Using AdWords to assess demand for your new online service, step-by-step - <AUTHOR> http://startuplessonslearned.blogspot.com/2008/11/using-adwords-to-assess-demand-for-your.html <comment><USER2> I worked for a startup that employed this strategy. It didn't work - not even close. That's not to say it can't. But I became skeptical. Among the problems I observed were:

1\. What's a successful test? We collected lots of data, but in the end it was still a gut decision which product(s) to go with, with all the usual emotional factors in play.

2\. Just because people say they want a product, it does not follow that if you build what you thought they meant, they will buy it.

3\. Tests can get a lot more expensive than you expect, and you may need to run a lot of them. This is related to #1, since you have no objective criterion to know when you're done testing.

4\. This is a mechanistic model for making products, which assumes that you can turn a product "on" or "off" depending on data. But many successful products don't come into the world that way. They are driven by vision and total commitment on the part of the makers. (Think of that guy at Apple whose project was canceled and who snuck into the building for a year to keep working on it.) This is psychologically incompatible with the idea of testing a bunch of ideas, none of which you care about that much, and picking the best one based on some test results. That approach that tends to be favored by managerial types who don't much care what it is they're managing - not the classical entrepreneur who's consumed by a passion. Who do you think is more likely to have the kind of persistence needed to carry a product forward?

I came out of this with two conclusions. One was that there already is a mechanism for testing which ideas will have market success: the market itself. So the strategy here is really to beat the open market, which gives some idea of how hard it is to execute.

The second was that this way of working is not for me. I want to work on something that I am passionately commited to because it is a creative expression of my being - as well as something that people will pay for. Sometimes the one has to precede the other.

<comment><USER3>
      Who do you think is more likely to have the kind of
      persistence needed to carry a product forward?

Someone who is confident that he is building _something people want_.

You have to make up your mind on whether you're building something people want, or something you want. Either is fine, but you have to walk into this with open eyes.

<comment><USER2> _Everyone_ is confident they're building something people want. The question is, how do you propose to tell if it's true? Ultimately, the only way to know for sure is to bring it to market.

Measuring sign-ups on landing pages from Adwords did not (in the cases I observed) live up to its promise as a short-cut in this process, for the reasons cited.

Edit: I certainly believe in adapting what one's doing in response to market evidence - e.g. listening to one's customers - rather than stubbornly assuming that one knows what people want. That, however, is not the point of the OP.

</comment></comment></comment><comment><USER4> This strikes me as unethical, and probably illegal in the United States. We have a set of consumer protections called Truth in Advertising that probably apply here.

<http://www.ftc.gov/bcp/edu/pubs/business/adv/bus35.shtm>

<comment><USER5> I don't think he's selling anything. When the visitor arrives on the webpage, he's greeted by a mailing list subscription form.

<comment><USER4> He writes: "Our goal is to find out whether customers are interested in your product by offering to give (or even sell) it to them, and then failing to deliver on that promise."

Again, this feels unethical. If this practice was widespread it would further undermine trust online. It probably violates AdWords terms of service too.

<comment><USER6> I'm assuming the goal is to see how many people would click on a "Register" or "Buy Now" link, rather than to see how many people would fill in their full credit card and shipping information? The former seems like it would still give some valuable information without being too bad, while the latter does seem questionable.

</comment></comment></comment></comment><comment><USER7> I'm conflicted about this. On the one hand, it seems like a good idea to test your product ideas in this cheap way. On the other hand, you could easily miss great products that just need a little time to catch on—some products don't lend themselves to an immediate decision based on some web page ad copy. For example, in _Founders at Work_ Joel Spolsky talks about launching FogBugz:

 _We had no idea [how FogBugz would do]. At the time, you could have told me that this thing was going to sell zero copies, and I would have believed you. You could have also told me it was going to sell $50,000 a month's worth of copies—an equally unrealistic number—and I would have believed that too.

Now I have enough experience to know that almost everything you launch is going to sell $2,000 to 3,000 in the first month, and that's the way the first month of any software product always is, if you do things perfectly. But at the time, I just had no idea what to expect._

</comment><comment><USER8> Tim Ferris also uses these techiques to test his ideas in his book, The 4 Hour Work Week

</comment><comment><USER9> The tactic described in the article has limitations, but the underlying purpose of properly assessing the market before building the product is exceptionally important.

</comment><comment><USER10> Yes the old de-risk test ...not for me, because people don't know what they want!</comment>