skysight-inc/HackerNews huggingface dataset:
If this was a PR stunt, thumbs up. If it wasn't... thumbs up anyway :)
I recommend _Programming Language Pragmatics_ by Michael Scott as a good book to get you started:
http://www.amazon.com/Programming-Language-Pragmatics-Third-...
Nike Dunk High Supreme Spark LE East
Hmm, I can see it tackling part of the problem, but I don't think it's quite the brand-advertising part of it. Foursquare can only differentiate long-term behavior of user A versus user B, and correlate that with ads, but it can't answer: how did a large advertising campaign change the long-term behavior of a large segment of society? The problem is that behavior in that case is highly correlated: the goal with brand advertising is to change general cultural perception of a product, which depends in large part on word-of-mouth and shared perceptions among social groups. You're hoping to somehow intervene into that so that in the 2010s, 7-Up will seem cool to young people (or at least, cooler than if you hadn't launched your big ad campaign).

So the A/B test you want can't be something as simple as: we show user A a 7-Up ad and don't show it to user B, and see if that changes 7-Up purchasing habits.

Rather, it's something like: in the year 2011, spend $m on brand ads trying to improve the image of 7-Up, so people think it's cool and not the red-headed step-child version of Sprite. Then, re-run that same year 2011 without spending the money, and see how much difference there was in total sales.

The problem, of course, is that it's really hard to rerun years. ;-) You can try it in different years, e.g. increase or decrease your ad budget in 2012 relative to 2011, and see if it has an effect. But then you have to find some way to control for the fact that 2012 is different than 2011 in a lot of other ways too, not to mention that it follows 2011 so isn't independent of it, which makes it hard to draw any firm conclusions about which level of ad spending had what effects.
Does anyone else notice this pattern and find it strange:

Feature X on my new Apple product is great. It's much better than the flawed version on my earlier Apple device.

The retina screen and camera are two big areas where Apple might have previously been considered behind the curve, yet they get strongly praised for being better than their earlier efforts rather than benchmarked against current rivals.

Compare the gasps of delight of someone comparing a Retina display against years old iPhones, compared with the "meh, looks about the same" response when compared with a Super-AMOLED screen from Samsung.
Ask HN: How can I get better at design?
While for larger projects it makes most sense to partner with a designer, I would like to be able to make my own hobby projects/sites look a bit better (http://vowsjs.org/ is a fantastic example - I wouldn't even know where to begin). The problem is, I'm not terribly artistic. I understand HTML/CSS fine, and I can tell what (I think) looks good, but I wouldn't have a clue how to do it myself. Is this something I can improve at, and if so, how? Thanks.
Neither do I, for the exact same reason as Tim. Why bother relying on precedence rules when your code is clearer if you use parenthesis? Even if you know the precedence rules, there's no guarantee someone maintaining your code will.
Why the FBI caught those spies now.
I'm 100% with Tim here, I've never felt the need to memorise the order of precendence for operators - as long as I've got my parens I'm happy. Luckily I seem to work with others who feel the same way. If we did have someone insistent on pushing the boundaries of readability I'd spend about a minute looking up the precedence rules then another few weeks framing the perpetrator for some real-life infraction as a form of punishment (depending on the particulars this could range from petty theft all the way through to light to medium treason)
On paper it seems possible with JSONP requests and canvas' getImageData().
I agree that there's a lot of junk out there. Almost all the "professional", published advice I've skimmed or read on pregnancy, for instance, amounts to "do whatever the pregnant lady says". Somehow I find this less likely to be good advice and more likely to be fodder for sales, to get women to buy a so-called "authoritative" source that justifies unreasonable behavior under the guise of pregnancy.
Wilkins Micawber -- http://en.wikipedia.org/wiki/Wilkins_Micawber (A character in Charles Dickens' novel David Copperfield)

"Annual income twenty pounds, annual expenditure nineteen pounds nineteen and six, result happiness. Annual income twenty pounds, annual expenditure twenty pounds ought and six, result misery."
Not just the PPC -> Intel switch, before that they switched from 680x0/m68k/68k/68K to PPC as well. Which certainly wasn't just a simple recompile.
Item #2 of The Zen of Python is my favourite:

Explicit is better than implicit.
I Hate Luv Storys: Movie Reviews, Wallpapers, Photos
After the success of youth-oriented film ‘Wake Up Sid’, Karan Johar is back with yet another energeticmovie, ‘I Hate Luv Storys’. I Hate Luv Storys is a upcoming hindi movie in which Imran Khan and Sonam Kapoorare in main roles
I assumed it was a tenacity thing -- note the dog has something in its teeth and is presumably very reluctant to let go.
Bad programmers are the cause of everything you said, not the tools they use. For example, if you compile a language to machine code and use a linker, then I can inject memory errors and violate your view of state. Unless you have link time assertions, your carefully crafted "safe state free" languages aren't.

"State is also a major source of error" is an unsupported claim. Show me any usability study that confirms removing state improves a programmer's source and understanding of the solution.

The truth is, all of the concepts of state free, type systems, assertions, and design by contract are just specific limited cases of a more flexible assertion system. Type systems are a compile time assertion that you are getting a type you expect. Design By Contract are runtime assertions about state of the system. So is assert in C. Removal of state like in Haskell is just a very restrictive design by contract alternative compile time assertion.

If all of these are specific cases of a general assertion system, then none of them cover the complete set of assertions you'd need to truly make "safer" software. You'd need link time assertions (dll hashes and version required, function prototypes required), compile time assertions more flexible than types, and runtime assertions like design by contract.

Unless your language has all of those in an optional way (which would be a pain in the ass to use) then your language is truly no better than C.
Back Pain Or Backache - Not To Be Ignored
Top 25 Startups Revolutionizing Computer Forensics & Security
"Memory is predictable, and with Valgrind not a danger."

I find that statement a tad too optimistic. If you use Valgrind continually (and people really should), you do catch memory misuse in normal situations. It does not say much about how well programs function with 'abnormal' inputs (accidents, exploits).

Given that bugs do happen, even to the best of programmers, would you rather have a buffer overflow or an exception? It depends on the application and context, but it is harder to answer (and get it right) than the author pretends.
Now replying to the modified version. My response to your first version is here: http://news.ycombinator.com/item?id=1473088

Anyway ...

Don't take this the wrong way ... probabilities are easy to get wrong ... I'm only having the conversation with you because you're getting it completely wrong, and yet you appear to want to learn.

You say:

P(blue_head OR red_head) = 1
you said that you're retrying until this happens
normally this would be 3/4

This is an incorrect application of Bayes' Theorem. The whole point of taking P(X|Y) isn't that P(Y) can be then taken as being 1. P(Y) remains the probability of Y. The point is that when we then only consider those events where Y occurs, then we have conditioned our probabilities, and the formula gives us what we want. Specifically, relative to Y, the probability of X changes.

Using "BH" for "Blue coin shows Head" and "RH" for "Red coin shows Head" we have:

P(BH and RH | BH or RH)
= P(BH and RH and (BH or RH)) / P(BH or RH)
= P(BH and RH) / P(BH or RH)
= 0.25 / 0.75
= 1/3

You then go on to say:

P(BH OR RH) = P(BH) + P(RH) - P(BH) * P(RH) = 1

Taking just the second part of this:

P(BH) + P(RH) - P(BH) * P(RH) = 1

and adding P(BH) * P(RH) to both sides we get:

P(BH) + P(RH) = 1 + P(BH) * P(RH)

Since by symmetry P(RH)=P(BH), and letting x=P(BH)=P(RH) this simplifies to

x + x = 1 + x^2

The only solution to that is x=1, so P(BH)=P(RH)=1

Your math is clearly screwed at this point.

So I've given you the correct interpretation, I've shown you where your calculations are wrong, and I've explained your incorrect use of Bayes' Formula.

Twice.
Exciting the press just for the sake of PR can backfire on YC anytime soon
If you can believe Peter Norvig maybe they do ok despite their interviews, not because of them:

"One of the interesting things we've found, when trying to predict how well somebody we've hired is going to perform when we evaluate them a year or two later, is one of the best indicators of success within the company was getting the worst possible score on one of your interviews. We rank people from one to four, and if you got a one on one of your interviews, that was a really good indicator of success."

http://gawker.com/5392947/googles-broken-hiring-process
(The first quote)
I don't know, I think character is a really important trait. If someone is a womanizer and consistently breaks his commitment to his spouse, why should we believe that he will deal any differently with us? One is to have the most intimate, enduring, unbreakable commitment to his spouse, and if this person considers such an intimate connection worthless, why would he place any value on your professional relationship?

The best way to find success in hiring is to hire people who are honest and moral all-around. Don't make exceptions just because someone is supposedly a "rockstar programmer"; even if he can write code 10x more efficient than anyone else, it's almost never worth the added interpersonal friction. Life -- and business -- is all about relationships, not technicalities.
"I have never bothered to learn, nor will I, what the default modifiers for Java’s variables and methods are"

That means that he doesn't understand "package" level access. There is no "package" keyword (well, there is, but it means something else). To get package-private access you have to leave it unspecified, so that means he can't use this feature. Or grok it when he comes across it.

The lack of a keyword for this is a shortcoming in Java, IMHO. But even if you don't use it often, you should have an inkling of how it works.

http://stackoverflow.com/questions/403583/what-is-the-use-of...
It's not just about restraint. His point on frugality (I think) was it's important to release capital for reallocation. It depends what you read into "save", because you'll not build much wealth by holding cash on deposit. I would put it more as "invest, invest, invest". Read "The Intelligent Investor" and go from there.
Alternatively, you could work HARD at being bloody good at what you do.
Drink white beer only in reasonable amounts!
Is this really the future of web apps?
You can add Wikipedia to that list as a site waging a "never-ending active program of preventing it."
mail2brain.com took 6 minutes to identify the product
Product: Spiderman
Link: http://mail2brain.com/static/f00dba0fe1218b1f9b5becd0483e869...
Well, heavy heavy cool frontend for mturk :)
No need to put the server in the title
Honestly, it comes down to other languages not understanding how sockets, pointers, and memory really work. When you do servers like this, that's all you're dealing with (plus parsing). In other languages they try to hide these things away from you, or just screw up the concepts making them no easier to use.

For example, if you want to parse an HTTP header in Python you have to iterate through either integers, or break it up into smaller strings, or use the really bad tokenizer library. Most languages with immutable strings make fast parsing and "copy on write" semantics difficult, so they're already harder to work with.

Another example is how they screw up sockets. In C sockets are simple, requiring only a few function calls to work with, and then a bunch of error conditions. Everything you get out of them is bytes put into a buffer of your choice. In other languages you have to work with some badly designed OOP layer that makes no sense, exception classes for each errno, randomly sized buffers with no Chord data structure, or an event system like Twisted that gives no ring buffer or state machine functionality.

In the end, implementing the solid core of a web server is just easier in C. I wouldn't want to implement a full blow web app in it, because doing something like a template system is murder (dynamic languages win hands down there). But the core is much easier.
This whole thing is seeming more and more like a brilliant PR move by Posterous. Don't the twitpic guys realize that lawyering up is just stoking the fire at this point?
How and Why trees - an almost forgotten idea? (1995)
You know, you bring up another point: Memory leaks are not a "safety" problem in a web server. Just look at Rails. <rimshot>
You could try Microsoft .toolbox http://www.microsoft.com/design/toolbox/school/default.aspx
You need to constantly validate your theories against the real world, what other people say is not enough.

This means: solve a lot of problems after you learned a theory, try to feel out the problem space yourself by extending the theory or applying it in a specific way, practice, practice, practice, and always look out for things everyone considers true but are not obvious from the data.
The classic document on this topic is Richardson's Maturity Model, which is quite well and compactly explained by Fowler in his article:

http://martinfowler.com/articles/richardsonMaturityModel.htm...
Wow ... I just saw type-safe macros / quasi-quoting.

It seems that Haskell is the language I've been searching for all my life :-) ... unfortunately code written in it looks really scary.

I mean ... when I look at good Python / Ruby code, I just get what's going on ... that's partly because I know these languages, but on the other hand they encourage programmers to do literary story-telling.

Maybe someday Haskell will get reinvented into some form meant for mere mortals :)
Can someone explain to me how giving away "free" licences with strings attached is good PR? Makes me skeptical of the integrity of someone recommending their product.
The more money you spend on something, the more you need to hear that you did the right thing. At school in a psychology course I learned that there is advertising created for people who already bought the stuff (like an expensive car), to prevent them from worrying.

Still, the level of reassurance Apple fans need is a bit disturbing. If it is so great, why not just shut up about it and enjoy it?
Well, your logic applies to every language, no matter what, always. The only difference is the types of errors it can't handle and what tools you need to avoid them.

I think of valgrind as a GC compiler.
Same here, but I find that questions on precedence often pop up during the interview process and the interviewer wants to know details and he is not satisfied with the parens.
Those numbers seem to change every time I reload the page...
Thanks man. I'm pretty stoked about it too. It's shaping up nicely and is tons of fun, not to mention I really think it's got potential.

I just hope it honestly puts an end to this insistence on "one language to rule them all".
Would perhaps have worked better for displaying tenaciousness if the something wasn't a pink teddy bear :-)
There are a lot of things you don't need to know in order to use a language fairly effectively: you can always look up syntax & things like operator precedence. While that is a good strategy when you need to switch languages frequently, it also means you'll never be an expert in language X. Which, for plenty of programmers, is a good thing.
This is a good set of tutorials to get you started : http://www.noupe.com/tutorial/the-ultimate-collection-of-bri...
I didn't mean to appear to disparage college, I myself am a recent graduate.

The point I was making was that some people, in order to be highly successful, have to do things that seem weird, risky or downright crazy in order to get ahead (things that their friends, family, business partners, investors etc wouldn't approve of or don't see the reason for).

Examples:

- Sergey Brin is on leave from his PhD studies in Stanford. If the price of me not having to use Yahoo or MSN to find stuff online is the knowledge that one of Google's co-founders doesn't have his PhD yet because he dropped out of his studies to co-found Google, then that's a price I'm willing to pay ;-). Apparently his parents still aren't happy that he doesn't have it, even though he's the 24th richest man in the world.

http://en.wikipedia.org/wiki/Sergey_Brin

- A guy called Michael Burry was the first man to 'predict' the housing market collapse in the US. Author Michael Lewis profiled him in his book, 'The Big Short'. His investors criticized him for years that such a stance was insane, un-American, impossible etc. Mr. Burry didn't listen to any of them, and stuck to his guns because his own research and insight told him he was right. He made millions in a short space of time when things went pear-shaped near the end of 2008. Others copied his strategy also, and made out like bandits.

See: http://www.vanityfair.com/business/features/2010/04/wall-str...
Day Trading Course | How To Trade Stocks
Online Trading Institute provide courses and classes in Intraday Stock Trading, Futures Trading, Forex Trading, Commodites Trading, Currency Trading for Traders in Houston, New York City, Los Angeles, Chicago, Philadelphia, San Diego, Dallas, Phoenix at Texas, New York, California, Illinois in USA.
You can also read about design and user interfaces, it will not help you directly in making "pretty interfaces" but it will help you make "interfaces that just work".

Believe it or not one book that helped me with designing web/desktop interfaces was a game design book.
Install Firefox 3.6 add-ons in Firefox 4 beta
When thinking about getting better at design, do not think making things pretty.

Instead, think how you can solve problems, how you can make your users' life easier. And this actually begins with a lot of thinking.

I cannot recommend you any specific sources but most of the people learn design by trying. If you want to improve your visual skills, look at other designers' works. Try to copy them (do not steal :), read tutorials.
Stock Market Course | Stock Trading Tips
Stock Trading Academy Focus on Notes for Professional Equity Traders, Futures Traders, Commodity Traders, Forex Traders, Energy Traders, Investor Tarders Notes in Houston, New York City, Los Angeles, Chicago, Philadelphia, San Diego, Dallas, Phoenix at Texas, New York, California, Illinois, USA."
I think it's more probable that the numbers in the infograph are inaccurate. We have no idea how the DOT did their survey.
Ask HN: If you are CEO of Microsoft, will you build a Microsoft branded PC?
What is stopping MS from doing so? They already have MS branded phones and tons of experience building computing hardware (XBOX 360).
> The Dalvik virtual machine that ships with Android interprets byte code. A byte code interpreter has a few advantages over a stack that runs native code. Performance is not one of those advantages.

This is a cheap shot.

First of all, when building a JIT or a tracing compiler, it's always better to start with an efficient interpreter ... and for all intents and purposes, Android has a kickass interpreter.

Then you can add incremental improvements ... like JITing, or various tricks to optimize dynamic code paths. And this is where Android is today ... the latest version comes with a JITter that will only get better.

What an efficient VM truly allows is for regular programmers to write efficient code without thinking much about optimizations. So most applications can benefit from a good VM precisely in terms of performance.

I've also seen rewritten C++ apps in Java that ran faster, for many reasons, one of them being that you have the power to think about architectural optimizations without getting lost in little details.

And one other thing ... a mobile phone doesn't have the resources (like RAM) to shove in it too many optimizations, but on the other hand you can built specialized CPUs optimized for Android's bytecode.

If you do that, the "stack that runs native code" can eat your dust.
IPhone 4 shows the triumph of form over function
Blogger : Required field must not be blank Error Solution
Mike Magee rants against "techie wizards" subverting journalism with SEO
Is there a place where we can add a startup?
I mostly do this, especially for mathematical expressions, but in some cases languages have developed idioms where the common and readable style is to leave out some parens. It's dumb to do it just as some kind language-lawyering way to save chars, and it does raise the amount of background knowledge about the language you need, but putting parens everywhere can really break readability as well.

For example, this is idiomatic and readable C (ignoring whether it's a good idea to write this specific string-copy loop these days):

while (*dst++ = *src++);

whereas this is line noise that you have to decode:

while ((*(dst++)) = (*(src++)));

The first form does require you to know that ++ binds tighter than the dereferencing operator, so the increment is incrementing the pointer, not the value it points to. But it's easier to scan, and used enough that people who code in C presumably can just glance at it. It makes a nice syntax pun due to the interaction of the order of operators and the postincrement, too. You can read it as: deref dst, then increment dst, which gives the nice intuition that the deref happens, and then the increment happens. The parenthesized version is more confusing on that point, and you'd probably just want to rewrite it into a more verbose loop with 3 separate body statements, if you were going to go that route.

Heck, even Java does this regularly. Method-call dot-chaining is idiomatic in Java, even though it relies on an evaluation rule to work properly:

foo.bar().baz().qux()

Not idiomatic:

((foo.bar()).baz()).qux()

For the same two reasons basically. The fully parenthesized version is too noisy, and the unparenthesized version has a nice syntax-pun interpretation: it's a "chain" of results going down the list of methods.
Velocity 2010: Scalable Internet Architectures
Eval!
> I think it is safe to say that for most intents an purposes we can consider MacRuby just as fast as Objective-C

It isn't. MacRuby is much more dynamic than the dynamic part of Obj-C, not taking into account that Obj-C really is a superset of C.
How Microsoft Crowdsourced the Making of Office 2010
Good man. This is the sort of irrelevant detail beloved of pedants. It does not make you a better programmer to know this sort of thing.

You probably should know your language's idioms, but this sort of detail is not useful. I'd rather see a few extraneous parens around things that the compiler can happily remove. This sort of attitude is why my Perl code tends to be readable. There are all sorts of shortcuts and simplifications if you know the edge cases of the language, but I'd rather have clarity than cleverness.

e.g. my Perl coding style: http://blog.jgc.org/2010/01/more-fun-with-toys-ikea-lillabo-...