Hacker Newsnew | past | comments | ask | show | jobs | submit | 2013-02-22login
Stories from February 22, 2013
Go back a day, month, or year. Go forward a day, month, or year.
1.X86 MMU fault handling is turing complete (github.com/jbangert)
417 points by mman on Feb 22, 2013 | 39 comments
2.Spotify and Facebook: Is that phishing? (weluse.de)
324 points by linx on Feb 22, 2013 | 94 comments
3.The Net Is a Waste of Time (1996) (nytimes.com)
303 points by mtrn on Feb 22, 2013 | 81 comments
4.The Department of Homeland Security Stole My Boat Today (uncrunched.com)
289 points by shill on Feb 22, 2013 | 232 comments
5.The babies who nap in sub-zero temperatures (bbc.co.uk)
282 points by drucken on Feb 22, 2013 | 185 comments
6.John Carmack: Latency Mitigation Strategies (altdevblogaday.com)
257 points by bigdubs on Feb 22, 2013 | 104 comments
7.Debuggex: A visual regex debugger (debuggex.com)
255 points by gurug on Feb 22, 2013 | 91 comments
8.Yahoo CEO Mayer Now Requiring Employees to Not Be Remote (allthingsd.com)
245 points by protomyth on Feb 22, 2013 | 219 comments
9.LaTeX Templates (latextemplates.com)
238 points by VelNZ on Feb 22, 2013 | 63 comments
10.Increasing Public Access to the Results of Scientific Research (whitehouse.gov)
217 points by ig1 on Feb 22, 2013 | 61 comments
11.Domain Knowledge or a Lack Thereof (jacquesmattheij.com)
203 points by ajhai on Feb 22, 2013 | 110 comments
12.The Next SourceForge (sourceforge.net)
203 points by fintler on Feb 22, 2013 | 86 comments
13.I used Google Glass (theverge.com)
199 points by erroca on Feb 22, 2013 | 157 comments
14.Song of GitHub (song-of-github.herokuapp.com)
197 points by goddabuzz on Feb 22, 2013 | 46 comments
15.Go as an alternative to Node.js for Very Fast Servers (safaribooksonline.com)
189 points by meirish on Feb 22, 2013 | 139 comments
16.Your Tumblr is broken. Fix it. (medium.com/startup-shenanigans)
176 points by kirillzubovsky on Feb 22, 2013 | 54 comments
17.184 year-old Indian library goes digital, including 444 yr-old book on Alexander (nextbigwhat.com)
172 points by jayadevan on Feb 22, 2013 | 33 comments

Sigh. This is the issue that will just never die.

Let's just summarize the points:

- Not everyone can produce real-world code. Most of what we do for a living belongs to our employer. Side projects, particularly in the US, can be an issue for IP reasons (California is somewhat of an exception here);

- Side projects, even open source projects, can be of questionable "real world" value;

- I've personally encountered many "programmers" who can talk a good game but can't code a for loop;

- tests like the FizzBuzz test [1] are, in my experience, remarkably effective as an early negative filter. This is an important point. If someone blows you away at FizzBuzz, it doesn't mean they're an awesome engineer. But if they can't do it, it almost certainly means they aren't. The idea here is to spend the most time with candidates who might potentially work out and wasting as little time as possible on those that probably won't;

- the problem with these kinds of whiteboard coding problems is that the tendency is for interviewers to think the problem needs to be "hard". It doesn't. In making it too hard (IMHO) you risk destroying the value of your filter;

- pop-quizzes of obscure language features, the kind that might appear in certification exams, are a waste of time. I have no argument with that;

- whiteboarding code by itself is not a great filter. It should be used in conjunction with a multi-faceted interviewing approach that involves testing fundamentals, the ability to construct a relatively simple algorithm, the issues of working on a team and on a production code base and systems design.

- the problem with simply talking about "real world" code, as the author suggests, is you're no longer finding a good engineer, you're finding someone you like, someone who thinks like you. This falls under the umbrella of cultural fit, which is of course important, but don't mistake that for engineering skill.

- I think we can all agree that "logic" puzzles like "how would you move Mount Fuji?" or "if you shrunk to 1cm in size and dropped in a blender, what would you do?" are stupid.

- testing "back of the envelope" estimation however can be useful. I mean things like "how much storage is required to store satellite images for Google Maps?" The idea isn't to get an accurate answer. It's to see what assumptions the candidate states and, based ont hose assumptions, to come up with a reasonable ballpark number.

The problem here is that there are many engineers who can't comprehend the possibility that there is someone being paid to be a programmer who can't code. But I assure you this is the case. It's shocking but true. Simple coding tests largely filter these people out so if you're offended by such simple tests, just do it and move on. I assure you there's a reason why they exist.

One final prediction: There's some guy here on HN who always posts the exact same huge comment on any hiring thread. I'm sure it'll pop up any moment now.

EDIT: let me add a point about trial periods and take home assignments.

Both of these are guaranteed recipes for mediocrity. Truly outstanding candidates need to justify the time investment for either option and very few companies have the kind of gravitas that would justify it.

Anything written without supervision will be of questionable provenance at best.

As for whether or not someone will work out in your organization, bringing them in for a day is (IMHO) of questionable value. Many engineers are introverts. I include myself in this. It's incredibly awkward as is to be in a new company or even a new team in the same company. I question the value of any such assessment over what you learn in 1-4 hours of interviewing.

[1]: http://www.codinghorror.com/blog/2007/02/why-cant-programmer...

19.France to invest €20B in high-speed broadband for the entire country (zdnet.com)
152 points by EwanToo on Feb 22, 2013 | 84 comments
20.Exploring the Abandoned Macy's Midwest Headquarters (philipithomas.com)
144 points by philip1209 on Feb 22, 2013 | 57 comments
21.A simple solution to credit card fraud, and why you won't see it any time soon (rongarret.info)
138 points by lisper on Feb 22, 2013 | 127 comments
22.The depressing math behind consumer-facing apps (gabrielweinberg.com)
135 points by revorad on Feb 22, 2013 | 43 comments
23.You Can't Use the Live UK Train Data Without Accepting a Gagging Clause (mocko.org.uk)
128 points by mocko on Feb 22, 2013 | 35 comments
24.Sriracha Hot Sauce Catches Fire (businessweek.com)
125 points by sharkweek on Feb 22, 2013 | 98 comments
25.Try RethinkDB in your browser (rethinkdb.com)
122 points by coffeemug on Feb 22, 2013 | 51 comments

This is more or less the greatest thing I've learned about in the last couple years.

What's happening here is that they're getting computation without executing any instructions, simply through the process of using the MMU hardware to "resolve addresses". The page directory system has been set up in such a way that address resolution effects a virtual machine that they can code to.

This works because when you attempt to resolve an invalid address, the CPU generates a trap (#PF), and the handling of that trap pushes information on the "stack". Each time you push data to the stack, you decrement the stack pointer. Eventually, the stack pointer underflows; when that happens, a different trap (#DF) fires. This mechanism put together gives you:

    if x < 4 { goto b } else { x = x - 4 ; goto a }
also known as "subtract and branch if less than or equal to zero", also known as "an instruction adequate to construct a one-instruction computer".

The virtual machine "runs" by generating an unending series of traps: in the "goto a" case, the result of translation is another address generating a trap. And so on.

The details of how this computer has "memory" and addresses instructions is even headachier. They're using the x86 TSS as "memory" and for technical reasons they get 16 slots (and thus instructions) to work with, but they have a compiler that builds arbitrary programs into 16-colored graphs to use those slots to express generic programs. Every emulator they could find crashes when they abuse the hardware task switching system this way.

Here's it running Conway's Life:

http://youtubedoubler.com/?video1=E2VCwBzGdPM&start1=0&#...

Here's their talk for a few months back:

http://www.youtube.com/watch?v=NGXvJ1GKBKM

The talk is great, but if you're not super interested in X86/X64 memory corruption countermeasures, you might want to skip the first 30 minutes.

27.All D3.js demonstrations in one document (docs.google.com)
113 points by pzeups on Feb 22, 2013 | 17 comments
28.Zendesk was hacked (zendesk.com)
112 points by tedivm on Feb 22, 2013 | 58 comments
29.Textmate and Sublime Text online theme editor (tmtheme-editor.herokuapp.com)
102 points by ohadron on Feb 22, 2013 | 34 comments
30.Using a Hosts File To Make The Internet Not Suck As Much (someonewhocares.org)
100 points by heelhook on Feb 22, 2013 | 97 comments

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: