Building a world-class team: six mistakes I made early in my career - <AUTHOR> http://www.rethinkdb.com/blog/2010/03/building-a-world-class-team-six-mistakes-i-made-early-in-my-career/ <comment><USER4> My first job was at a reasonably large CAD company. One of the reasons I went there was because they were the only company where I felt the interview process wasn't fundamentally broken. They had the usual interview rounds, but they also had a round where the candidate had to come in and work there for a full day on a given task. The task has been the same for every interviewee for a long time. It was to write an add-on for the company's CAD product which would take a polygon and a directed line and split the polygon along the line, keeping the right side. Sounds simple enough, but given the peculiarities of the data representation of the software, pressure, etc. it took at least a day to get it right, even though the problem is stated beforehand and the candidates can think about it at home. The code also has to handle "tricky" cases like spiral shaped polygons, edges lying on the line, several consecutive vertices lying on the line, floating point issues, etc. The interviewer, who was in the meantime working on his own workstation, would eventually give the interviewee a test file with these tricky polygons to make sure the program worked.

While working there, when they were interviewing, I would always go over to the interviewee to see how they were doing, and maybe give them pointers.

My conclusion was that this task is too hard for a significant % of programmers. Here are two memorable cases:

Guy was a mathematician in his last year. I went over, and saw some odd looking code. Turns out he was trying to first rotate the entire problem so that the line was the x-axis, because then presumably it's easier to solve. Unfortunately, he couldn't get the rotation right.

This other guy was a CS major in this last year. I went over, and he was looking at the MSDN docs and it was obvious he was searching for polygon related functions. Turns out he thought there _must_ be a function somewhere in the MSDN docs that solves this problem, there's no point in writing it!

<comment><USER5> We used a somewhat similar geometry "case study" when interviewing at a place I used to work, also related to the CAD industry. It's remarkable how many people who wanted to work there couldn't do the most basic mathematics by the standards of the project. We didn't do the whole-day thing, just a bit of maths and a bit of coding on a whiteboard, but even that was a sufficient filter to rule out the majority of candidates almost immediately.

</comment></comment><comment><USER6> I found this point in particular to be very important:

Speaking of the need to ask any candidate to solve technical problems on the whiteboard:

 _The best people not only welcome a challenge, they require it. All the great people I know would never work for a company that doesn't perform a tough, formal interview because they recognize the company will mostly end up with bad employees._

<comment><USER7> While I agree companies with "tough, formal interview[s]" sound better on paper, after interviewing at many companies who esteem themselves such interviewers, I now believe that it mostly all comes out in the wash.

I'm all for vetting technical candidates, but I haven't experienced many places that perform this process intelligently.

There's a web shop around here. I had a great interview with the owner, he was excited to hire me, even making overtures about how I was going to have a job in the next couple of weeks, etc. I just needed to do this one little formality, which was a "real-world" code test that was about three-five days of work. This is pretty excessive imo, and the place definitely didn't warrant that kind of effort for the atmosphere or the pay, so I gave up on it.

There's another company around here that makes niche software. The first step of interviewing there is a written test more than thirty pages long, covering C, C++, Java, and C#. The only people you see the whole time are the secretaries, never meet anyone from HR or IT or anything else. After the test, if you get called back, there are several interviews before a final hire.

The problem isn't that they're attempting to vet for competency, it's that the ways in which they vet are silly and arrogant. They think that theirs is the only company out there, that we should feel so privileged to get a job there that we're willing to dedicate weeks to their "quality control" measures.

In my opinion, companies should focus on the "smart and gets things done" prescribed by Joel, not thirty pages of trivia about Cs and Java. Such tests generally test memorization abilities and not practical thinking abilities; one can sit in class and memorize syntax and data structure implementations in hundreds of programming languages, but still write crappy code in the real world.

They should also realize that most of these guys who are walking CS textbooks are completely dysfunctional socially. I don't mean that these people are awkward or have bad hygiene or any thing like that, I mean that they can't work together with the other engineers on their team, they're focused on proving that their solution is right, and generally just lead to lots of in- fighting and drama. They think that their intelligence or above-average competence is a license to ignore decorum and be cruelly rude and blunt to those around them. We see this attitude in open-source a lot; how much worse is it when the mailing list is private?

Honestly I think the key to a good hire is getting to know the candidate. Attitude is 90%. One should also control for competence, but should be reasonable about it. Again, Joel's couplet "smart and gets things done" is a great motto for the technical recruiter.

<comment><USER8> "Attitude is 90%."

you wouldn't accept "attitude being 90%" of a doctor's competence. A lawyer with 90 % attitude and 10 % competence will lose your case for you. Why should programmers get away with "attitude"?

There is no excuse for not being able to answer basic data structure questions if you call yourself a programmer. The fact that some Google interviewers layer on arrogance and excess doesn't obviate the basic idea.

"They should also realize that most of these guys who are walking CS textbooks are completely dysfunctional socially. mean that they can't work together with the other engineers on their team, they're focused on proving that their solution is right, and generally just lead to lots of in-fighting and drama. They think that their intelligence or above-average competence is a license to ignore decorum and be cruelly rude and blunt to those around them."

Stereotype much? I don't have any kind of CS degree, but I have met and worked with _many_ people with MS and PhD degrees in CS, who knew theri datastructures and algorithms cold, and the ratio of good folk to dumbasses is if anything greater than among than the population of "developers" who wrote a welcome web page in PHP and think algorithms are unimportant.

(see? I just used your rhetorical trick in the opposite direction. Making weak arguments based on anecdotes is easy)

These guys are working on an algorithms/data structure heavy project. "90% attitude" is a guaranteed fail.

<comment><USER9> What do you consider 'basic data structure questions'? That always seems the rub, and it always seems to vary with the relative age of the person asking the questions.

I haven't interviewed in quite awhile. The last time I did, every time I saw a relatively young group in the conference room my heart just sank. I knew that I was going to be spending the next hour talking about red-black trees and low level language trivia.

There has been a point in my life where I knew the implementation details for various sorting algorithms and exotic data structures. That was called 'college'. More than a decade into my career, I simply don't remember most of it. I've been coding at a senior-level (meaning, primary designer and implementation) for about 8 years. In that time I've only had to build a data- structure of any complexity once. It was the internal structure for a word processor (Quickword). Everything else has been deferred to standard libraries of the various languages I've worked in.

It seems to me that we should be trying to identify engineers who can think at the abstract level great software requires. Identifying that is fantastically difficult, however. To the point that I'm not sure if I know how to do it even today. I do tend to ask more design related questions (not logic puzzles). I've found that 10-15 minutes of talking about a specific problem tell me everything I need to know about a candidate.

<comment><USER8> "I knew that I was going to be spending the next hour talking about red-black trees and low level language trivia."

I know what you are talking about. Not too long ago, I was "that guy" - <USER2> guy whose heart sank at such interviews and couldn't get what the focus on "trivia" was all about. I know how to write software dammit why ask me all these stupid questions about the fine detail of Red Black Tree implementations and language edge cases?

"There has been a point in my life where I knew the implementation details for various sorting algorithms and exotic data structures. That was called 'college'. More than a decade into my career, I simply don't remember most of it. "

I had to learn CS from scratch (because I quit working on enterprise sw after 10 years and started working on projects where such knowledge was important), without a formal degree, mentors, or any guidance whatsoever. So in a sense I have traversed the opposite arc from most college educated developers.

I first became a "in the trenches" programmer and then get a CS and math education (entirely self taught). I was an "architect" at ThoughtWorks (At TW, "architects" code every day) ar at least they used to when I was there) , working on large enterprise systems, when I stopped doing outsourced enterprise sw and started working on Machine Learning/AI projects and found myself neck deep in hairy math with no clue what was going on. I have sat in 3 hour meetings not comprehending a single sentence because the other guys were speaking "math-y programming" and I knew only "hands on programming". It is a terrible, sinking feeling.

Which is all just away of saying, there _are_ projects on which _deep_ algorithmic/data structure knowledge (and other hard things) is important. And if a company's success or failure in such a project depended on finding people with that knowledge they would be foolish to ask "abstract" questions at interviews.

Whether this is important enough to be probed in an interview or not depends on what the company is doing. If you are building _simple_ db backed websites you can get by with understanding lists and hashtables. If you are building databases (like rethinkdb) is, then being very thorough the nuances of RB trees, networking, OS internals etc becomes significant.

I agree that the interview should test for what the skills the job would need in real life, if that is what you are saying. I was just irritated at the stereotyping of programmers with deep CS knowledge as lacking team work and being too abstract and so on. I know from personal experience how hard that stuff is. And it is orthogonal to "in the trenches " knowledge and experience. You can be very good at both.

</comment></comment></comment></comment></comment><comment><USER10> I wonder at the ambitiousness of your recruiting vs. the salaries you pay. Can you reasonably expect to get a world class programmer for 100k and stock options?

According to your criteria, you're thinking more of 'potentially world class', which I guess is more in line with your price range. The world class guys work for Google.

<comment><AUTHOR> I think if you plot track record vs. productivity you'll end up with a (largely) normally distributed curve. If you plot track record vs. cost, you'll get a curve that rises exponentially. Eventually, talented people get paid exorbitant salaries based entirely on their previous accomplishments, and these are exactly the types of people you don't want to hire (because their cost isn't justified by their productivity). It's logical, then, to form a world-class team of first employees largely composed of diamonds in the rough, or 'potentially world class' as you put it.

<comment><USER11> > these are exactly the types of people you don't want to hire

Depends on your budget and appetite for risk. If you have the budget and want to reduce your risk, IMHO there's no better indicator of future performance than past performance.

</comment></comment></comment><comment><USER12> I just took a look at your <http://www.rethinkdb.com/jobs/> page and saw that you guys have open salaries. What type of feedback have you received from doing that? Are people resistant to it? Do they come around eventually?

<comment><AUTHOR> So far we've received only positive feedback (see here, for example: <http://news.ycombinator.com/item?id=1190533>). Of course it could be that some people are so against it, they don't even bother voicing their concerns, but as far as we can tell all developers welcome this.

<comment><USER13> I have a slight problem with your 'open salaries': You don't define the ranks. Obviously if I took a job with RethinkDB I would be an "Engineer" rather than an "Intern"; but would I be an "Engineer I", an "Engineer II", or an "Engineer III"? Between them, the salary ranges stretch from 65k to 105k.

Presumably everybody inside the company knows what rank everybody else has, so to that extend the salaries are indeed open; but from the applicant's perspective, all you seem to have done is renamed "negotiate salary" to "negotiate rank".

<comment><AUTHOR> The reason we didn't define it is that it's incredibly tricky. There are some people with no education and no track record with incredible skills, drive, and professionalism. There are others with long track records who are less skillful in some areas. After trying to write up clear definitions for a while, we realized that we can't do it right without writing fifty pages of legaleze, so we decided not to waste time on it.

In practice, when you have only three levels, most people have a good intuitive feel for where they fall, and it's usually in tune with our evaluation. I agree that this system has its problems, and we'll try to work out the kinks over time. It will be interesting to see how it evolves.

<comment><USER13> Have you considered defining the ranks based on the job responsibilities rather than the backgrounds of the applicants? e.g., "will need to do X without supervision" / "will need to supervise more junior people" / etc?

<comment><USER14>
      Along the sames line, if there is a variation, then write it down as the norms or minimums, at a minimum, they will be able to do 3 out of this 6 things, etc.

</comment></comment></comment></comment></comment></comment><comment><USER15> Another ivory tower joins those built by Spolsky and Yegge. A nice theory on hiring that is completely impractical, bordering on the surreal.

1) You wouldn't recognize a Dennis-Ritchie- or Claude-Shannon-to-be if they would spit you in the face, because at the point in their lives where they would consider to work for you (if there ever was such a point), their achievements would not stand out nearly as much. Robin Milner died saturday and I just learned he didn't even have a Ph.D. Pretending you'd be even remotely capable of recognizing

2) What gives you the idea that people with such potential would apply at RethinkDB? You are describing a group of maybe a thousand people worldwide. Many have academic ambitions; others are interested in completely different subjects. There are more than a thousand companies looking for these people. If you'd manage to hire one, you'd be lucky.

3) Even if you were able to recognize the ability for such achievements and get them to apply, it is doubtful they would able to achieve those peaks in your corporate environment. Claude Shannon didn't have to satisfy any customers. He could spend _years_ developing a theory, whose practical value was only clear after it was sufficiently developed.

4) A corollary of 2): the people you've hired so far are not the kind of people you describe.

It would be nice if, just for once, someone would try to describe the people they actually hire, instead of pretending they only hire potential Field medalists, Nobel laureates and other people of such fame that all of their actual developers know them.

      [..] I am often unable to solve complex problems during
      the interview because of the nervous pressure. But I don't
      want to hire people as good as me, I want to hire people
      much better than me.

5) People that botch their interview because they are nervous can't be better than you? Perhaps nervousness/self-doubt go hand-in-hand with the ability to be better than you and you're throwing out the babies with the bathwater. Especially considering that someone passionate about working with you would be prone to nervousness.

6) And finally, about that Spolsky quote: I'm convinced he put it there to make sure no one else would hire the ones he would like to hire. If you don't have any doubts about a candidate, then you haven't pried enough to expose their weaknesses. That, or they are too glib. You should have doubts about every single one of your interviewees.

PS: this article, as well as the ones by Spolsky and Yegge referenced in the article, contain sound advice. However, all three of them go overboard at some point, which inspired the above. This comment might be considered as tearing apart a specific point, while ignoring the larger whole. This is not my intention: the article is worth reading.

<comment><AUTHOR> I think you make interesting points, but I respectfully disagree with your conclusions.

 _You wouldn't recognize a Dennis-Ritchie- or Claude-Shannon-to-be if they would spit you in the face_

Nine out of ten times, sure, _nobody_ would recognize Dennis Ritchie in the rough. But if you're hiring the first five employees, you don't care about nine out of ten - you care about that one time you _do_ recognize a promising candidate. Every selective process has a false negative rate, there is no way around that. Amazing people get turned away by all kinds of smart people in all kinds of places all the time. If you have ideas on how to lower the false negative rate without increasing the false positive rate, I'd love to hear how you'd do it.

 _What gives you the idea that people with such potential would apply at RethinkDB?_

Because they already have. Smart and driven people apply for the same reasons smart and driven people do anything - they're interested in the problem, and have an innate desire to solve it. In any case, if you sit around and wait for great people to apply, the sourcing part of your recruiting process isn't done right. If you want great people, you have to go out, find them, contact them directly, and then do everything in your power to close them.

 _People that botch their interview because they are nervous can't be better than you?_

Of course they can, but again, it's about increasing the false negative rate to lower the rate of false positives. I _can_ afford to turn some great people away, but I can't afford to hire someone who isn't great. Any software startup that works on hard technology has the same constraints - if you hire people that are anything less than stellar, you significantly lower your chance of success. In a startup you (mostly) don't have geographical limits for your customers, but the corollary is that you also don't have geographical limits for your competition. When you're targeting every customer in the world, you're also competing with every company in the world. Going into that with anything but the top-notch team is suicide.

<comment><USER5> >> What gives you the idea that people with such potential would apply at RethinkDB?

> Because they already have.

So how much of the company do they own? I ask because I have noticed that people with the combination of talent, experience and work ethic you are looking for are rarely content to be just someone else's employee. They'll either be founders of their own company, or hold a low-employee-number position in someone else's business with plenty of stock options, or work as independent consultants, or otherwise do something where what's in it for them is on a par with what they bring to the table.

<comment><USER16> The only guys I know like this are holed up in some pure research job at universities, working on problems that interest them so much they barely leave their offices to shower. I'm talking top 50 living programmer material though.

</comment></comment></comment></comment><comment><USER17> By formal/informal are we discussing setting or interview style?

I've always preferred formal questioning (i.e. asking questions, working with whiteboards etc.) BUT informal setting (so jeans/tshirt, sat on the sofa's with the whiteboard, small talk and chit chat etc.)

This is partly because that is how the company is - and so we interview like we work - but also because I used to _hate_ interviews where you sit over a desk from someone in a suit and tie...

Other good advice I can think of off the top of my head: go out to lunch with your potential candidates. I know the OP advises against that (and agreed, you shouldn't get too personal/involved) but an informal lunch with _all_ the candidates together can be a great ice breaker and a way to judge their personality/interests etc.

<comment><USER18> I'd be wary of having a big group lunch with all the candidates; that gets dangerously close into "group interview" territory (which, to be fair, is pretty common in some industries, but leads to candidates feeling pressure to "stand out" and act unnatural just to be noticed).

I'd much rather see (both as a candidate and employer) a group lunch with one candidate and a few members from the team they'll be working with - <USER3> after they've had at least one interview, and _not_ including the person who'll be interviewing them right after lunch.

<comment><USER17> Agreed; there is that risk. We often do company lunches anyway - so to mitigate things what I say is "guys, today is actually a company lunch day so if you'd like to join us and chat to some of the current employee's then feel free - no pressure, it's not part of the interview. If anything we see this as _your_ chance to ask questions."

</comment></comment></comment><comment><USER19> For what it's worth, we do an intense but informal interview though we supplement it sometimes with a difficult take-home problem set. It seems to be working very well: in front of our VCs we're being praised above all for the team we've grown.

</comment><comment><USER20> Bringing people on that are great at passing the typical interview questions is a great way to get a team up to speed on passing typical interviews.

I doubt anyone can reliably figure out in a few hours if someone will be a productive addition over a few years.

A lot of my ideas run aground when the issue of matching the interviewee's expectations comes up. If good interviewees won't take a job without a broken interview process, perhaps all you can do is supplement it?

</comment><comment><USER21> What's interesting to me is that companies are either looking for superstars or code-monkeys. There's no middle way in the hiring process.

And the results are many times not those wanted ... those looking for superstars end-up with subpar performance, while those looking for grunts will end up with good people that will leave sooner or later.

I once did an interview were on one task I had to program a DFA for a Lego- mindstorm with the technical questions being pretty heavy for the kind of work they did ... like if I were at Google, how would I model an algorithm for finding similar links (with the discussion flowing to sparse matrices, distance functions, clustering)

... only to find out that they were a company that did online quizzes, with the developers involved building them with a semi-automated process involving an Office-plugin that generated PHP code and some fixes here and there to make it work where the generator failed. One day I'll submit the story to DailyWTF. That project manager interviewing me had to be on crack :)

Not saying it's the case for RethinkDB ... they look like a fun project. Just wanted to share my experience with the current state of affairs.

<comment><USER22> I had a similar experience (strangely enough, also for a company that did online surveys). The questions weren't quite as tough, but they did have me attempt to solve toy store puzzles while answering questions (pull jumbled pieces of metal/puzzle boxes apart, etc).

I put up with it because it was for my first job and I was desperate. Now, I don't do all day interviews, long programming assignments, recite the alphabet backwards while parachuting and coding a quick sort on a laptop, etc, at least not for the typical job. I might jump through some hoops for the dream job, but most jobs just aren't.

</comment></comment><comment><USER23> This is great advice. Whenever I've hired a maybe, it's been a complete disaster.

I especially like the idea of only hiring people that intimidate you ... so long as the only intimidating qualities are their skills and knowledge!

</comment><comment><USER24> On the subject of "don't get informal before the formal interview but I'm nervous unless it's informal", why not use two people and clearly delineate their purposes to the interviewee: one person to be informal and get them comfortable before handing them off to another person to conduct a formal interview. If you're up front about the second person and the fact that it will be a formal interview, wouldn't solve both problem to some degree?

</comment><comment><USER25> I had some formal technical interviews, some of which i aced and got the job on their account, personally though, the more formal the approach was the less i wanted to work in said company, I often found that rigid hiring structure is a byproduct of a rigid internal structure, rigid top down hierarchies etc... of course the opposite can be true too. All in the balance i guess.

</comment><comment><USER26> When reading about interviews I always remember about a study mentioned in "What Colour is Your Parachute?" They said that HR professionals selecting candidates had a slightly LESS success rate than completely random choices when looking at the candidates' performances 6-12 months later.

The idea to always "hire people smarter than you" has never really made sense to me. If you always hire people smarter than you, won't everyone eventually realise they're working for an idiot and leave?

The people I've enjoyed working the most for have been people around the same intelligence as me, IMO.

</comment><comment><USER27> The argumentation is a bit on weak side. There are really no rules, it's just all about confidence, which only comes with practice. You can't learn that by reading articles like this.

During an interview, put your candidate outside his comfort zone, if you can, and it will tell you much more than any formal bullshit.

</comment><comment><USER13> Quoth the article: " _The best people not only welcome a challenge, they require it._ ... _I cautiously asked a candidate who looked twice my age and had a stellar resume to code a binary search._ "

I hope you're not trying to imply that coding a binary search is challenging for most of your interviewees. :-)

<comment><USER28> Excerpt from binary search article on Wikipedia:

 _"Although the basic idea of binary search is comparatively straightforward, the details can be surprisingly tricky…"_ — Professor Donald Knuth

 _When Jon Bentley assigned it as a problem in a course for professional programmers, he found that an astounding ninety percent failed to code a binary search correctly after several hours of working on it, and another study shows that accurate code for it is only found in five out of twenty textbooks (Kruse, 1999). Furthermore, Bentley's own implementation of binary search, published in his 1986 book Programming Pearls, contains an error that remained undetected for over twenty years._

[http://en.wikipedia.org/wiki/Binary_search_algorithm#The_alg...](http://en.wikipedia.org/wiki/Binary_search_algorithm#The_algorithm)

<comment><USER21> The error wikipedia is talking about is an integer overflow, so it's not the algorithm that's faulty, it's that particular implementation ... and that's hardly something to reject a potential candidate about.

I do want to see a candidate speak about its complexity (demonstrate it at least intuitively), and about the impact that the partitioning function has.

But these are things any CS college student in his second year should know about (otherwise they've wasted their time in college, and frankly I haven't seen many of those).

I'd really wish we'd stop with the "mine is bigger than yours attitude" ... there are lots of good developers out there. They are just more specialized in other domains, and finding the right match is indeed hard ... but the faulty interviews we are so accustomed with are to be blamed.

<comment><USER13> The funny thing is, the implementation isn't faulty either. Not on any real machine, at least. You don't have enough address space to hold an array large enough to trigger the overflow.

<comment><USER21> Well, yes and no.

In Java for example, an "int" is 32 bits, even on 64 bits machines/VMs ... where the address space can reach 16.3 million terabytes.

So this little bug can byte, but only if you're manipulating large datasets in memory. And then it's easily discoverable, on top of managed languages anyway (since the index used on an array can't be negative).

<comment><USER13> Well, if you're using _int_ where you mean _size_t_ , that's your bug -- not the binary search.

</comment></comment></comment></comment></comment></comment><comment><USER29> In cover letters, I've made clear that I enjoy and welcome interview puzzles. You may never actually be asked such a puzzle; but since the vast majority of interviews are non-technical pageants, it "signals" some confidence and that you "get" what position the interviewer's in.

I've been asked twice to solve out-of-interview puzzles, and once an in- interview puzzle. In each case, I asked for other people's (anonymized) solutions/times. In both cases, this was with Common Lisp using companies. Your experience may differ, but:

* Everyone else took shortcuts in out-of-interview puzzles. Most wrote almost no comments (a couple had overly chatty ones), nor was the code packaged in an easy-to-run way. Even most good solutions would cut a corner by (for instance) assuming that the input was magically pre-parsed from strings into symbols.

So, there'd be a couple of good-but-somewhat-unpolished answers, a few which were visually messy and over-simplified the problem, a couple where it wasn't really solved and the programmer maybe apologetically produced a best-attempt, and one which wasn't even in a known programming language. (The last one deserves the most sympathy, as he/she almost certainly had mental problems.)

In contrast, imagining that everyone else was a hyper-professional Programmer O' Doom, I packaged it all with ASDF (including instructions) and polished it as if, say, generations of island-stranded maintenance programmers would use my solutions to figure out where to sit in order to not be eaten by a cannibal.

One thing that probably goes over well is to point out a possible problem with a part of your code -- and a justification. Like a comment saying, "Note: Some Lisp implementations don't perform tail-call optimization. However, for real- world inputs, they would nevertheless suffice and be more maintainable than alternatives."

* People are human, and often have problems with in-interview puzzles. Part of my mind mysteriously blanked for a short while when asked what I felt was a trivial question -- permute a list of 3 elements (performance irrelevant, run the solution in Common Lisp). My imaginary Programmer O' Doom no doubt typed it from finger-memory in seconds, after whimsically sketching a solution where she randomly permuted the elements until enough unique ones were uncovered, or enumerated them all at read-time or something.

So, I stammered out an apology because I took a few minutes, jarred and ready to crawl into a hole for being unmasked as a fraud. Well, it turns out that the previously fastest solution took over an hour. (Of course I remained a fraud, albeit a still-unmasked one...)

Maybe it helps to think of such interview puzzles as a symptom of society's diseased way of working; then there is less stress. They're fundamentally mindless and people often derive an elitist thing from them; it's hard not to. I may welcome them, but it's also the case that each side whores out natural curiosity for the sake of filling some corporate job.

<comment><USER29> Oops, I accidentally wrote: "Note: [...] and be more maintainable than alternatives."

That's intended to mean that the the recursive solution is more maintainable than alternatives. (Or so I glibly claimed...)

And of course, I meant "masked fraud".

</comment></comment><comment><USER4> Great to see that on that side of the ocean the VC system is working and DB startups can get money. I assume you guys are pre-revenue?

</comment><comment><USER30> >Well, it was fun to read articles on my employer's dime

This made me smile as I'm actually at work reading this article on my employer's dime</comment>


Visual Exercises to Improve Your Vision - <AUTHOR> https://www.youtube.com/user/VisualExercises <comment><USER2> is this scientific?

<comment><AUTHOR> I'm just trying it out, but saw a comment pointing to it on another thread about improving vision here in HN: [https://news.ycombinator.com/item?id=16194580](https://news.ycombinator.com/item?id=16194580)

As always, check out the comments, they are --at least-- interesting to read, I found out about a cool tech reading them:

[https://eyesynth.com/?lang=en](https://eyesynth.com/?lang=en)</comment></comment>


Introduction to PLT Scheme - <AUTHOR> http://docs.plt-scheme.org/quick/index.html

<comment><AUTHOR> _Scheme isn't exactly a language at all; it's more of an idea for how to structure a language so that you can extend it or create entirely new languages._

Worth a quote :)</comment>


Ask HN: What would you do with 5G? - <AUTHOR> For the sake of argument (since the 5G standard isn't close to fully specified yet), let's assume a standard urban 5G connection is:<p>-1Gbit/s data rate<p>-1ms latency<p>-same energy efficiency as 4G<p>What would you build or do with such a powerful internet connection (besides stream more content)? <comment><USER2> Nothing as long as the "limited data" bullshit is around.

LTE/4G is already more than fast enough for pretty much everything; the main blocker has always been limited data.

<comment><USER3> And then the companies that promise "unlimited" data oftetimes thottle your connection when you exceed a very small data usage (2GB or so on some apparently cheap plans). As soon as real unlimited data becomes available for a much more reasonable price, I'd consider getting rid of cable Internet and being more reliant on cellular data.

<comment><USER2> Carriers should be selling bandwidth allocations, not "data". Cheap plans can only use a small % of total available bandwidth on a particular tower, while more expensive plans can get a bigger slice. Finally they should offer a ridiculously expensive plan that gives you the entire tower's bandwidth in the rare cases you need it (priced at the tower's cost for the carrier, since you're essentially buying out the entire tower for yourself). I don't expect anyone to use this full-time, but there were a few times when I needed tons of mobile bandwidth and wouldn't mind paying thousands for it.

</comment></comment></comment><comment><USER4> Almost-real virtual reality while walking on the streets (think of "Ready player one" movie). Drones sending 4K live video while flying miles away.

</comment><comment><USER5> I'd ditch home broadband to save money for starters.

I might consider hooking up a keyboard/monitor to smartphone to make it a dumb terminal to an Azure VM which is the real computer.

</comment><comment><USER6> I'd finally access Internet, and ditch my awful 50kBps internet speed I'm getting from cable, and unstable 4G from mobile

</comment><comment><USER7> In my country is not everywhere lte/4g internet</comment>


Ask HN: Anyone want to buy cctome.com? - <AUTHOR>

A few months ago, I made a site called cctome.com. It's a nifty bookmarklet with which you can e-mail yourself anything from the internet.
I never did much marketing, didn't even launched on HN, but it got picked up by many websites including Lifehacker, TheNextWeb, many tweets and facebook likes, abduzeedo, makeuseof, and most recently a newsletter by radio host Kim Komando (no idea who she is) which sent over a boatload of mainstream-type users. It's even been touted as simpler alternative to evernote, instapaper, and the like.
Here's the deal - I love this tool, and I use it every day. There's so much that can be done with it (I have a document full of features I wanted to implement) to make it bigger and more powerful.
I don't, however, have the time to maintain or grow it right now, with school and work demanding more of my time every day. I'd love to see it go to someone who'll grow it and make it awesome.
Anyways, in case you're interested, the site has over 11,000 users, it's built using Ruby on Rails, hosted on Heroku under their free stack, and uses Sendgrid for e-mail. It's gotten 21,000 visits throughout december (mainly due to Kim Komando), and over 80,000 e-mails have been sent through it. I wish I had set up proper analytics for the use of the bookmaklet and better user stats, but I never expected it to grow up to this point.
You can contact me at firstname.lastname@example.com :)
Oh, and happy new year everybody! <comment><USER2> Emailed!</comment>


JQTouch - jQuery plugin for mobile web development - <AUTHOR> http://www.jqtouch.com/

<comment><USER2> This looks like an excellent library, the demo works nicely on my iPhone, but...

I think that simulating native UI is a bad idea all around. If it looks like a native app, acts like a native app, I expect it to do _everything_ like a native app. This gets 90% of the way there, but due to the nature of the browser will never be 100%. I think you are better off with a unique look and feel that won't confuse users. You'll also spend less time developing it, as you won't struggle to get every little detail to match.

<comment><USER3> There is actually loads of sites out there, that duplicate the iphone functionality, when in mobile mode. There are other toolkits to make your web more iphone-like. It has its advantages and disadvantages. Most people don't even know what the different is between a web app and an iphone app, so I think it is a reasonably safe bet.

<comment><USER4> > Most people don't even know what the different is between a web app and an > iphone app

Exactly! That is the problem. They don't know your web app is an iphone app. So, they get annoyed when it doesn't have all the functionality of an iphone app. They have higher bar of expectation that a webapp inherently can not reach.

If it was obviously a "web page" then user expectations are much lower and they are likely to be impressed by what it can do.

The key to success is not being good. It's being better than expected.

</comment></comment></comment><comment><USER5> Tried this on my android and it was extremely laggy. The work looks good, but the performance was subpar.

I'll definitely keep checking up on this project, though. Looks very promising.

<comment><USER6> I tried in on my second gen iPod Touch, and although it doeen't lag, I got a lot of flicker, as well as UI elements getting stuck in the "on" position.

I like the idea, though, and would love to have a framework that just works on devices that I can't test on.

<comment><USER7> Which firmware version is it on, just so I know — 2.2 or 3.0? Thanks-

<comment><USER6> 2.2

</comment></comment></comment></comment><comment><USER8> Swipe detection works pretty well on iPhone. Good job. I couldn't do a swipe to turn on/off the toggle button. That would be a pretty sweet feature.

<comment><USER9> Agreed. Also something isn't quite right with the toggle switch animation itself. Lack of easing perhaps? Hard to tell. Throw me off though. Otherwise looks and feels superb on 3GS and 3.0

</comment></comment><comment><USER10> That's funny, I was just going through old bookmarks the other day, and this is one of the ones I decided to keep.

BTW, welcome to news.yc davidkaneda. If you like, you can drop links to whatever projects you're working on in your profile: <http://news.ycombinator.com/user?id=davidkaneda>

</comment><comment><USER11> Hey NICE work!! I've been looking for something like this for a while... iUI is great, but fails horribly on certain clients.

</comment><comment><USER12> I've been keeping an eye on this project. It's maturing nicely. However, for those doing exclusive iphone/webkit dev, check out: <http://paularmstrongdesigns.com/projects/basejs/>

It's much more lightweight and designed for said platform.

</comment><comment><USER13> Very slick - Even on the iPhone (3g) which has been a problem with other frameworks.

</comment><comment><USER14> Anyone know how this works for windows mobile devices?

<comment><USER7> It doesn't, it's not meant to (I'm the creator, btw)-

</comment></comment><comment><USER15> This looks awesome on the iphone

</comment><comment><USER16> How does this look on the Pre?

<comment><USER7> Not perfectly- See some of the notes above-</comment></comment>


The Thoughts of Chairman Xi - <AUTHOR> http://www.bbc.co.uk/news/resources/idt-sh/Thoughts_Chairman_Xi <comment><USER2> It's also worth reading the leaked 2009 US diplomatic cables about Xi published by Wikileaks. They're cited by the BBC story and give a lot of background. The source is from a former close friend of Xi who is currently a professor at a U.S. university.

[https://wikileaks.org/plusd/cables/09BEIJING3128_a.html](https://wikileaks.org/plusd/cables/09BEIJING3128_a.html)

I found this section quite interesting.

      Familiarity with the West and Taiwan

      </comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>

      25. (C) Based on personal experience, the professor noted, Xi
      is very familiar with the West, with a sister in Canada, an
      ex-wife in England, a brother in Hong Kong, many friends
      overseas, and prior travel to the United States.  As far as
      the professor can discern, Xi's family and friends have had a
      good experience in the West.  The professor contrasted Xi's
      experience and attitudes toward the West with those of people
      sent to the United States by their work units, such as the
      nationalist and sometime anti-U.S. Tsinghua University
      scholar Yan Xuetong.  Xi was the only one of his immediate
      family to stay behind in China, the professor noted,
      speculating that Xi knew early on that he would "not be
      special" outside of China.

      26. (C) Xi is favorably disposed toward the United States,
      the professor maintained, and would want to maintain good
      relations with Washington.  The professor said Xi has "no
      ambition" to "confront" the United States.  During Xi's visit
      to Washington, D.C., in 1987, he told the professor that he
      had no strong impressions of the United States.  Although Xi
      was not particularly impressed by the United States, he had
      nothing bad to say about it either.  Xi took a detached
      stance, as if observing from a distance, viewing what he saw
      as just a normal part of life, not strange, the professor
      said.

<comment><USER3> It's an aside - but is there a way to read quotes like this on a smartphone without constantly scrolling left and right?

<comment><USER4> 25\. (C) Based on personal experience, the professor noted, Xi is very familiar with the West, with a sister in Canada, an ex-wife in England, a brother in Hong Kong, many friends overseas, and prior travel to the United States. As far as the professor can discern, Xi's family and friends have had a good experience in the West. The professor contrasted Xi's experience and attitudes toward the West with those of people sent to the United States by their work units, such as the nationalist and sometime anti-U.S. Tsinghua University scholar Yan Xuetong. Xi was the only one of his immediate family to stay behind in China, the professor noted, speculating that Xi knew early on that he would "not be special" outside of China.

26\. (C) Xi is favorably disposed toward the United States, the professor maintained, and would want to maintain good relations with Washington. The professor said Xi has "no ambition" to "confront" the United States. During Xi's visit to Washington, D.C., in 1987, he told the professor that he had no strong impressions of the United States. Although Xi was not particularly impressed by the United States, he had nothing bad to say about it either. Xi took a detached stance, as if observing from a distance, viewing what he saw as just a normal part of life, not strange, the professor said.

I think the best thing is to just disable pre in mobile.

:%le

<comment> yjftsjthsd-h > I think the best thing is to just disable pre in mobile.

That sounds great, do you know how to do this? I'm on Firefox mobile so user styles might be an option

<comment><USER5> If you have uBlock Origin installed, you can tweak styles with its "My Filters". I have these in there:

      news.ycombinator.com##.comment code:style(white-space:pre-wrap)
      news.ycombinator.com##.comment pre:style(max-width:none!important)

The first line makes code blocks in HN comments word-wrap (while still preserving whitespace otherwise); the second lets them expand to the width of their containing comment.

<comment> yjftsjthsd-h That works great, thank you! I never realized uBlock could do CSS modification like that, though in hindsight it is probably a simple enough extension of how the thing works in the first place.

</comment></comment></comment></comment></comment></comment><comment><USER6> This is a fairly devastating passage:

"And money talks. When Xi visited Seattle in 2015, America's technology giants allowed themselves to be summoned

The bosses of Apple, Microsoft, Cisco, IBM and Amazon all stood alongside Xi in the front row of a group photograph. All have since embarked on multiple partnerships with China despite its commitment to perfecting internet censorship.

Also prominent in that photo was Mark Zuckerberg, but despite a charm offensive which included inviting the Chinese Communist leader to suggest a name for his baby, and praising Xi's book on governance, Facebook is still barred from China. Google's founders were not even invited to be in Xi's photo.

Xi has ambitious plans for control of the internet and that means leverage over foreign companies.

Facebook's messaging tool Whatsapp is increasingly blocked in China and Apple has now removed from its China App Store the VPNs which once gave Chinese users access to social media tools in the West, including the YouTube channel which gave the gleeful Guo Wengui such a devastating platform to discredit Xi's rule.

To fully control China's cyberspace, Xi has had to take action against the world's."

</comment><comment><USER7> I find the parallels between Xi and Putin fascinating: both had "modest" origins (or modest spells in the case of Xi) and much publicize them. Both were not really accounted for much, simply managing to rise through the ranks without making a wave, and always scrupulously deferring to authority. Both were nominated to the head of their respective party as a compromise or a strawman. That is until they took power, after which they both consolidated their grasp quickly, much to the surprise of everyone.

Interesting that the leaders of two of the world's superpowers (and the two formerly communist ones at that) share such a similar journey.

<comment><USER8> Can someone explain to me why Xi is considered to have "consolidated his grasp"? This seems to be a well accepted idea but I don't see what substantiates that. He starts his second term as prime minister of China, and serving two terms has been the norm in recent times.

I did not remark China becoming more authoritarian under his rule. I do not see indications that he may stay after 2022, his scheduled depart. What did I miss?

<comment><USER9> > I did not remark China becoming more authoritarian under his rule.

Xi greatly suppressed political dissent, online and off. There was a burgeoning, very interesting online debate about democracy and governance, full of thoughtful ideas, brilliant satire, and more. AFAIK, that's mostly gone. You can read about it here:

[http://chinadigitaltimes.net/](http://chinadigitaltimes.net/)

He also arrested and otherwise suppressed many political opponents, at least in large part under the guise of an 'anti-corruption' campaign.

He's also revived Communist ideology and a Mao-ish cult of personality for himself. In contrast, Deng Xiaopeng avoided it - my understanding is that he even was cremated and had his ashes scattered at sea so there would be no shrine to him.

Finally, he has helped create an intense wave of nationalism.

(I will say, in fairness, that cults of personality and nationalism are trendy in other countries too, such as the U.S. I don't know how everyone forgot the evil that those things lead to.)

<comment><USER8> > Xi greatly suppressed political dissent, online and off.

But was that different from his predecessors?

> He also arrested and otherwise suppressed many political opponents, at least > in large part under the guise of an 'anti-corruption' campaign.

That I would like to know more about. Most of the times, people just quote Bo Xilai (who seem to have been a genuinel crime ring boss) and his successor. I have a hard time understanding why the official version is just dismissed.

> and a Mao-ish cult of personality for himself.

Is there a place to read about that?

<comment><USER9> >> Xi greatly suppressed political dissent, online and off.

> But was that different from his predecessors?

Yes; I meant to say he greatly increased suppression of dissent

> Is there a place to read about that?

I'd start with the link above. The NY Times covers it occasionally, including a recent story about Xi's childhood home (AFAICT - I didn't read much more than a paragraph).

</comment></comment></comment></comment></comment><comment><USER10> This is the classic "what breaks you only make you stronger" but in a very aggressive way. Throughout history those who were oppressed and then made it to the top would usually end up wanting to seize full control and more oppressive than their oppressors. Xi looks friendly to the people, but there is a Chinese saying: 笑裡藏刀 (xiào lǐ cáng dāo)or "smile in hiding knife." He is the alpha male of the entire Party.

On one hand I like Xi's effort to clean up the corrupted senior officials. It was about time, but now he has the absolute power (military, justice, and executive) under the chair of the Party's control is alarming. I know a lot of Chinese natives (for what it is worth, I was born and raised in HK until I was 12) who refuse to believe in all the bad things happening in China, and refuse to recognize tragedy such as Tiananmen Square protests of 1989. They also become very emotional when it comes to Taiwan's relationship with China. But China isn't the only country in the world censoring and rewriting history. Japan tried to cover up its war crime during WW2. Other Western countries tried too. [1]

I hate the fact today we still have governments and citizens who refuse to recognize the wrongdoings in their country's history, and fail to work toward a peaceful resolution once and for all. All the fights for territories and borders, all the ethic group fighting over historical hates and war crimes (e.g. Myanmar vs Rohingya). Time to wake THE FUCK UP...

If we let go of our pasts, and our irrational prides, especially those we inherited from generations before us, then this world would finally have peace. Of course, the sad reality is we won't and will never be able to. Money prints off blood, and power is measured by the number of coffins and the fall of oppositions. Make no mistake, we can't compromise human values in exchange for stability. But this is how Xi and every leader in the world thinks of governance. Forgive, and be more compassionate. What is more important than saving lives and make people feel they are humans again, and not a war machine?

[1]: [http://www.ihr.org/jhr/v06/v06p-- 9_Bennett.html](http://www.ihr.org/jhr/v06/v06p--9_Bennett.html)

<comment><USER11> You're not wrong about some mainland Chinese refusing to believe (or never learning in the first place) anything about 6/4\. My wife is among them, or used to be at least. Then again if you ask the average US freshman if the US military shot and killed a bunch of student protestors, you'd find a number who wouldn't believe you. Difference is in the US a trivial we search answers that question for you, while in China all record of 6/4 is scrubbed, and even acronyms that you use to mention it get scrubbed, etc.

<comment><USER12> For everyone else who doesn't know what "6/4" refers to, it refers to the date of the Tiananmen Square protests:

[https://en.wikipedia.org/wiki/Tiananmen_Square_protests_of_1...](https://en.wikipedia.org/wiki/Tiananmen_Square_protests_of_1989)

<comment><USER13> A Day To Remember. A short video where they ask Chinese University students, "what day is today." Filmed in 2005...

[https://www.youtube.com/watch?v=nCPkkGArVy4](https://www.youtube.com/watch?v=nCPkkGArVy4)

I watch this clip a lot around the 6/4 anniversary. This is not the original copy, that's somewhere on Vimeo I think.

<comment><USER12> Wow, the discomfort is intense. How much is that from being video recorded w/o consent?

</comment></comment></comment></comment></comment><comment><USER14> This article mentioned China's debt as a problem, which I've seen before, so I finally looked it up. One article I found said China has added $24 trillion in debt in the last ten years alone, with a debt-to-GDP ratio of about 300%. With so much money appearing out of thin air to finance this or that program or development or expansion, it's easy to imagine opportunities for corruption. Add to that giant spigot all the smaller ones, as banks participate in the boom indirectly. It's no surprise then that Xi would have to address corruption overtly, given how it must be a daily temptation for party members to steer the wealth this way or that. Considering the scale of China's growth, it's remarkable how smoothly things are going. If there's any fractiousness within party ranks, it doesn't translate into churn we can see that slows things down. [https://seekingalpha.com/article/4091155-update-china- debt?p...](https://seekingalpha.com/article/4091155-update-china-debt?page=2)

</comment><comment><USER15> The story was formatted with Shorthand [1]

Does anybody know an open source equivalent? Thanks.

[1] [https://shorthand.com/](https://shorthand.com/)

<comment><USER16> Unfortunately this article has an annoying habit of jumping position when changing scroll for me (iOS Chrome). Makes going back to re-read a paragraph tricky.

</comment></comment><comment><USER17> Problem with leaders that consolidate power is that one successor will eventually be a weak link and things will go wrong.

</comment><comment><USER18> Xi graduated from middle school and his leading style is more like culture- revolution-movement than anything else. he is probably the least capable but most ambitious leader there since Mao, thus the most dangerous, just wait and see.

</comment><comment><USER19> Another article on New Yorker (published in 2015), "Born Red", is quite interesting as well on this subject.

[https://www.newyorker.com/magazine/2015/04/06/born- red](https://www.newyorker.com/magazine/2015/04/06/born-red)

According to the article, Xi once said,

      "People who have little experience with power,
       those who have been far away from it, tend
       to regard these things as mysterious and
       novel. But I look past the superficial
       things: the power and  the flowers and
       the glory and the applause. I see the
       detention houses, the fickleness of
       human relationships. I understand politics
       on a deeper level."

I am sympathetic about Xi's early traumatic experience; but I also feel that if he considers that "human relationship" is essentially "fickle", it would be quite scary as well, especially for a decision maker at a country's top level, as he is. I don't know how much trust he has for any one who is not in his family (or even for his family members); but a society with a very low level of mutual trust is a horrible place to live -- not to mention its average interpersonal cooperation cost would be very high, people would even hurt and damage each other's interest just to obtain a bit more sense of security. The harsh censorship there is one such example; as well as that in China more and more people these days are being sent to prison, after some staged trial in a kangaroo court -- simply because they voiced something that the administration does not want to hear.

Humanity itself is a quite complex matter. It's true that sometimes, certain people can be quite cruel, ruthless, or even cold-blooded; but this should not be a universal trait for the overall human beings -- or otherwise, it would have been a definition for the concept of "human" many centuries ago. There is a dynamic motley of benignity and malignity in any individual -- and the concept of "benignity" or "malignity" can be relative in certain cases. It's better for us all, if we construct a system that could inspire more benignity (-- or if possible, maximize ) out of us.

But today, many dealings by the Chinese government seems to simply view its citizens as objects or even tools, with "fickling" worthiness that does not lie within themselves but is based on the external perspective of the ruling party, to perpetuate their ruling.

Perhaps that is why Xi would raise the question to Biden in 2011/2, "why does the U.S. put so much emphasis on human rights." [1]

Note: [1] see [https://www.newyorker.com/magazine/2015/04/06/born- red](https://www.newyorker.com/magazine/2015/04/06/born-red) for the details about that episode...

<comment><USER20> > Humanity itself is a quite complex matter

I cannot help to remind you that Xi is the president of a country with 1.3 BB people. If you think he does not know this fact, you are plain ignorant.

Chinese political sphere isn't any another-world strange thing. It's just like any such things: human-dealing and power-plays... Xi knows too well how to deal with people, and how complex they are, otherwise he would not reach his currnet power at all...

<comment><USER19>
      > If you think he does not know this fact,
      > you are plain ignorant.

Thanks for reminding me about that...

I won't deny that I am indeed ignorant -- and on that, I would concur in Socrates' words, "I know nothing except the fact of my ignorance"...

      > Xi knows too well how to deal with people,
      > and how complex they are, otherwise he would
      > not reach his currnet power at all

I am not really sure -- bear with my ignorance again -- what you mean by "know how to deal with people"...

I think everyone knows his own way of dealing with people -- that's the social aspect of every human being...it's just that their knowledge about that matter could be very different from each other...

When I state "humanity itself is a quite complex matter", I am just stating it's complex; and I am not stating _how_ it is complex -- I feel that's a very very broad and involved matter; and on that, too, different people may have different opinion and understanding, which could be evolving and changing all the time...

For instance, you could say that half a century ago another Chinese "power" leader, Mao Zedong, understood how to deal with people -- for "otherwise he would not reach his then current power at all" \-- and the manner of his dealing was to simply destroy or even annihilate those who did not agree with him; and he termed that dealing as "revolution". It's indeed a great achievement for Mao to somewhat successfully reach that goal; but this does not mean that kind of policy really benefited the average Chinese people living in those days...

</comment></comment></comment><comment><USER21> To me, this sounds a lot like "Make China Great Again".

Temperamentally, of course, Xi is almost the exact opposite of Trump...

<comment> dis-sys There is actually a group of researchers tasked to measure the progress of "make China great again", they reported back in 2012 that the goal is 62% completed.

Chinese source from People's Daily -

[http://politics.people.com.cn/n/2012/0805/c1001-18670287.htm...](http://politics.people.com.cn/n/2012/0805/c1001-18670287.html)

Trump just copied the idea from Hu and Xi.

<comment><USER22> ...and Reagan.</comment></comment></comment>


WindTerm 1.4: A Free Professional SSH/SFTP/Shell/Telnet/Serial Client for DevOps - <AUTHOR> https://github.com/kingToolbox/WindTerm <comment><USER2> I don't understand; the only code in this repo is a third-party regular expression library. The readme says "All source codes [...] are provided under the terms of Apache-2.0 license", but where is it?

<comment><USER3> The dev wrote this in a Github issue earlier in the year:

> Currently, Windterm is allowed for personal stuff only, non-personal use is > not in Windterm's short-term plan, up to now, the key issue is to finish all > planned features, and make it into an amazing terminal. This is my dream.

> For source code issue, it has no relation with monetization, Windterm was > developed and referenced from may OSS, now it's time to feedback to OSC. So > part of core source will be opened once finished all new features with > enough time, please pay more attention for more version and source code in > future.

> As for your testing in commercial environment, only short-term testing > within 30 days is allowed. I have remarked this in license for your well > confirmation and permit.

Then a month ago updated the issue to say

> From the version 1.3, the license has been changed and WindTerm can be used > for commercial and non-commercial purposes without limitations. Please keep > follow and thanks.

He didn't clarify if it would be open source. Or how much of the core would be.

</comment></comment><comment><USER4> I very much like this. How does one add tools to WindEdit?

Have you considered combining windedit into windterm? I very much like the vscode remote-ssh extension, but dislike that it requires a heavy footprint on the server. I feel like you could quite easily get the same functionality from combining windedit with windterm.

Also, have you considered creating a framework for a simple linter?

I look forward to progress!

Thanks!

<comment><AUTHOR> I am very glad you like WindTerm/WindEdit and made very good suggestions, thank you.

Although I haven't considered creating a framework for a simple linter, but WindTerm and WindEdit are originally one during development. In fact, there are four kits in the unreleased tool: terminal (WindTerm), editor (WindEdit), browser and file manager (including local filer like windows explorer and remote filer like Sftp client), They complement each other and form an efficient tool.

For example, WindEdit has a special function that can read virtual huge files. This feature is especially designed for remote files. Imagine that there is a very large file on the server that can be read and written directly without downloading it. Just like playing a video online, you only need to get a small piece of content currently read and written. That would be very efficient, especially when reading huge logs.

I don't think putting a stub on the server is the correct solution, because we cannot put stubs on every server.

I will continue to work hard to build better tools and hope you can use them happily.

</comment></comment><comment><USER5> This is such a bizarre way to build and release a project based on my 5 minute reading of the issues and the comments in this post.

</comment><comment><USER6> What is the point of the syntax highlighting?

<comment><AUTHOR> The first thing is to provide more colors for easier reading. Folding, outlining and auto completing are also need syntax highlighting to analyze the output.

<comment><USER6> Specifically - why is "can be" in "156 packages can be updated" highlighted, and why is "login" in "Last login:" highlighted?

<comment><AUTHOR> Which words are highlighted is determined by the configuration file. For example linux.lexer in "windterm-install-path/terminal/schemes/linux" defines how to highlight and linux.fold defines how to fold the output.

You can modify the configuration file to highlight any words you want to highlight.</comment></comment></comment></comment>


Medical Breakthrough in Spinal Cord Injuries Was Made by a Computer Program - <AUTHOR> http://www.fastcoexist.com/3052282/the-latest-medical-breakthrough-in-spinal-cord-injuries-was-made-by-a-computer-program <comment><USER2> The substance of the article is quite interesting, but the headline and premise--that it was a computer program and not humans who found the result-- is ridiculous. The computer program did not collate and index the raw data and notes. The computer program did not choose the relevant inputs from the sum of all knowledge. And most importantly, the computer program did not write itself.

Software is a tool that humans create and use, not an entity in itself. Even if you think true AI is near at hand, this article describes nothing of the sort.

Houses are far easier to build with saws, hammers, and nails than by manipulating wood, earth, and metal with our bare hands, but that does mean the tools built the house.

<comment><USER3> I agree that this wasn't done by the computer (did computers uncover the Higgs Boson?) but I also do not believe humans can take most of the credit: this was the result of a Man Machine System team up—trying to disentangle credit assignment is not a worthwhile activity. Roughly and from a quick reading of a paper thickly frosted with jargon I am unfamiliar with, the method works by creating networks—which highlight key relationships—for visualization by searching for stable clusters in a reduced dimensionality space of the variables.

Humans are there to explore the visualizations, interpret the network structures and understand the clusters and variables. The machines are intelligent too; they do the heavy work of comparing large numbers of points in a high dimensional space, factorization and searching for a way to express the data in a manner that makes it easier to uncover promising research directions and hypotheses.

Scanning this, it seems the most valuable contribution are their network visualization and exploratory tools. I think they should be proud of those and see no need to stretch so mightily to connect this to Stronger AI. As Vinge notes, "I am suggesting that we recognize that in network and interface research there is something as profound (and potential wild) as Artificial Intelligence."

[http://www.nature.com/ncomms/2015/151014/ncomms9581/full/nco...](http://www.nature.com/ncomms/2015/151014/ncomms9581/full/ncomms9581.html)

<comment><USER4> >I agree that this wasn't done by the computer (did computers uncover the Higgs Boson?) but I also do not believe humans can take most of the credit: this was the result of a Man Machine System team up

You realize that they're using software made by a team of mathematicians and software developers, right? If you want to give credit to the software, give credit to the people who wrote the code and discovered the mathematics. This isn't any different than how physicists would use Mathematica.

</comment></comment></comment><comment><USER5> I think the second big take away is that this was only made possible because the scientists willingly shared their "dark data"\-- data and lab notes from failed experiments. I wonder how much data is hoarded privately and never opened up and analyzed like this.

<comment><USER6> Frequently a lot of this hoarded data is flawed or defective due to improper setup or execution of the experiment. That isn't to say the information in this "dark data" is useless, but it needs to be taken in context. The cleanest data with the best results are put forward into a paper; the chaff is not.

<comment><USER7> Shouldn't this be noted? Isn't providing the "best" data risking making data fit your hypothesis?

<comment><USER8> Not if your dark data is "I forgot to autoclave an instrument and contaminated my samples." In that case without an unexpected positive result it's just error and not worth reporting.

<comment><USER9> biology is not my forte but- i imagine "dark data" (with context) is always more valuable than no data.

<comment><USER10> Last time your build failed because you made a typo, did you package it up and release that version anyway?

<comment><USER11> Bad analogy. There's a lot more to learn from a failed medical experiment than a failed build.

<comment><USER6> Depends on whether the lessons have already been learned or not.

For stuff like "we fucked up our culture, therefore our cells couldn't do whatever we wanted" is well understood.

In clinical trials where some patients may respond to a treatment and others not, there's definitely a lot more to learn there, if you have a large enough data set and a plurality of controls.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> Here is the actual paper: [http://www.nature.com/ncomms/2015/151014/ncomms9581/full/nco...](http://www.nature.com/ncomms/2015/151014/ncomms9581/full/ncomms9581.html)

Coming from medicine I think the title of "medical breakthrough" is too generous. It's a great proof of concept but all this says is that in rats, high Bp in thoracic spinal cord injuries was associated with worse outcomes. Id like to see a follow up on human data from perioperative Bp recordings next. If it still holds true, then you can research whether an intervention in Bp control makes a difference. I'm not a neurosurgeon but I'm sure the correlation btw Bp and sci outcomes has been looked at before

<comment><USER13> Preliminary evidence has been found in humans, looking at the other end of the spectrum with hypotension.

[http://online.liebertpub.com/doi/10.1089/neu.2014.3778](http://online.liebertpub.com/doi/10.1089/neu.2014.3778)

We are now looking at the hypertension relationship in humans, as well as mechanistic studies in rats.

</comment></comment><comment><USER6> "The process was outlined in a paper published today in Nature, and hints at the possibility of medical breakthroughs lurking in the data of failed experiments."

If there was some way to make sense of data from negative-results experiments reliably, it would be absolutely revolutionary and certainly turn our ideas about what constitutes a successful experiment onto its head. I am very hopeful for fruitful results from the methods outlined in this article.

I worry about the usage of "failed" experimental data here, though. I've "failed" a lot of experiments for reasons other than not finding the effect I was looking for in my data. Any exploration of data from negative-results experiments needs to be taken very narrowly, with a deep understanding of exactly what effect is being examined.

Experiments are frequently designed incorrectly for studying the effect they want, and are almost always not suitably controlled for examining non-primary effects. Try to find a trend throughout non-primary effects over a large swath of experiments, and I'm sure you will-- but it may be noise.

<comment><USER14> > Any exploration of data from negative-results experiments needs to be taken > very narrowly, with a deep understanding of exactly what effect is being > examined.

I disagree. There's value in data mining previous experiments, just not conclusive value. As long as the results of such data mining are limited to generating new hypotheses (which are then tested by experiments explicitly designed to do so), I think this methodology can have great value. In this particular case, I don't think it's a surprise that perioperative hypertension is associated with worse outcomes, but the hypothesis that controlling BP with medication before surgery and on through recovery might produce better outcomes is worth investigating.

</comment></comment><comment><USER15> I'm a frontend developer at Ayasdi and we're hiring!!!

[http://www.ayasdi.com/company/careers/](http://www.ayasdi.com/company/careers/)

Come be a part of future breakthroughs.

<comment><USER16> I can't see your opportunities because the iframe embedded is having too many redirects. Just a heads up. :/

</comment></comment><comment><USER17> Topological data analysis is amazing, too bad all the hype around DL is leaving it in relative obscurity.

</comment><comment><USER18> Hey HN folks - I am the co-founder and CEO of Ayasdi. If you have questions about the math/CS aspects of this, happy to answer.

<comment><USER19> Do you recommend any good primers on topology? I thought this ([https://colah.github.io/posts/2014-03-NN-Manifolds- Topology/](https://colah.github.io/posts/2014-03-NN-Manifolds-Topology/)) was an interesting article and I see what looks like some great papers and videos available at [http://www.ayasdi.com/approach/data- scientist/](http://www.ayasdi.com/approach/data-scientist/), but I don't know the difference between homotopy and homology (yet) :) .

What kinds of infrastructure/tech do you think will have the most utility for topological data analysis in the near future? E.g., GPUs, Apache Spark, FPGAs, etc.

Any thoughts on an Ayasdi public offering? I'd like to consider investing but I don't have millions of dollars (yet) :) .

Thanks for your time.

<comment><USER18> Hey,

Some reading material: A very general blog about philosophy : [http://radar.oreilly.com/2015/07/data-has-a- shape.html](http://radar.oreilly.com/2015/07/data-has-a-shape.html)

    		A slightly more in-depth blog : https://shapeofdata.wordpress.com/2013/08/27/mapper-and-the-choice-of-scale/

    		A very accessible book about topology (especially from an algorithms perspective) : http://www.amazon.com/Computing-Cambridge-Monographs-Computational-Mathematics/dp/0521136091/ref=sr_1_1?ie=UTF8&qid=1444971634&sr=8-1&keywords=topology+for+computing

    		Blog exposing persistent homology : https://normaldeviate.wordpress.com/2012/07/01/topological-data-analysis/

    		Videos exposing persistent homology :
    			https://www.youtube.com/watch?v=CKfUzmznd9g
    			https://www.youtube.com/watch?v=CKfUzmznd9g

    	Some free software:
    		Python Mapper by Daniel Müllner : http://danifold.net/mapper/index.html

    		JPlex library by Harlan Sexton : http://www.math.colostate.edu/~adams/jplex/index.html

    		Dionysus by Dimitriy Morozov : http://www.mrzv.org/software/dionysus/

    		Topological Data Analysis in R : https://cran.r-project.org/web/packages/TDA/vignettes/article.pdf

    	Infrastructure
    		Our tech stack is:
    			Backend
    				HDFS for storage
    				Our ML and Math code is hand-rolled C++ and Assembly(7% LOC)
    				All coordination/distributed systems code is in Java
    				ZMQ for communication
    				Protocol Buffers for protocol
    			Frontend
    				D3
    				Backbone
    				Hand-rolled webGL graph visualization (we open sourced it at https://github.com/ayasdi/grapher)

    		We currently don't use GPUs or any other fancy hardware primarily because today, our customers use commodity hardware and getting F1000 companies to buy cutting-edge hardware is just plain horrible.

    		We have an awesome GPU rig at our offices that we test algorithms on and it can really make our algorithms scream, but again, none of our customers have/are willing to invest in GPUs.

    		Apache Spark - it is interesting that in our experience, making it work for ML algorithms is really too much work unless you invest the time to understand the framework and its fundamentals. It performs very well for ETL type tasks, which is what we use it for.

    	On a public offering: no comment :)

    	If you have more questions - I am easy to find :)

Gurjeet

</comment></comment></comment><comment><USER20> Hidden relationship mining has taken a few different paths from TDA to LDA graphical modelling (Michael Jordan, David Blei) to Vector Space driven (Berkeley Lab). Extracting hidden relationships in datasets and using these to form new hypothesis and enable or even make new discoveries is certainly the future...

Lawrence Berkeley National Laboratory vector space for hidden relationships: [http://newscenter.lbl.gov/news- releases/2008/07/09/berkeley-...](http://newscenter.lbl.gov/news- releases/2008/07/09/berkeley-lab-wins-four-2008-rd-100-awards/)

A Search Engine that Thinks [http://newscenter.lbl.gov/feature- stories/2005/03/31/a-searc...](http://newscenter.lbl.gov/feature- stories/2005/03/31/a-search-engine-that-thinks-almost)

Statistical modeling of biomedical corpora: mining the Caenorhabditis Genetic Center Bibliography for genes related to life span - Blei DM1, Franks K, Jordan MI, Mian IS. - [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1533868](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1533868)

</comment><comment><USER21> One immediate question is whether this might be a result of overfitting -- when enough hypotheses are tested, some will surely be confirmed at any given significance level. Still quite interesting of course; now what is needed is a follow-up study on other datasets (preferrably human), or an experiment to confirm. A better (but less exciting) title would be "A computer program suggests a promising avenue of research".

</comment><comment><USER7> So my main take away is that scientist should publish their original data. Frankly, I'm amazed they don't already!

</comment><comment><USER22> Things like this why I feel something like google deepmind can be a game changer for the sciences if the research data of all human research data was available to them. They might never reach the point of true AI but they would still beat all humans and finding relationships between data humans cant even remember.

</comment><comment><USER23> "The process was outlined in a paper published today in Nature Communications". NO LINK TO THE PAPER ARGGGHH!!!!!

</comment><comment><USER24> Could someone please offer a TLDR; The article seems very clickbait and full of teases.

<comment><USER25> From the article: "In the case of the spinal cord injury data, Ayasdi's TDA- driven approach mostly confirmed what researchers already knew: The drugs didn't work."

How this "Ayasdi" company's analysis probably works (based on "Topology based data analysis identifies a subgroup of breast cancers with a unique mutational profile and excellent survival" and the original "Mapper" paper "Topological Methods for the Analysis of High Dimensional Data Sets and 3D Object Recognition"): They take point cloud data and connect each point with its neighbors (the distance metric that is used is probably domain-specific) to build a proximity graph that approximates a simplicial complex. As input to their algorithm, they also have one or more scalar functions defined on the point cloud data that contain information which is relative to the problem at hand. For example, each point could be a gene, and maybe the scalar function value at that gene could be probability of association with some disease, and the distance between two genes might be the Levenshtein distance between their genetic codes.

With data in this form, they approximate the Reeb graph of one of the scalar functions, which is a sort of "data skeleton." They can do potentially interesting/useful things with it.

The approximation of the Reeb graph reveals zero-cycles (connected components of the simplicial complex) and some one-cycles (handles/tunnels in the graph, sort of like holes in a donut). This "skeleton" of the data allows them to do a variety of things, such as segment the data into components that are (approximately) topologically "simple" (they do not contain any 1-cycles), identify local maxima/minima, find saddle points where forks in the data merge together, and locate "essential saddles" which constitute the high points and low points of handles/tunnels. They can also remove "topological noise", which helps them to separate spurious topological thingies from features that might be important.

Their technique doesn't necessarily recover "true" topological information since a lot of what they do is approximate. There are actually more accurate techniques (e.g., simplicial homology, or fast Reeb graph algorithms) for getting an exact answer, albeit with potentially higher computational cost.

Topological data analysis is a big field, and this Ayasdi company appears to mainly use this one approach (but I could be wrong). I think they are trying to lay claim to the term "topological data analysis" and get people with money excited about it.

<comment><USER18> One quick edit to this description : We (Ayasdi) have generalized the notion of Reeb Graph's - such that it is no longer limited to single scalar functions. While in the single scalar function the mapper algorithm is an (extremely efficient) approximation to the Reeb Graph, in the multiple scalar function case, it has no direct theoretical analogue (although the notion of Reeb Spaces is similar).

We are generally not trying to lay claim to the phrase "Topological Data Analysis" and not going around suing people for using it. In fact we still support research in academia and actively publish in the field. TDA is the basis of what we do so it is the most efficient way of describing it.

</comment></comment></comment><comment><USER26> made possible _</comment>


Vi Illustrator - <AUTHOR> http://www.bilalquadri.com/villustrator/

<comment><USER2> Hey guys, thanks for the feedback! I made this during a 48 hour hackathon, and have no prior experience with javascript or php. That being said, I definitely plan to keep improving this.

I will be redesigning the site from the ground up. Things like styling(bold/italic/underline) and highlighting are among the things I want to try and include in the next version.

Please do let me know of any suggestions or criticisms you may have. You can reach me at villustrator[at]bilalquadri.com

<comment><USER3> Just come back here and read the comments from time to time. There should be nearly nothing as valuable as HN or Stackoverflow comments for your code/software.

<comment><USER2> I'll definitely do that. Thanks for the tip.

</comment></comment></comment><comment><USER4> Needs bold, italics and underlined options. I don't really rely on colors but rather a bold/italics/underlined mix based on only 3-4 colors. Cool service though.

</comment><comment><USER5> Here is a bookmarklet which will generate random themes (the background is untouched, so you can set it to your personal choice):

<https://gist.github.com/1618529>

<comment><USER6> That is a really nice supplement, thanks

</comment></comment><comment><USER7> This is pretty cool. Simple idea, simple interface. There seems to be an issue on my machine though, where the color picker for function colors seems to change the background color instead. But it's still really nice.

</comment><comment><USER8> Thanks for this.

And I just googled and found out that somebody did a similar website for some other 5-letter named editor.

<comment><USER9> I have been trying to find one of these for "the other 5-letter named editor" What did you google to find it/can you link it? Thanks

<comment><USER8>
      searched for `emacs theme editor`

<http://alexpogosyan.com/color-theme-creator/>

source code is available on github too.

Sorry for not giving links, my first search was succesful I thought it would be the same for everybody.

Emacs has a http server package, the editor could be pushed on marmalade ^^.

<comment><USER9> Thanks this is great

</comment></comment></comment></comment><comment><USER10> Neat. It might be useful to be able to import existing color schemes and make changes.

</comment><comment><USER11> wow it seems great. However I'm using c++ on regular basis. I bet I'm not the only one. It would great to have that language added to the mix ;-)

<comment><USER12> Yeah I second this notion, but for all languages. _BUT_ , I don't necessarily need to pick them all out, if you let me pick colors for what you already have shown, thats enough in my book, as long as you have some kind of syntax highlighting where my same sort of general color scheme/theme permeates through all (or most) languages.

You may actually already do this, I haven't actually picked all my colors, downloaded it, and given it a try yet...

<comment><USER2> Yeah, it already does that. I just had a few different languages shown in the preview. I initially wanted to allow users to pick sample code from different languages to show up in the preview box, but ran out of time for the contest.

Vim handles the color and style of text by looking at what scope it's classified under, and then following rules that match that scope. I found this video to be really helpful when learning how things worked: <http://vimcasts.org/episodes/creating-colorschemes-for-vim/>

</comment></comment></comment><comment><USER3> Dear Dev: Nice work! Please, improve the default by just taking the background out of the black. Look how much better everything looks then!

</comment><comment><USER13> i just switched to VIm and things like this just make me love vim more and more. Thanks for the post!

<comment><AUTHOR> you are very welcome. I hope the transition to vim is enjoyable. :)

This might be of help,

<http://stevelosh.com/projects/learnvimscriptthehardway/>

</comment></comment><comment><USER14> This is written in PHP but no PHP preview?

</comment><comment><USER15> The "Identifier" color link is broken.

<comment><USER2> There's actually a funny story about that one. Identifier and Operator both seemed like important scopes to have color fields for, but I couldn't find any code that was affected by changing their color values in vim. The preview just doesn't include and examples that would be affected by either of those two. If someone could provide me with an example for either of those two scopes, I would be happy to include examples in the preview for them.

</comment></comment><comment><USER16> Also see

<http://code.google.com/p/vimcolorschemetest/>

[http://vimcolorschemetest.googlecode.com/svn/html/index-c.ht...](http://vimcolorschemetest.googlecode.com/svn/html/index-c.html)

for a bunch of premade themes with previews (warning, second link will stress your browser for a few seconds).

I personally use darkburn because it looks good in a 256 color terminal.</comment>


How we built the largest payment channel network on Ethereum - <AUTHOR> https://hackernoon.com/how-we-built-the-largest-payment-channel-network-on-ethereum-ky11r2h7c <comment><USER2> very well done!</comment>


Evernote CEO: Apps will become obsolete - <AUTHOR> http://tech.fortune.cnn.com/2014/04/10/evernote-ceo-apps-will-become-obsolete/

<comment><USER2> I love Evernote and I think Libin has done a fantastic job overall.

Although, on this particular aspect I am not so sure. It is possible the article has diluted his comments but I don't think this holds true -

> _We went from desktop computers to laptops, and then to smartphones and > tablets, and now to wearables and connected devices. We use desktop > computers, or laptops, for two to three hours, and we use smartphones for > two or three minutes at a time, 50 times a day. On computers with long > session lengths it makes sense to use powerful software with files and > databases. On phones, it makes more sense to use apps for our two-minute > interactions._

I use my computer for a lot longer than 2-3 hours a day. I cannot envisage wearables being able to replace the labour tasks most _knowledge workers_ are forced to perform on a daily basis.

How can a wearable design a webpage, code an app, edit a document or blend photographs?

It is arguable whether smartphones or even tablets can perform the functionality required of desktops and laptops.

It is possible _native_ apps will be obsolete but I doubt apps in general will be replaced.</comment>