skysight-inc/HackerNews huggingface dataset:
I'm also doubtful that this will beat C, however...

> There is innate overhead when using an interpreted language, no matter how advanced the interpreter.

There is an overhead in JIT'ing the code, yes. But it is not a given that when amortised over sufficient data, that this overhead can not be compensated for by making use of knowledge that is simply not there at compile time. E.g. there are several well known methods regularly used in optimising dynamic languages that depend on discovering and adapting the code based on the actual types used. But when you're first doing this specialisation at runtime, nothing would stop you from taking actual input data into account rather than just basic type information for example.

> JavaScript is also garbage collected, while C is not, adding an additional level of overhead.

This is not necessarily a benefit for C unless a) your JavaScript program uses enough memory to trigger the garbage collector, which will depend on both the VM and your system, or b) your C program is written in a way that requires no extra effort to keep track of when memory becomes garbage. Programs written for GC'd systems may sometimes require far less logic to keep track of memory, and instead take the cost at collection time, and so may spend less time dealing with memory in situations where collection isn't necessary during the lifetime of the program.

In the general case, there's an extra overhead. In specific cases it is most certainly possible that the garbage collection can be a performance benefit by acting like a safety net that lets you do other stuff (avoiding logic to track ownership) that can speed up your app - this applies regardless of language.

Other than that I agree with you.
QuickBooks Online Global – 3 Benefits Of Global Accounting Solutions
Linkwheel Nedir? Nasıl Yapılır? » Seo Hocası
Who needs a computer?

Cheapo Samsung TFT > Menu > Color > Color Effect > Grayscale
The idea is good, but the questions not so much. First off, the number of questions is too small for a subject so large as algorithms and data structures; I'd rather have something in the 25-40 range. But that of course, for objective questions which answer is a one-line sentence max (not requiring writing code or calculation).

And this approach is the second problem. A few questions of this kind are good; for one, I like Q.1 (trivial if you know the subject, puzzling if you don't as the proposition is just nonsensical as a mathematical problem). But some other questions are tests of memorization, sometimes for not too relevant information. For one thing, you ask to "name" heapsort operations. I have long forgot those names, BUT I know the fundamental ideas of heaps and heapsort, and writing the full heapsort (even in paper) is a simple exercise of coding... but I wouldn't still remember those names.

Also, I would spend significant time writing this code (and also deducing the complexity if I don't know it by heart), compared to somebody who just crammed through textbooks. (And yes, it is possible to memorize this kind of information in a few days of cramming; if those final exams have schedules known well in advance and they are spread at least 3-4 days from each other, this pretty much cancels the advantages you mention.)

You seem to be dismissive of "practical programming ability"; I agree that code as answer to written questions has issues -- coding problems are better in a whiteboard test, interacting with the examiner. Or with careful restrictions of language etc. But it seems wrong to have questions that penalize (due to time restrictions) people who can deduce the answer with some coding or calculation, and reward people who just memorized the subject... for one thing, this memory won't last forever, unless you become a professor to keep "practicing the theory" on a daily basis. But more important, the ability to deduce the answer is very revealing of somebody's knowledge of the really fundamental concepts. Show me a CS graduate who knows by memory the bipartite graph algorithm, and this may be just some guy that has study discipline and good memory but is clueless about the core ideas of graphs and will have forgotten everything after a couple years of graduation. Now take somebody who can sketch the code for bipartite testing, even when given a problem that does not use the word "bipartite" or even the word "graph" -- so the student needs to identify the proposed problem as a specific graph problem, and then deduce the algorithm in order to solve the graph problem -- and that's somebody I would hire, either for a software engineer position or for a professor position.
Uh, can you spell P.R.O.T.E.C.T.I.O.N.I.S.M?
UK engineers developing harpoon that could help space junk meet a fiery end
If there is anything wrong with HN, you're it. The OP posted something that is well done, that (s)he spent the weekend working on, and is getting constructive feedback from everyone in the thread except you. But, since you seem to have crowned yourself the Arbiter of Quality, let's take a look at what you've contributed, shall we?

1. A python script to download free PSDs in bulk.
2. Two links to some DNS website (with a total of 3 votes and 0 comments)
3. A blog post talking about President Obama and renewable energy.
4. Hilariously, you also posted a meme about user negativity v. HN quality: http://memegraphs.com/memes/729c21bf62f51120855f5b5a8794b2fc...

So before you make snarky comments about how bad HN has become, maybe you should actually try contributing something of value.

Or leave. Either one would be a net gain for the rest of us.
Avon achievers with Team GBR
Could you please elaborate on No. 11?

"Never use early exits". Could you please elaborate what you mean by that?

PS. I'm not trying to unintentionally start a flame war. Just trying to understand.
Dark pools are not limited to the "select few". More or less anyone can use a dark pool - Interactive Brokers, for example, lets you access several. I don't know if they still do, but at one time both ETrade and Ameritrade ran a dark pool for their customers. (They call it internal matching, but it's basically the same thing.)
Last time I looked at the MySQL client library, which is admittedly a few years ago, I was horrified to find it wasted a tremendous amount of time doing tiny read()'s instead of reading into larger buffers and splitting things up client side - the former causes ridiculous extra latency due to the extra context switches - , so I'd not be the least bit surprised if it is still slow.

In fact, if the tiny reads are still there in the MySQL C client, that in itself might explain the difference.
There's clearly a middle position to be had here. By saying NO if you're not completely confident you can do something, you miss out on the best learning opportunities. That said, if you suspect something cannot work, or isn't the right way of doing something for another possibly non-technical reason, being prepared to say NO is critical for delivering.

So possibly: If you always say NO, you never learn anything. If you always say YES, you never deliver anything.
I'm assuming the grandparent comment is sarcasm (if it's not, it should be).

Leverage this enthusiasm to build the MVP. If you don't know how or it's beyond your capabilities, there's plenty of resources available now to learn how. Get something in the hands of these early adopters and move on from there.
I know, right? Someone recently contracted with me to build them a circuit to prevent accidental triggering of a pushbutton. So I did something where a double-click of the pushbutton results in a single contact closure output. Entire design was done in an 8-pin Tiny13 that cost about $0.50 @ qty 10 and the PC board is barely larger than the switch itself!

Still amazes me that I can buy an entire computer for fifty cents.
No way. Even with equal-efficient code, there is an additional point that is often ignored: Data structures are way more simple in C, with less overhead, and with higher cache-hit ratio, because more data fits in CPU data cache.

As example, gcj is as fast as g++ for code generation (both generating machine code, without virtual machine involved), however, in benchmarking appears to be slower, just because the data structures. If you tweak the Java code for use simpler data structures, e.g. integer or byte arrays, data overhead gets reduced, so memory cache hit increases, thus keeping similar performance to C/C++.

Other cases, like Java bytecode running on a VM, even with great JIT like HotSpot, suffers also a lot because of data structures, so even when generated code is quite decent (runtime profiling, etc.), penalty is there, so code will suffer great penalty unless running with huge L3 cache (e.g. 32-48MB), being noticeable anyway no matter how much cache you add when having to do many memory indirections more.

And of course, when comparing, you have to compare equivalent things, e.g. Java <-> C/C++ ports, and not completely different software with different implementation (e.g. optimized built-in string handling vs non-optimized C string handling -e.g. ASCIIz string handling is slow, because of stupid C string function implementation, not because the C language itself, being the reason of C strings not being used for high performance code, even when writting in C-).
LOL, Hacker News
That must be it, mixed with some paranoia, since I didn't see them show any proof for those allegations.
They should just ban Apple products in China.
Thoughtful, elaborate comments like this are why I read HN. Thanks, ed.
Today's XKCD: Microsoft
First VMS.

That was one of the outstanding compilers ever written.
Shame they did not spot the chap was a cad before they risked their money.
Had exactly the same idea myself. Whoever makes it work first is probably onto a winner (I probably won't pursue it myself due to lack of time, but I'd love to use such a service).
> Doing more (Which a more highly abstracted languages must do)

Can you explain why you think this assumption is true? I don't think it is.

A higher level of abstraction may allow your to convey more information in less code, but that does not mean it necessarily translates to more machine code.

In fact, when you operate on a higher level of abstraction with more information available, the compiler may even have more freedom to produce highly efficient output without breaking expected semantics.
They're the sort of thing I use on a daily^H^H^H^H^Hfrequent basis. The questions are not asking trivia questions or looking for knowledge, they're asking questions whose answers can be figured out.
Niklaus Wirth: CS ideas that seemed good at the time
Learning to say no is the biggest challenge and virtue of the best developers out there. It's not a "no I can't do it" it's more of a "no I can't do it in that time" or "no I don't think it's the right way to go, here is how I think we should do it". Saying NO can make a difference between a successful project and a nightmare.
How do you quantify the 1% per 21 days improvment? There are no easy-to-get-at brain weight scales yet. I agree with your incremental change mindset, I just find it hard to measure.

Agreed. 21 days is a good audit point. If you can make the case to yourself that you've improved the total value of your skill set by 1 percent, then proceed normally.

This is equivalent to 19% per year. That's measurable if you pay attention to market trends. Keep in mind that if you stick with one job, you're likely to bank only half of that increment. You probably won't get 20% pay increases unless you work for yourself (in which case your expectancy might go up by 20%, but you have a lot of volatility). You'll get 6 to 10 percent per year. It might still be worth it to stay in the same job, if you feel like you're learning a lot. Part of the reason why the pay improvement is slower is that the best engineers tend to prefer more interesting work (and stability, as they get older) over aggressive salary growth.

Here's a scale for software engineering: http://michaelochurch.wordpress.com/2012/01/26/the-trajector... . Each 0.1 increment seems to be about a 26% increase in abstract business value (or a 10-fold increase per 1.0) and about an 8-15% increase in salary. You should be aiming for 0.1 every 18 months, which is hard but doable, although it usually requires pushing back at work sometimes.

An addition to your proposition that you needs make your decisions in order to improve: You also need to actively learn from your failures. Many people just go like "That sucks, it did not work out" without ever asking the Why. That's not enough to learn, and one could even learn the wrong lesson from a failure.

Absolutely. No disagreement there.
How the system is intended to work is very different from how it actually works.
This is a good point. I was thinking in terms of people in specialised roles having broader knowledge, but you are right that there are good opportunities in blended roles. Either way, it's great to have depth in multiple fields.
I'm glad you asked, I have the same question exactly.
IT Solutions Providers Still Don’t Get The Consumerization of the Enterprise
A better & faster way for application developers to prototype applications
But you should Google afterwards so you can feel like a right ponce for confusing Big-Theta and Big-O.
All those people who have expressed interest, ask them if they think others might be interested; demo it to them and start building your list. Hire a developer. Watch this video interview of Dane Maxwell on Mixergy for many more ideas -- http://mixergy.com/dane-maxwell-zannee-interview/
quadruple irony points to the US getting up on their high horse about this after subverting their own companies to institute mass surveillance of the world's Internet users: http://en.wikipedia.org/wiki/Room_641A et al.
Sorry, what is "MVP"?
On consilience
You've picked the rare few outrageously smart and successful as examples. This is like asking, how can I have a career in music like The Beatles, Michael Jackson and Elvis?
I found it fun. I had to handle the stock options feed at a very high rate and do a binomial calculation to get the implied volatility on every tick.
Is there any decent review about this? I'd rather read a good review than know that something I dont care about is cheaper for a limited time.
The 555 really was cool. I remember being in middle school way back in the day working with 555's. At that time, I had trouble reading resistance values without resorting to a color reference chart, but the 555 I knew inside and out.

When you think about it, a design would have to be 'Uber-Elegant' to have a middle school kid be able to understand it like that. For the time, I think it was.

(As an aside, I can remember going ballistic on one of my friends who soldered one to a board. I would only use them on breadboards because I thought they were too 'valuable'. LOL! Money in middle school terms!)

I LOVED those 555's. Good times.
Exactly that

Or you make tagged photos of you not appear on your timeline (set their privacy to "Only you")

If you found out about this after a photo has already been tagged, you can just untag yourself
> A future bulk-scan may leverage a new SSH-exploit before you know it exists.

Sure, this is true. I consider this a "minor" issue, truth be told (I didn't want muddle up the conversation) I don't tend to run sshd faced towards the 'public' internet and in the cases where I do, ssh access is restricted to certain hosts/networks, and is enforced by a firewall.

> The rest of your recommendations is security theatre

Can you state why? I think they all provide measurable/real benefit, if this isn't the case I'd welcome some education.

Hm. I will give you that AllowUsers,AllowGroups is not a very good benefit in this case, I mainly enforce the usage of those directives to protect against problems such as bogus user account creations (exploit created or something simple as a admin mistake).

>An attacker dedicated enough to find your SSH-port

And Now for Something Completely Different.

Protecting against a dedicated attacker is a totally different ball game then protecting against drive-by's.
You're assuming they are unhappy with the situation
Well, it might surprise you to know that the first serious optimizing was written in fortran. In my book, compilers trump frameworks for generality.
You do indeed get an answer aligned with their interest, which is often useful (not perhaps in your example), as that is generally the point of the survey (to find out what your respondents think).

You need to pick your respondent cohort carefully if you are trying to ask a question of opinion (particularly more so than when asking a question of fact) to eliminate bias in your cohort. So in your example, rather than surveying particle physicists, you would look for another group of interested parties (e.g. a range of tax payers or non-specialist funding bodies) who have a vested interest (in this case in how their money is spent).

My work, for instance, revolves around surveying doctors on their experiences of medical training and career needs/aspirations. The vested interest of our participants is hopefully clear (influence on their training/career/work environment). We ask a wide range of factual and opinion based questions, eliminate biases (or segment responses on biases) due to various factors (e.g. location, age, gender etc.) and report our findings in the context of our cohort, i.e. "these are the experiences and opinions of doctors".

In short, you are right, you need to consider the makeup of your cohort and also how you report your findings in respect of that. Having a vested interest doesn't necessarily mean being biased, and sometimes that bias is what the survey aims to report on. In a survey like the google ones, that bias is money/free content, and thats all you will discover.
VCARS.co.uk sponsor England Basketball League
Love the chip, the guys a hero up there with the also recently departed Bob Pease and Jim Williams.

I realize this is hacker news and pretty digital heavy, so I do feel the need to point out that "Incredibly, he created the chip alone, spending a year designing it by hand as a freelancer." and "His design incorporated 23 transistors, 15 resistors and a pair of diodes." is in the analog EE world not so much incredible as "probably about typical months design productivity". As usual in the analog world R+D and "productification stuff" and extensive testing burned up the other 11 months.

So Pease, Williams, and now Camenzind are gone. Hard to believe Widlar's been gone 20 years, now he was a guy who packed 2000 years equivalent of wild heroic living into, unfortunately, only about half a century. Losing a whole generation of analog arch-wizards. Sad.
The State of Collaboration
Absolutely. This is true in many fields, but I think particularly for the software industry. There are so many people in management positions who are clueless about what engineers and software can and can't do.
Likewise for myself. Though I suspect that it's because testing for memory is easier than testing for knowledge, especially when one can simply assume that the former accomplishes the latter.
Some Thoughts on Firing Employees
First the windfarms, now telecom. I hope this isn't the beginning of a tradewar.

http://www.usatoday.com/story/theoval/2012/09/28/obama-block...
Interesting analogy. I think it more strongly implies that for the type of applications most frequently written, general intelligence and experience trump theoretical knowledge. Honestly the education you get from a BS in comp sci (the level of knowledge the post addresses) isn't going to qualify you for much more than the guy who has 4 years of experience on his résumé. Much less in some circumstances actually. This is a strange field.
Minimum Viable Product: http://en.wikipedia.org/wiki/Minimum_viable_product
I wish I had the skills to make a good attempt at it! I'd be on it.:) I'd be taking unpaid leave from my day job and getting it done! That would be awesome.

I totally agree I should be doing what I can, even if that is just finding out where I get stuck and then outsourcing the bits where I fall short.

I just want to make a good job of it.
As I understand the system, there are usually two mechanisms in place to offset this:

First: The loser pays costs as determined by the court , usually on a preset schedule. It's not like the winner gets to send the loser an invoice for infinity bajillions and they just have to pay up.

Second: You can apply for having the government pay if you loose. You have to file a petition explaining how (a) there's a benefit to society in having the case heard and (b) how you're not financially fit to bear the costs yourself.
Find a co-founder, build an MVP (if technically possible) in a month or two, keep it secret from your employer. keep your day job until you get seed money or you have lot's of savings. Be very nice and buy a lot of nice things to your spouse, as spouses are the biggest partner that can make / break your startup. Especially if you have kids.
I believe he referred to the rule to use a single return statement at the end of any single function definition.
There are the Reviews on Amazon Us ( http://www.amazon.com/C-Smorgasbord-Filip-Ekberg/product-rev... ) and Amazon UK ( http://www.amazon.co.uk/product-reviews/1468152106/ref=dp_to... )

Other than that there's a DZone article with an interview with me here http://dotnet.dzone.com/articles/meet-author-c-smorgasbord

Hope that helps, if you have any questions about the book feel free to ask!
> That kind of code is the very reason for coding in monospaced fonts, but why?

Aligning crap like that is one of the indicators I use to tell if someone is an inexperienced coder. After you write enough LOC, you eventually realize that lining things up is a waste of time. You're inevitably going to insert a line long enough to screw up your alignment, and now you'll have to bungle your diff.
Unfortunately this answer is incorrect and is a common misunderstanding of big-O. Selection sort is typically stated to be O(n^2), which is true, but the way that O works is that it's a bound from above. It means "the set of functions that asympotically are guaranteed to not take more time than".

Selection sort is also O(n^3) and O(n!) and O(n^2 log log log log log n). The correct operator for saying that f(x) is O(n) is the set exists operator ∊. O(n^2) is a set of functions that is a strict subset of the set of functions that are in O(n^3).

Selection sort is only big-theta(n^2), which indicates both the bounds are tight (eg for Selection sort it is true that it's asymptotic behavior is both f(n) <= an^2 + m AND f(n) >= bn^2 + n.
The Mobile Web isn't very Mobile
Issue already filed: https://github.com/donpark/scalable-css-playing-cards/issues...
short and sweet, but someone needed to say it! :)
Too bad the author does not care to ask for the more important bits of developing software but devulges into questions a web crawler could answer.
Creating elitisim (by offensively downgrading any developer who cannot answers these questions or simply has to look up an answer) does benefit no one.
Developing software is so much more than details of an algorithm, of an operating system or a network topology. It is about needs, about requirements, users, customers, support, processes, technology and the list goes on and on.
Simply put, he is not asking questions for software developers but for programmers.
Quicksort is usually randomized. So it is not a matter of the order of the elements, it is a matter of very bad luck on selecting your pivots. So even if worst case performance is very bad it is very unlikely. But you have to understand why.

You probably will never implement quicksort, but it is useful to know, how it works, as you may be able to use some of the ideas on your own algorithms. Quicksort is also beautiful, so it can be a good inspiration on writing good software.