skysight-inc/HackerNews huggingface dataset:
For a long time I couldn't figure out why moving from bash to Python felt like such a big leap, and it was quite frustrating (path manipulation is particularly difficult).

Recently I discovered a post [1] which touches on this:

> The whole point of short code is saving human bandwidth, which is the single thing in a computing environment that doesn't obey Moore's law and doesn't double once in 18 months. Now, which kind of bandwidth is the most valuable? I'll tell you which. It's the interactive command bandwidth.

It makes the argument that syntax is actually really important in building an interactive language - '[]' is better than '()', ' ' is better than ','. And it's true, bash (and, as it happens, tcl) ruthlessly pursue this - strings don't require quotes, function calls just require spaces (rather than brackets and commas) and there's generally very little punctuation for the most common operations.

I bring this up because it's interesting to see bish has gone in the other direction (curly braces, semicolons, brackets, quoted strings) in the name of a 'modern feel'. It makes me wonder if there's a way to bring the power of python (etc) into the shell in a syntax-friendly way.

[1] http://yosefk.com/blog/i-cant-believe-im-praising-tcl.html
Terrible $whatever make it in to every field imaginable. The tech industry is nothing unique at all. Bad doctors exist (despite the frameworks for professional exist) for example. I bet almost everyone has dealt with bad customer support people or bad secretaries.

It seems to be something that is clearly inevitable. We've been trying for decades to construct the perfect interview process to weed out people, and while we've had some fair success, people always manage to slip their way through.

I wonder if we spend sufficient time on the remedial end of things? Can we improve our practices for handling bad software engineers? Can they be saved? When do we get to the point where it's appropriate to cut and run?

Mostly what I look for in candidates I interview (for sysadmin/sysengineer roles) is signs of aptitude. I have a baseline knowledge I'd expect from them, but after that I'm more interested in gauging how flexible they are, and how they adapt to circumstances and change. e.g. "I see you introduced Chef to your current place to handle configuration management, why did you pick Chef vs other solutions? What did you compare it to? What hurdles did you come across implementing it?" and diving deeper and deeper in to it. The deeper you dive the more apparent it should be what kind of role they played in the whole thing and what they've learnt.

Me? I suck at whiteboard coding exercises. I'm a sysadmin, and one who does a reasonable amount of coding, but put me in a room under interview conditions and ask me to write something to solve a problem and I'll struggle. Worse it always seems like I get stuck with a developer asking me to solve some ridiculous thought exercise that bears little resemblance to anything I'd do in the real world, that I'm assuming ties in to their favourite algorithm or something.

> It is also, regretfully, not the case that all applications one receives to an advertised position of Senior Ruby on Rails Programmer would be from people who had ever opened a command line.

It always amazes me how many "Geek Squad" candidates you'll see who never even mention Linux on their resume that go and apply for Linux Sysadmin roles.
Strongly agree.

Having been involved in a large number of interviews as an interviewer, my experience tells me the issue is that many highly-competent engineers are incompetent interviewers.

To illustrate my point, here is an imaginary example in the extreme scenario. I once spent a large amount of spare time in graph theory. So I could easily fail at least 95% of candidates by giving algo questions in graph theory. The questions are easy to describe, so they are perfect for interviews in this sense. But I would have done my team a big disservice by turning away potentially very good candidates, and I would have harmed our company's reputation.

Edit: typos and grammers
For starters we shouldn't be allowed to run around calling ourselves "Engineers" just because we feel like it.

Secretly Terrible Doctor exposed: Not actually a Doctor!
I can't edit my comment above anymore so I'll add my addendum here.

I am saddened by the responses I have seen below from HNers.

The story relates to sexual threats of violence and rape of a minor. I stated that the offenders should be prosecuted and IF CONVICTED dealt with strictly under the applicable laws.

Our society is slipping into a nasty place where people feel that it is quite appropriate and acceptable to threaten and harass others online.

I think that it is a practice that needs to be stamped out, regardless of whether the threats are by men against women or vice versa; racial, homophobic or religious.

It shouldn't be tolerated by the mainstream, which when you look on twitter, often appears to be the case.
Lets say the dude invented something important? are you to have a better follow up question?

If your point is that they commenter is delusional, and at once over-estimating himself and under-estimating others, you should come up with a better way communicating it.

A proper punk-nosed-kid would certainly be more clever.
When should founders talk to CorpDev?
Living in Switzerland, this is way to big for me, my pockets aren't that big :) I wouldn't want anything bigger than a phone (my current wallet is ~2/3 of a 5" smartphone).

(Phone in one pocket, wallet, keys and work badge in the other).
Basically a service that makes it so you dont have to setup your own reverse proxy to make requests to apis that dont have cors enabled
I want to work where you have worked, then. Rant from the aircraft industry follows, feel free to ignore.

Engineering incompetence is widespread from my experience (flight test engineering). I wish, as a flight test instrumentation engineer, that I had not had engineers from various disciplines ask me how to interpret the contents of their test monitoring screens. I am responsible for providing the accelerometers, strain gages, data bus monitoring, and so forth that the various teams request and making sure that the data from those sensors is decision quality and properly telemetered and recorded. But it is NOT my responsibility to interpret that data. And yet, some of these other engineers, who are responsible for real-time monitoring of safety of test parameters during flights, clearly have no clue what they are looking at. One engineer even confused hydraulic pressures with engine temperatures during one test I was involved with and was about to raise a fault against my system because she thought the data was faulty. That's just one instance -- sadly, I have encountered many more during this career.

Yes, these people are trained in their disciplines and on the content of their monitoring screens, but for some, it just doesn't seem to stick. How can they, in good conscience, respond with a "GO for test" when asked if they know they do not understand their monitoring screen?
I remember circa 2005 when I was graduating from college, I readed all I could find about wavelets. I was obsesed, but didn't find what I was looking for. 10 years later I find your comment and I'm ready to take the subject again.

thanks.
> a country like India which is a police state

> Haha. Do we have a "nationalist" here who seems to be hurt?

These comments violate the HN guidelines. Please read those and follow them:

https://news.ycombinator.com/newsguidelines.html
Sure, you can ask companies to give their new hires books to read and pointers on what to learn. However, it's even better if the new hires already read books to improve their craft. On their own initiative. There is still plenty of stuff to learn when you start at a new place, the new codebase for example (and possible the domain). So it is good if you are already up to speed on the programming part.

This is an example of the three dimensions of programmer knowledge: Programming, Domain and Codebase. I recently wrote more about this in "Programmer Knowledge" here: http://henrikwarne.com/2014/12/15/programmer-knowledge/
> edit: Just a reminder: check your randomness source for security!

This should be your first thought when doing ANYTHING security-related.
The regex above is one signal we're using. We also look at relative price per sqft and a number of other factors. We could do a little blogpost that goes in-depth on our algorithm if there's interest. We've also tried some fun stuff like running TFIDF on the descriptions [1].

[1]: http://en.wikipedia.org/wiki/Tf%E2%80%93idf
Theory of the firm: opt-in initiatives
Considering that hosting javascript (and fonts and files) externally leaks information about your visitors to third partys hopefully some developers will care about their users' privacy and not do that.
A Google worshiping sand mandala ( http://en.wikipedia.org/wiki/Sand_mandala ) ?
I miss kuro5hin. That was a very, very disparate crowd, and it made for some extremely interesting content and discussions. I still check in every six months or so to see if there's anything of interest.
Mainly because a lot of the things you just listed are incredibly stupid requirements.

If I spent my life doing ruby sites that save basic data into a mysqldb, why does it matter whether I use sometching that takes 100,000 operations or 10,000 ones, when the web page still opens in 0.5 vs 0.51 seconds?

Or who gives a damn about system traces when I can put echo's in a PHP page and just view source?

Who gives a fuck about TCP when the browser abstracted that all away?

And when you say write a program, you clearly mean a console app, which again, unless you've written one, which junior programmers may never have done because someone else always wrote the helper & utility apps, it's pretty daunting the first time if you don't even know about main. Which suddenly makes it pretty easy. Imagine asking a front end developer to make a console app in their interview.

You do a particular type of programming. You seem to want to judge everyone else by your niche without understanding that a lot of the skills you list as essential are actually almost completely irrelevant to huge swathes of programmers. And they haven't learnt about them, because they don't need them.
Almost, imagine not having GNU/Linux on the server side or for IoT projects.
The classic paper is "Values and objects in programming languages" by B. J. MacLennan.

https://www.google.com/search?as_q=MacLennan+Values+and+Obje...
I've created a subreddit for regular idea validation: https://www.reddit.com/r/ideavalidation
because we have ideas more than once a month.
It's painfully obvious that the author has never tried to hire developers and, in fact, has never worked on an engineering team.

This line, in particular, is blatantly false:

> In all my years immersed in the tech industry, I have never once heard a firm talk about the idiots lurking in their own offices.

Firms might not talk about it (nobody wants to say they have bad employees). But people certainly will. Nearly every developer I know has horror stories of working with incompetent colleagues who literally couldn't program. And there are even more incompetent churning out job applications—FizzBuzz exists for a reason.

So it's clear to me that we need some sort of clear technical test before hiring people. But I also think FizzBuzz could be sufficient for that test. There's no need to administer an algorithms exam if all you're trying to do is find out if someone is an incompetent engineer or not (there are plenty of competent engineers, including myself, who would have trouble writing a trie on the spot).
Try Analyte Health:

http://www.analytehealth.com
Yes, there were some feats done already then. I guess people can't imagine what strange tweaks were used in the machines.

Take for instance the 48K ZX Spectrum: it had 16K ROM from 0000H to 3FFFH, then 16K RAM (some of which was display buffer) from 4000H to 7FFFH made of eight 16 kbit chips, and the remaining 32K RAM from 8000H to FFFFH was actually made of eight faulty 64kbit chips which Sinclair could buy cheaply. The chips that had failed in manufacturing testing were just tested again to determine whether the faulty part in the chip was in upper or lower half of the 64kbit address range. The high address bit of memory chip was connected permanently high or low to keep the address pointing to a working half of chips, thus enabling the extremely cheap broken 64kbit chips to be used as valid 32kbit chips.

(All eight chips of memory of course had to have be broken in the same upper/lower configuration).

The Psion chess program for Spectrum needed the 48K RAM model, although I think someone also wrote a full chess program for the 16K model (including castling, en passant and all).

Psion, by the way, was publisher for much of the early software for ZX Spectrum, including chess, spreadsheet and 3D design programs. Later on it was known for handheld devices, as well as the EPOC system which later on was to become Symbian, used in Nokia smartphones.
I too have been trying to "minimize" my wallet setup. I've tried a few of the phone case wallets with no success. They either didn't hold enough or I wore it out within a month from trying to fit too many items in it. I came across the "back saver" wallet at a hardware store of all places(Menards). For $15 it's the best wallet I've owned. I've whittle it down to a few basic cards , ID and a little cash. I was skeptical about the clip for holding bills but turns out I often don't carry cash often and rely on a debit card. I would recommend it for its small profile and utility. Looks just like this one: http://www.amazon.com/gp/aw/d/B003AS2GNS/ref=redir_mdp_mobil...
I use something a little similar where I work. No one would be on board with something like React but I've documented a way to write our code that does something similar to this post. We use js "classes" (Both Function.prototype and now js classes with babel) and lo-dash templates to make it a little nicer.

Example:

function MyComponent(element) {
var instance = this;
instance.element = element;
instance.history = [];
instance.state = { myKey: 'someData' };
instance.template = _.template($('my-template').html());
instance.setupHandlers();
}

MyComponent.prototype.render = function() {
var instance = this;
instance.element.html(instance.template(instance.state));
instance.history.push(deepcopy(instance.state));
}

MyComponent.prototype.undo = function() {
var instance = this;
instance.state = instance.history.pop();
instance.render();
}

MyComponent.prototype.setupHandlers = function() {
instance.element.on('change', '.my-input', function(e) {
instance.state.myInput = $(this).val();
instance.render();
});
}

This is of course a very simplified version but it should give you an idea of what I'm talking about.
For computer graphics, I have a standard that I use where instead of asking "Is this rendering technology 'realistic'?", as in, a binary question, I ask "At what resolution is this render indistinguishable from reality?" For instance, there's a lot of car photos and architecture renderings that use that use certain expensive rendering techniques that look great even at 720p, but you start getting into 1080p or above and it once again becomes clear it's a computer rendering. Other techniques may only be able to work up to 320x200 or something.

Similarly, telling whether a computer has written something or not is very challenging at this snippet size because there's hardly any room for "voice" to shine through. I actually did pretty well, but to be honest I got more mileage out of a meta-heuristic ("how is the author trying to fool me? ah, this one seems really, really human so it must be computer... yup...") than actual analysis of the text. I mean, drop those computer-generated sports sentences into the middle of a human sports column and you're not going to pick them out specially... they're facts. They fit. However, an entire column written like can be pretty obvious. I get some financial news from some Google Alerts on a couple of companies and it's incredibly obvious that there are computer algorithms out there that can take the daily outcome for a stock, how the market did that day, and how the entire industry did that day, and spin that into several hundred words of completely and utterly useless speculation about "why" the stock did a certain thing. (Not that it hasn't become clear to me just how shallow a lot of the "free" analysis is, but, well, in no way does outsourcing the shallow analysis job to a computer make it any better...!)

(One of them in particular that I've come to enjoy reading in an almost Dadaist sort of way really loves the phrase "The bears had a field day with..." as in, "The bears had a field day with $STOCK as it dropped 0.01% in light trading.")

Increase the sample size and you'd probably get a better sense of whether or not it is fooling you. I was going to write "and you might do better", but that's not necessarily true... for instance, to be honest I've never been "into" poetry, I've even tried seriously a couple of times, just can't do it, and I'm pretty sure the poetry-writing program could fool me for quite a few stanzas before I eventually caught on because, to me, it's all the same. [1] I'd eventually guess more on meta-analysis like observing grammatical structures being repeated for what would not be a good reason.

[1]: Have I caveated this sufficiently that nobody will feel compelled to reply and explain to me just how objectively awesome poetry is? I'd say my thing is more music, but to be honest, a surprising number of "human" composers already sound pretty computer-y to me....
I'm not responsible for violence either, even though I'm not a woman. Only the perpetrators themselves are responsible for the violence.
I've been there and it sucks.

One thing I would say you need to question is how much you actually LOVE the process of doing what you're trying to achieve. Not just loving to get it done, but to actually LOVE it while doing it.

The process will feel pretty gruesome if only getting to the end of it is what you Love. Not worth it.

Saying you're mentally-weak, seems like an excuse for something that's not working out.

You might be great at something similar, but in a different vertical.

Some motivational quotes/videos/materials are great, but the myth that you have to go through pain to achieve something, is a cliche.

This is a great quote I found recently: http://ow.ly/i/8R72A

Good luck and sorry if I was a bit harsh.
Interesting notion! I personally am not a fan of whitespace sensitivity, but I understand why many people are. For me, after spending years writing code with curly braces and semicolons, they are effectively invisible (and thus do not seem to waste my "human bandwidth").

That being said, the choice to include those syntax features in bish was made entirely to make writing a parser easier, not for any deep philosophical reason.
I wouldn't exactly call it "modern". It seems like csh++ while avoiding its mistakes by having Bash as the backend.
I've also been using the Dopp Regatta, exclusively for about 6 years now, and I love it. Super simple, extremely functional. It's the closest to perfect I've found.
When I hear a story like this I have to ask - how did no one else notice?

What was this person doing while they were employed? Why did no one else spot that his productivity was effectively zero?
I've had this idea several years ago, and it now exists in a few cities around the world. Feel free to start one in your city, and add it to the wiki: http://www.ideasmeetings.org

It's simply a monthly meetup for idea sharing, validation, and collaboration. Helping each other make our ideas happen, be it an art project, community project, business, or social enterprise.
Startup ideas: Aaron Epstein gives the ultimate advice
There is a section of the readme titled "Why" :-).
> Your analogy doesn't include contacting the drunk driver's former employer and asking them to ask him to change his apology.

Sorry, I thought it was implied by the context that I believe that would be an appropriate way of responding to a "bad faith" public apology.

> Still, it fits into the original comment above

Sure, it fits. But there are plenty of other interpretations that fit the information. I'd propose that the reason this narrative is winning is that it's the one that challenges people the least, not because it's the one that fits the facts the best.
I believe it's out of 8, so either you missed 3 and got 5/8 or you nailed it and got 7/8 :-)

I, for one, was wholly duped by the computers, with a 50% success rate.
Clever Boeing crew sky writes 747 across United States
I see, so GR causes all orbits to precess, and actually nothing follows classical Kepler orbits exactly. Even the simple two-body problem doesn't result in elliptical orbits.

http://en.wikipedia.org/wiki/Two-body_problem_in_general_rel...
Non mobile link

http://www.amazon.com/Back-Saver-Wallet-Leather-Wallet/dp/B0...
The problem with the portfolio approach is that many incompetent engineers can easily point to code that they "wrote." Often it was part of a larger team carrying them, but sometimes they wholesale copy it.

A similar problem applies to pure project interviews: the total incompetents are also the ones most likely to get someone else to "help" them with it.
My heart goes out to the author and is someone I will dub the "Harvey Milk" of the computer software industry.
And if I did this in your interview, how would you feel about that?

List<int> blah = new List<int> { 3, 8, 2, 1, 5, 9, 0, 12, 14 };
// pretend I don't know the numbers :)

blah.Sort();
blah.Reverse();

return blah[0] + blah[1];
It's illegal in order to prevent precisely this.
After reading this I didn't understand why they hadn't been bought by Google or Microsoft just for that feature, access to a near real-time translator that not only gets the usual words and uses but lots of slang and edge cases that nerds like us love to use.

I mean google built/bought gVoice and GOOG-411 for the voicemails and transcriptions, they have that weird empire land based game for maps, and here's a chance to greatly improve gTranslate and possibly even gNow...

As a windows phone user, I, of course, want microsoft to snap them up (for cortana), but they don't have the foresight to make these types of buys (yet?).
This article is juxtaposing our fear of hiring an incompetent developer, vs. our indifference to the skills of developers once they join our organization. That's what he's saying when he says that everyone's afraid of secretly terrible engineers.

If each company spent a (comparatively miniscule) amount of resources on consistently training their current developers, then the team would be constantly improving.

We think that miraculously, good developers become good, sometimes by heroically hacking on their own, sometimes by going to a prestigious school, never by practice within a big company. Then, one we hire them, their skill level freezes. This is why it's important to hire good people.

This is the same illusion that keeps the US public school system focused on hiring good teachers and even more focused on firing bad ones, without focusing on improving current teachers' skills. We, as an industry, need to focus on practice within the organizations we control, we need to focus on making everyone better, and we need to kill with fire the idea that hiring good people is all you have to do to have a good team.
Not wrong, because the case you linked does not conclude that what constitutes a threat (even in this legal sense) is what the recipient of the message believes.
>was made entirely to make writing a parser easier

That's called optimizing bish developer bandwidth, rather than optimizing bish user bandwidth. Neither requires philosophy :)