Magic is to Python as Java is to PHP - <AUTHOR> http://www.travisswicegood.com/index.php/2009/05/13/magic-is-to-python-as-java-is-to-php

<comment><USER2> Am I in the minority in being unable to guess what this article is about from its title? I thought maybe "Magic" was some new programming language, and I didn't know that the PHP community (such as it is) hates Java.

<comment><USER3> Definitely not alone. I read the majority of the article just to find out what it had to do with PHP at all.

Apparently, in "PHP circles" they don't like object oriented design because PHP isn't Java. I'll go inform the Zend Framework and PEAR communities that they're doing it wrong...

</comment></comment><comment><USER4> Having been living in the Django world for a while now, I knew what the title was referring to.

I disagree with the author, however. I think that magic is a bad thing, but this is really an in-house debate. Django and Zope are on the extreme ends of the spectrum of Magic to non-Magic, and I have worked in both frameworks.

Magic does not necessarily mean "poorly defined" as some people presume. Zope does an excellent job at defining the magic that it does. I just do not like the concept of a framework that changes the essential nature of the language in which it is written.

I think of a framework as a way to avoid writing the 80% of the code that any given web application needs. One could say, well, that 80% is magic, because it just happens, but there is a fundamental difference between a framework that changes the nature of your code, adding behavior that you would never suspect from the language itself, and a framework that provides functionality that you either invoke, or add to.

Magic is great for some people, but a real PITA when you don't want the magic to happen in the way it does. Suddenly you find yourself delving deep in to the guts of the framework, reverse engineering the decisions made by the developers, finding workarounds. Suddenly the magic becomes an impediment - you are now expending much time and effort working through a system whose entire point was to save you time and effort. The framework is no longer the elegant helper taking away a lot of work that you would otherwise have to do. It IS the work you have to do.

Again - this is an in-house debate, and no doubt a die-hard Rails developer will disagree, as is their right. But for me, I much prefer as little magic as possible.

<comment><USER5> With reference to Zope: it should be noted that the Zope 2 of old and the modern Zope 3 are themselves on opposite ends of the magic/non-magic spectrum.

The Zope community learnt many lessons from the magic used in Zope 2, and radically altered the fundamental patterns for Zope 3 _away_ from magic.

These days people who live in Zope 2 environments (eg Plone) make extensive use of Zope 3 technologies and patterns via the Five (2+3) bridging mechanism.

Ie, in the Zope world at large, "non-magic" is now considered best practice; its not fair anymore to consider today's Zope a framework that changes the essential nature of the language.

Its been interesting to see the initial Rails elation getting tempered later by grumblings about the pricetag of such magic; the Zope world had gone through the same thing but a few years earlier. Today's Zope has already learnt from this and moved on.

In fact the community has even been able to combine some of the philosophies of Rails (eg avoiding XML sit ups) with the Zope 3 paradigms, to create the Grok framework which remains wholly Zope 3 compatible. This really has the potential to strike a good balance.

</comment></comment><comment><USER6> This is silly.

First off, an IRC channel does not speak for a whole community of users, and an IRC channel that covers a topic that a subset of a community is interested in certainly doesn't cover whole community of users. I mean, Python isn't PHP, it has a lot of uses outside of web development and they don't know or care about the feelings of the #django and they probably don't know what this "magic" thing is either.

Even so, nobody in the world should ever say "Wow" to anything anyone ever does on IRC. It's all happend before, it will all happen again, it's filthy, it's nasty, it's IRC.

Or to paraphrase a great character:

        IRC.  You will never find a more wretched hive of scum and villainy.

At any rate, so far as I can tell the author doesn't know Django very well, which is fine, I don't know it that well either, but rejecting "simple solution #1" that requires writing:

        login_required(some_view)

Instead of

        login_required('some_view')

Because you want to specify _all_ your views by module path strings instead of actually importing one... that's just silly. What is wrong with importing a view to pass it to a method? Nothing, as a fan of Python for the past ~8 years, nothing is wrong with that, it's simple, it works, do it. If it offends your sensibilities, well, your sensibilities are silly.

Never mind the "simple solution #2" (in the comments by ez, but someone on IRC should have thought of it):

        @login_required
        def limited_object_list(*args, **kwargs):
            return object_list(*args, **kwargs)

Yes, crazy simple, a tiny, itsy-bitsy wrapper that does exactly what you need it to do and lets you keep your urls.py looking how you want it to. That would have been my route (although once you have to write actual view code you might as well write your own view, after all the generic views are just there to solve common use cases and they are called "generic" views instead of "customizable and flexible" views for a reason.. besides, they are easy to reproduce if you need more complex view logic).

So, instead of the _existing_ , _simple_ and _working_ solutions the author wants to add a login_required argument to every generic view, instead of just using the _existing_ , _simple_ and _working_ solutions?

Yeah, that makes sense.

</comment><comment><USER7> Magic often means a minor increase in convenience now in exchange for an increased risk of a confusing debugging nightmare at an indeterminate point down the road.

Once you've been burned by it a couple of times, you become very wary.

I think python is somewhat of a refuge for people who have learned the dangers of magic the hard way and decided it should be avoided when it isn't necessary.

<comment><USER4> As much as Rails seems to define the Ruby world, I think that we should be careful to distinguish between the two. Despite its syntactical ambiguity, Ruby is no more intrinsically magic than Python.

<comment><USER7> I didn't want to mention it by name, but I was actually talking about perl.

What originally attracted me to python was that I wanted a non-magical perl.

That may not be such a big factor anymore, but it shaped the language and culture.

"In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it."

<comment><USER8> Perl was a little too much. I like ruby a little better than python because I still need some magic in my life.

</comment></comment></comment></comment><comment><USER9> I would say the big no no in ruby is requiring extensive configuration files. Which I think is also because of Java and its heavy reliance on XML to set things up. If the hello world code cant be done on one line then we won't bother with it.

<comment><USER10> I'm not really sure what you're trying to say here. Are you saying both Java and Ruby require extensive configuration files?

<comment><USER11> I think he's saying that the Ruby community avoids extensive configuration files as a backlash against Java using them.

<comment><USER9> Yes, thank you.

</comment></comment></comment></comment><comment><USER12> Decorators to pass an initarg to a class? I don't think so.

This guy wants dependency injection, which would solve his problem, and is as non-magical as it gets.</comment>


Why is Lisp not as popular as Python? - <AUTHOR> https://www.quora.com/Why-is-Lisp-not-as-popular-as-Python?share=1 <comment><USER2> [http://winestockwebdesign.com/Essays/Lisp_Curse.html](http://winestockwebdesign.com/Essays/Lisp_Curse.html)

Thread on the same: [https://news.ycombinator.com/item?id=14480157](https://news.ycombinator.com/item?id=14480157)

<comment><USER3> Please don't spread ignorant memes written by people with no Lisp development experience.</comment></comment>


Conditionizr - The Conditional-Free Legacy, Retina, Script & Style Loader - <AUTHOR> http://conditionizr.com/

<comment><AUTHOR> [Check out <http://www.functionn.in> for more web resources to keep you functionn.in']

TL;DR Conditionizr is a jQuery plugin which allows you to detect several end- user's browser and environment properties and then serve specific conditional JavaScript and CSS files to them.

License: MIT License</comment>


All Mobile Phones Must Have "Panic Button" Beginning in 2017 - <AUTHOR> http://www.etechtime.com/2016/04/all-mobile-phones-must-have-panic.html <comment><USER2> In case people only read headlines, this is per India's regulations. So, we'll see if it's widespread or not.

</comment><comment><USER3> Signal meets noise.</comment>


Who Killed the Disneyland Dream? - <AUTHOR> http://www.nytimes.com/2010/12/26/opinion/26rich.html

<comment><USER2> Interesting if somewhat unfocused think-piece. What struck me is how forward- looking we were in 1956; Tomorrowland's vision of a future in space looked so clear back then. What would we put in Tomorrowland today?

<comment><USER3> that made me laugh. I remember when the years 2000 was the future. everyone was supposed to be in flying cars by now.</comment></comment>


On Intellectual Dishonesty - <AUTHOR> http://www.aaronsw.com/weblog/intellectualdishonesty <comment><USER2> Feynman: I would like to add something that's not essential to the science, but something I kind of believe, which is that you should not fool the laymen when you're talking as a scientist. . . . I'm talking about a specific, extra type of integrity that is not lying, but bending over backwards to show how you're maybe wrong, [an integrity] that you ought to have when acting as a scientist. And this is our responsibility as scientists, certainly to other scientists, and I think to laymen.

<comment><USER3> And from the HN article "intellectual honesty requires bending-over-backwards to provide any evidence that you might be wrong."

The article is so close to a direct Feynman quote that it makes me wonder if the author was subconsciously plagiarizing Feynman. Normally, I wouldn't mind (subconscious plagiarism is everywhere). But in an article about intellectual honesty I would expect the author to "bend over backwards" to identify and declare potential sources of plagiarism. ;-)

<comment><USER2> Yep, I read it and immediately felt that I had read that same phrase somewhere else.

</comment></comment></comment><comment><USER4> What the author classifies as "intellectual dishonesty" is what I'd usually call "lack of scientific rigor."

If the problem or discussion at hand is one that requires rigor to be meaningful or productive, then lack of rigor is definitely a problem, but it's not an action in bad faith.

Lack of rigor becomes bad-faith acting at the exact moment someone says "interesting result, send me your data and method of collection so I can try to duplicate" (i.e. 'send me the serialized representation of your rigor') and your response includes an excuse for why that isn't available anymore, or can't be shared, or will cost the asker a prohibitive amount of money or time, etc.

<comment><USER5> I would define intellectual dishonesty, in its most basic form, as lying to oneself. If you're intentionally lying to others, you're being dishonest with them. But if you're glossing over your own second-guesses, or taking shortcuts you know to be lazy, or not bringing as much rigor to a situation as you know you are capable of bringing, then you are in some ways "lying" to yourself. Either you are not using your full intellectual capabilities, or you are convincing yourself that you have when you have not.

In this sense, "lack of scientific rigor" would be a subset of intellectual dishonesty. It's not always undertaken in bad faith, but when it's undertaken consciously, then it's dishonest.

</comment></comment><comment><USER6> Dishonesty is defined here as "1) saying that something that is untrue, and 2) saying it with the intent to mislead the other person.".

There's a third part "3) when the person expects you to be truthful". When you make a statement with the intent to mislead somebody but the person is fully aware that he is being mislead, there is no dishonesty. Magicians and illusionists deceive people who expect to be deceived, so that's OK. Same for CEOs and politicians: people are fully aware that words they use are chosen very carefully.

The first part, that a statement must be untrue in order to be dishonest is unneeded, I think. It's irrelevant whether you say something that's true or untrue, what matters is whether the audience is going to form a belief that is correct or not. For instance it's easy to lie to people by phrasing a statement with a triple negation. Few people parse triple negations properly.

The kindle single "Lying" (20 pages; $2 or so), by Sam Harris argues really well in favor of total and completely honesty (but not unnecessary rudeness). He defines lying as "to intentionally mislead others when they expect honest communication", which is the best definition I've come across.

<comment><USER7> I disagree with your assessment of CEOs and politicians. For me, at least, it's because I've seen them lie so many times over so long that I no longer really trust what they say. I expected & would like to expect they tell the truth.

In other words, I still "expect" honest communication from CEOs and politicians and am frustrated by their lying.

<comment><USER8> I agree. We tend to accept lies from politicians because they "always" lie and we don't expect otherwise. But understanding that this is the practical reality at the moment doesn't mean it should be acceptable. We should push back and expect more.

Every time someone repeats the lie that lying politicians are expected and accepted, they're helping make the lie true. Stop it.

<comment><USER6> I completely disagree. For every voter with an IQ of 120 we have a voter with an IQ of 80. For every voter with an IQ of 130 we have a voter with an IQ of 70. There is a huge part of the population that cannot be persuaded with argument or reason. But the problem isn't just that the majority is uneducated or unintelligent. It's also about the team dynamics that are at play here. The moment you answer a question "incorrectly", you become the enemy in the eye of the voter: somebody from the other team. It betrays weakness.

This is why so many politicians are completely unable to concede a single point, even when it's completely obvious they're wrong, even when conceding the point wouldn't damage the strength of their argument. The rules political rhetoric are simple: disagree with all arguments and facts of those you oppose and never ever ever admit you're wrong. The moment you say you made a mistake your opponents will mercilessly use it against you and your supporters will perceive you as weak.

The whole political game is not fact based and never has been, in no country at no point in history. It's about teams. And people want their team to _WIN_ , facts be damned.

<comment><USER9> Perhaps there are legitimate reasons for lying (we can save that for a separate thread). But it's still lying.

I would argue that lying has nothing to do with expectations. Magicians and comedians lie, but we are okay with it and we (hopefully) don't believe those statements. We just get our chuckles and forget about them.

Many (not all) people expect politicians and other leaders to lie. And like you said, maybe we need them to lie, maybe the world is better for it. And I am sure there are plenty of politically correct terms to use for those instances instead of lying.

But if the statement is false, then it is false. It doesn't matter how the recipient of the message interprets it, that's their problem.

</comment></comment></comment></comment></comment><comment><USER10> A widely linked reprint of Richard Feynman's "Cargo Cult Science" commencement address at Caltech:

<http://www.lhup.edu/~DSIMANEK/cargocul.htm>

The original Caltech posting of the speech text, in .PDF format:

<http://calteches.library.caltech.edu/51/2/CargoCult.pdf>

"I would like to add something that's not essential to the science, but something I kind of believe, which is that you should not fool the layman when you're talking as a scientist. I am not trying to tell you what to do about cheating on your wife, or fooling your girlfriend, or something like that, when you're not trying to be a scientist, but just trying to be an ordinary human being. We'll leave those problems up to you and your rabbi. I'm talking about a specific, extra type of integrity that is not lying, but bending over backwards to show how you are maybe wrong, that you ought to have when acting as a scientist. And this is our responsibility as scientists, certainly to other scientists, and I think to laymen."

</comment><comment><USER11> When I lie I must think about the other guy, the person I am trying to deceive, in one of two ways:

(1) he is an aggressor and I must lie to defend myself, (2) he is a good person but I'm doing him an important favour.

Thus for example: (1) I deceive during wartime by feeding false information to enemy spies or painting wooden boxes to look like tanks, (2) I lie to a family member in order to protect his feelings.

These are 'good' lies. How does it manifest with bad lies?

I conjecture that the bad guys think in precisely the same ways!

So, for example, Hitler really thinks _he_ is is the victim and needs more breathing room, (2) the conman believes his mark is naive and will benefit from learning the ways of the world.

In order to accomplish this the liar has to be intellectually dishonest. He must adopt conspiracy theories or other crazy explanations. He must ignore the nagging feeling from his conscience or impute it to the enemy's supposed injustices.

This makes me _doubt the existence of bad intentions_. Or if they do exist, they are strictly unconscious. Everyone sees himself as a good guy or a victim.

<comment><USER12> > Or if they do exist, they are strictly unconscious. Everyone sees himself as > a good guy or a victim.

Generally, I agree with your thrust, but not so strongly as you have phrased it. Self-acknowledged "bad guys" do exist.

</comment></comment><comment><USER13> Huge example of intellectual dishonesty in academia: you effectively can't publish negative results.

<comment><USER14> I suspect the problem is not rejections, but that people don't bother submitting them because it's not exciting.

Has anyone here tried hard to publish a negative result and had it consistently rejected?

<comment><USER13> Yes, that the researchers don't push to publish them is what is dishonest.

<comment><USER15> Is it really feasible to publish _everything_?

And if you do publish everything, then everything will be lost in a sea of noise... you'd need to create "ultra-publishing" to resolve that...

</comment></comment></comment></comment><comment><USER16> > indeed, if you were intellectually honest all the time people would think > you were pretty weird.

See the biography of Stonewall Jackson. People thought his practice somewhat peculiar, but it earned him respect.

</comment><comment><USER17> It's called lying by omission:

<http://en.wikipedia.org/wiki/Lie#Lying_by_omission>

<comment><USER18> See also: Implicature

<http://en.wikipedia.org/wiki/Implicature>

</comment></comment><comment><USER19> <https://en.wikipedia.org/wiki/Richard_Feynman>:

"The first principle is that you must not fool yourself—and you are the easiest person to fool. So you have to be very careful about that. After you've not fooled yourself, it's easy not to fool other scientists. You just have to be honest in a conventional way after that."

We've learned from experience that the truth will come out. Other experimenters will repeat your experiment and find out whether you were wrong or right. Nature's phenomena will agree or they'll disagree with your theory. And, although you may gain some temporary fame and excitement, you will not gain a good reputation as a scientist if you haven't tried to be very careful in this kind of work. And it's this type of integrity, this kind of care not to fool yourself, that is missing to a large extent in much of the research in cargo cult science.

"Cargo Cult Science", adapted from a commencement address given at Caltech (1974) <http://www.lhup.edu/~DSIMANEK/cargocul.htm>

</comment><comment><USER20> To be the most honest person in the world you have to be good at knowing when to lie, cheat, deceive, mislead and steal. People who never do any of those things are forced into positions where they must lie, cheat, deceive, mislead and steal... Unless they understand the spirit of the game and bring in the whole picture with words like justice, fairness, catch-22's, war, and love.

do you tell the genius ax murderer who is trying to kill you that you have changed your name and new location when he asks? Why not? It's dishonest.

</comment><comment><USER21> Nice little write-up. I think I should take "This is an impractical standard to apply to everyday life" more to heart. In conversation I sometimes find myself adding unnecessary caveats to what I say, sort of similar to his "slept in one time in 2003" example. And he's right, trying to hold yourself to this standard of honesty all the time in real life will make people think you're weird.

<comment><USER22> On the other hand, be careful with this approach. It can be very difficult to get candid feedback in environments with a certain expectation of etiquette.

One advantage you may be winning for yourself with your caveats, without even realizing it, is a degree of credibility. By being careful that what you say is correct, and not merely "Basically right, more or less. Kind of.", you may find it much easier to convince people when you _do_ take stronger positions.

I think Aaron's counterexample is pretty terrible. Recalling one time you slept in once in 2003 is really not pertinent to the spirit of the question. The point is clearly not to ask you whether you have ever failed to show up for work on time, but whether you have reason to believe that it may be particularly difficult for you now, perhaps because you live far away or have a history of repeated difficulties with time management.

Personally I would recommend erring on the side of accuracy. I've witnessed plenty of cargo cult programming. "This technology will perform well enough for us" could mean from one person "I have run benchmarks on representative hardware and know that, under conditions I am about to explain, this technology will work for us", and from another "I have read about someone else using this technology in some way for something. I don't remember where I read it. Probably a blog post that made it to hacker news."

</comment></comment><comment><USER23> Maybe this is why people who are vehemently anti-science can't understand the rigor that is (supposed to be) at play in scientific "theories", etc.

</comment><comment><USER24> Advertising and marketing fails on all counts. "Truth in advertising" is the biggest lie of all.

<comment><USER24> I guess lying is bad for science. It's cool if you're just trying to make money.

Seriously, advertising that isn't lying is called "information". And very very few advertisers stick to simply informing people about their product and its verified functions.

It's always "This is so cool! Everybody is using it! Impress your friends! Pick up chicks! It won't hurt.". Lies, all.

Keep the downvotes coming.</comment></comment>


The Worst Job At Google: a Year of Watching Terrible Things On the Internet - g-garron http://tech.slashdot.org/story/12/08/21/2028207/the-worst-job-at-google-a-year-of-watching-terrible-things-on-the-internet

<comment><AUTHOR> Why submit or upvote the Slashdot discussion instead of the original Buzzfeed article ([http://www.buzzfeed.com/reyhan/tech-confessional-the- googler...](http://www.buzzfeed.com/reyhan/tech-confessional-the-googler-who- looks-at-the-wo))?!

Maybe a better question would be how a Slashdot link makes it to the front page...

<comment><USER2> Because the buzzfeed article was instantly dead after it was submitted (multiple people tried).

</comment></comment><comment><USER3> My ex-girlfriend did a stint that included work like this at Google. She was originally hired (as a contractor) for something completely different. At the time, they had a counselor on site to deal with anyone getting traumatized by the work. And not surprisingly, she was not converted to full-time employment after 10 months of this...

</comment><comment><USER4> I read a story a few months or so ago about a company that provides this kind of monitoring service for several major social media companies. They seemed to handle it a lot better than Google. In particular, they had counsellors on site available any time people were working.

I tried to find a link but failed.

</comment><comment><USER5> You'd think the FBI would rent an API to make comparisons against their database of illegal stuff.

</comment><comment><USER6> What I find most interesting here is that they apparently overworked him so much on all this horrible content that he became unable to actually do his job and tell the difference between acceptable and unacceptable.

</comment><comment><USER7> Just curious: What is the actual job description for this kind of interwebs janitor'ing?</comment>


Entering a new era in Art. Finally - <AUTHOR> https://www.theguadrain.com/artanddesign/2017/nov/12/new-era-in-art <comment><USER2> What the hell is this domain?

"theguadrain.com" kind of looks like a phishing domain, but not sure what the purpose is. Most people don't log into news sites, and all of the links point to "theguardian.com". Different whois info.

Is guadrain 'guardian' in a different language? Is someone doing something malicious with this?

</comment><comment><USER3> To make a convincing parody, you need to be able to write as well as the voice you are trying to mock.</comment>


Kubernetes native apps and abstractions using object-oriented programming - <AUTHOR> https://cdk8s.io/ <comment><AUTHOR> Link to github project: [https://github.com/awslabs/cdk8s](https://github.com/awslabs/cdk8s)</comment>


Ask HN: Freelancers/consultants, what is your first-client-meeting checklist? - <AUTHOR> Aside from red tape (negotiating a rate, legal forms, etc.), what things do you make sure to ensure to make sure project planning goes smoothly and requirements have been clearly expressed/understood? <comment><USER2> There is no way to insure that project planning goes smoothly and requirements are clearly expressed because those things are not under your control. To put it another way, your checklist is your checklist, not the client's. Besides, your goal as a consultant is not for the project to go smoothly, your goal is to get paid for dealing with the unsmoothness and unclarity. If dealing with those has adverse impact on your psychological well being, then long term success in customer relations may be difficult. Conversely, if the client is not able or unwilling to pay you for dealing with the risks of unsmoothness and unclarity, stay away. Good luck.

</comment><comment><USER3> \- Checklist of tests that the project must pass. I had this issue with one client who put "chat system" in the app, but in his mind, it's

\- Clarify to the client that all submitted design is "low res", i.e. wireframe, unless it's in CSS/XML/whatever. Font weights, button curves, padding, etc, are not part of the specs.

\- Make sure they're not trying to screw me. There's a lot of gray areas in software. It's nice to take the middle point in a contract, not the point where you have the most to lose. Many clients will try to use that gray area to fleece you. This is the main reason contracting is so expensive.

</comment><comment><USER4> I always start with a casual phone call to gauge their style and personality, and to gauge how well they understand the challenge. If it goes well and there's a spark, I reach out with a custom statement of work based on notes I took during the initial call, and we formalize terms, budgets, etc. to fill in the blanks. That almost always ends with a digital handshake by the end of the call and I start on the work immediately.

In a meeting and a half I understand the problem, their understanding of the problem, their personality and work style, and specific terms.

</comment><comment><USER5> 2 of mine:

\- Make sure client actually knows how software development works. This keeps their expectations in check.

\- Make sure their intentions are honest. This keeps my expectations in check.

<comment><USER3> That first part is exactly the checklist.

Even for software developers, it varies a lot, e.g. everyone has different expectations of Agile. A lot of people do Agile with deadlines. Some people think scrum means they bother you every 2 hours asking for a progress report.</comment></comment>


Mike Rowe: Celebrating Work - <AUTHOR> http://www.ted.com/talks/mike_rowe_celebrates_dirty_jobs.html

<comment><AUTHOR> I am not a fan of the show, Dirt Jobs, but this talk makes me want to give it a second look. An incredible talk from a very unlikely source, powerful intellectual lessons from very dirty "blue-collar" work.

<comment><USER2> You should definitely give Dirty Jobs a second look. It's very very well done and Rowe carries it exceptionally.</comment></comment>


On BitBucket "we review our highest voted issues regularly" but to no effect - <AUTHOR> https://bitbucket.org/site/master/issues/12833/branching-models-for-bb-cloud#comment-45982415 <comment><AUTHOR> Between GitHub being acquired by Microsoft, and Atlassian ignoring most of its top-voted issues for BitBucket Cloud and having significant differences between its Cloud and Server versions, it looks like a great week for GitLab.

As a strong supporter of BitBucket for years, this makes me sad. As a very happy GitLab users over the past few years, this makes me fairly happy, though, to balance things out (and hosting FOSS on an open source platform makes more sense to me anyways).

See also: [https://www.reuters.com/article/us-github-microsoft- gitlab/g...](https://www.reuters.com/article/us-github-microsoft- gitlab/gitlab-gains-developers-after-microsoft-buys-rival-github- idUSKCN1J12BR)</comment>


What Windows programmers deal with every day - <AUTHOR> http://melikyan.blogspot.com/2007/12/microsoft-arithmetic-service-api.html

<comment><USER2> I don't see the point of this - system programming in C/C++ looks like this on pretty much any platform, and you almost always have a higher level alternative which avoids it.

<comment><AUTHOR> Not true. Compare, for example, the bloated Windows Services API and the daemon paradigm on UNIX. It is more about philosophy and overall architecture than how exactly the API functions look like.

The goal of UNIX creators was to simplify their job, while Microsoft's goal is clearly to sell the OS. That explains a lot.

In fact, this API style was invented by IBM and was later only borrowed by MS.</comment></comment>


YouTube spitting out obscure message for all searches - <AUTHOR>

"There may be confidential content in your search results. Please do not share outside Google."
shows up on all youtube searches
Sample: URL: https://www.youtube.com/results?search_query=kittens Screencap: http://i.imgur.com/NxtHU34.png <comment><USER2> Just a bug - <https://twitter.com/YouTube/status/332583914818379776></comment>


PostgreSQL/FreeBSD performance and scalability on a 40-core machine [pdf] - <AUTHOR> https://kib.kiev.ua/kib/pgsql_perf.pdf

<comment><USER2> A couple thoughts after skimming the article:

* Peak performance came at the number of threads == number of cores (vs hardware threads, being double that).

* How does the same hardware profile when running Linux?

<comment><USER3> The DragonFly benchmark results included in the reference at the end of this document include DragonFly, FreeBSD 10.0, Centos and Debian. In short, the other operating systems they benchmarked don't display the substantial scalability problem observed on FreeBSD in their test.

[http://lists.dragonflybsd.org/pipermail/users/attachments/20...](http://lists.dragonflybsd.org/pipermail/users/attachments/20140310/4250b961/attachment-0002.pdf)

Note that there are some concerns with the benchmark technique used here (both the test that's the subject of this post, and the DragonFly testing). Running the pgbench test tool on the same host that's running the database under test can severely impact the results in ways that don't reflect what you'd see in a real deployment. See this post from Attilio Rao for more detail: [http://lists.freebsd.org/pipermail/freebsd- performance/2014-...](http://lists.freebsd.org/pipermail/freebsd- performance/2014-May/004787.html)

The test here was done to push PostgreSQL on FreeBSD to the limit, in order to understand and then eventually fix the bottlenecks; it's not directly useful as an indication of the performance one should expect from a real deployment.

</comment></comment><comment><USER4> Here are the patches referenced in the article:

[https://kib.kiev.ua/kib/pig1.patch.txt](https://kib.kiev.ua/kib/pig1.patch.txt)

[https://kib.kiev.ua/kib/patch-2](https://kib.kiev.ua/kib/patch-2)

</comment><comment><USER5> [http://docs.google.com/viewer?url=https%3A%2F%2Fkib.kiev.ua%...](http://docs.google.com/viewer?url=https%3A%2F%2Fkib.kiev.ua%2Fkib%2Fpgsql_perf.pdf)

</comment><comment><USER6> When did we stop getting [scribd] suffixes for PDF links?

<comment><USER7> About a week ago. [https://news.ycombinator.com/item?id=7928852](https://news.ycombinator.com/item?id=7928852)

<comment><USER8> It seems your public domain suffix list needs updating (kiev.ua is a public domain). Someone's posted a link to a relevant Mozilla project recently: [https://publicsuffix.org/](https://publicsuffix.org/)

</comment></comment></comment><comment><USER9> I feel like this is obligatory: [http://xkcd.com/619/](http://xkcd.com/619/)

<comment><USER10> Do you absolutely need full-screen flash video on your 40-core DB server?

<comment><USER11> You do absolutely need a 40-core server for full-screen flash video.

<comment><AUTHOR> What's flash?</comment></comment></comment></comment>


Sam Altman at the Family, Paris [video] - <AUTHOR> https://www.youtube.com/watch?v=ZKSNjIAfm88 <comment><USER3> Regarding universal basic income, Sam says we need to study what happens when people have no jobs:

> _no matter how much people complain about their jobs, they like having > somewhere to go everyday, they like having colleagues, like having a sense > of mission in their lives_

(As an aside, this statement, oft repeated, always struck me as weird because the one thing I've always not wanted to do was "having somewhere to go everyday".)

But there are a lot of people who don't have a job, have revenue, and seem extremely happy and fulfilled: the retirees. In developed countries people retire around 60, and then go on to live 25 more years on average [1].

The least we could do if we want to study what happens when people have no jobs, would be to study them?

[1] [http://www.helpage.org/global-agewatch/population-ageing- dat...](http://www.helpage.org/global-agewatch/population-ageing-data/life- expectancy-at-60/)

<comment><USER4> To be honest retirees make for a bad example. They have unpaid jobs, usually engaging with other retirees in a hobby, a community service or endless doctor visits. And those who dont - die really fast from bad lifestyle choices resulting from doing nothing.

So bad example.

<comment><USER5> It's pretty telling that you can only express "they find things to do with their time" as "they have unpaid jobs".

Yes, people find things to do with their time besides vegetate in front of the television. No, those things are not "unpaid jobs". Talk about question begging!

</comment></comment></comment><comment><USER6> I appreciate his comments about SV being special because it's actually acceptable to be ambitious, you're allowed to be someone who in most circles would be considered tedious because you only think and talk about your serious projects, probably sometimes met with yawns and "isn't that nice."

SV is special in this regards. I'm now realizing that's one of the main reasons I'll probably never move back home. Family, old friends, the culture of other cities will, in reality, put a bunch of shitty social pressure on you unless you're already rich and successful.

As a side note, I still bet most of this forum is against this ambitious personality, affirming at the end of the day that "there is more to life than your projects, go out and live, meet someone, fill out your social schedule, etc." That's certainly all wonderful, but it's the same social fabric that exists everywhere that's not Silicon Valley. Sam put his finger on something that is uniquely SV, and I think it's something to protect and cherish.

As another side note, I think it's kind of a shame SV is migrating to SF, because SF doesn't afford that protection. There are locals everywhere who despise the ambitious entrepreneur techie type. It's a bit of a struggle in subtle and sometimes unsubtle ways. It's obviously a face of the real world with class tension undertones and what not, but outside of maybe a few bubbles in the city which seem to me to all be in SoMa, it's just not a great environment if you are one of these ambitious personalities IMO. That and there are no late night hacker friendly cafes... why?

<comment><USER7> It's uniquely SV only for those who spend all their life in SV. Go to NYC, go to LA, go to London, go to Tokyo, and you will find very ambitious and driven people working hard on their acting/band/fashion label/non profit/etc. Those people also tend to be way more open about the forms creativity other than their own takes, whereas the SV techie entrepreneurs tend to think that anything other than changing the world with a billion dollar startup is a waste of time.

Which is why on a personal level, after about a decade in SV, I'm very much looking forward to leaving soon, having realized that ambition, fulfilment, and impact can be realized in ways other than yet another iOS or rails app, and am getting tired of the monoculture.

<comment><USER6> > having realized that ambition, fulfilment, and impact can be realized in > ways other than yet another iOS or rails app.

If you think that's SV you're probably not the ambitious personality type I was referring to, while also being unaware of what's getting the focus these days in SV (which is most certainly AI/ deep learning).

I've lived in more cities (3 months+) than most in this forum being a perennial digital nomad (And I don't know why people keep citing Tokyo - <USER2> culture is not pro entrepreneurship for young people at all, there is no real concept of a coworking spaces, etc. I did however meet a lot of white techies from SF so maybe that's why people are getting that impression!). It's a certain type of ambition/ personality that's encouraged here, for better or worse.

<comment><USER8> "3+ months" is a pretty vague timeframe (or not a time_frame_ at all, actually). Unless you already know the language and integrate extremely well into the culture of a country, spending less than a few years there won't mean that you know much about the country and its opportunities.

Superficially, spending a few months in a place sounds like you'll probably "get it", but I don't believe for a second that you learned much of value from each country with this lifestyle. You seem to have seen a lot of places, but you haven't lived them.

</comment></comment></comment></comment><comment><USER9> Must be nice to not have to do things that you find boring. I don't think most founders are in that position.

I know founders who try to be in that position by unloading the boring tasks to other people. If it is boring for you, chances are pretty good that it is boring for someone else (unless it's their chosen profession). Of course, it's a great way to gauge power - delegate something that you think is boring to see if someone will just do it without complaining. If they do it, great! You're more powerful than they are. They'll also resent you and stab you in the back when they get a chance.

<comment><USER10> Most founders aren't in that position, and Sama said that. Startups are mostly about doing the same thing over and over.

</comment></comment><comment><USER11> This was a really refreshing event to attend and the open Q & A resulted in a lot of different questions than were typically seem to get asked when a talk only has a chance for a few questions at the end.

On a related note, can someone explain France's obsession with chatbots to me?

<comment><USER12> I wonder the same. My best guess is that it's because of the movie Her... Although, if I recall correctly, Rus Salakhutdinov said in a recent talk at the Simon's Institute that chatbots are nowhere near ready. ([https://simons.berkeley.edu/talks/russ- salakhutdinov-2017-3-...](https://simons.berkeley.edu/talks/russ- salakhutdinov-2017-3-29))

</comment></comment><comment><USER13> Surprising to hear Sam say that SV has no advantages. Just because it's nice to tell an international crowd, doesn't make it true.

<comment><USER14> Around ~38m, Altman says SV has (imitable) advantages including ambition and capital.

<comment><USER13> great point - I upvoted you

</comment></comment></comment><comment><USER15> The Family & Co. is a friendly bunch. Like other actors in Paris, they make a good contribution to the ecosystem. Nice to see them get this kind of attention.

</comment><comment><USER16> Sam refers to the advances in ML in _the last two years_ that will truly change jobs / work and everything.

Which particular advancement in AI / ML is he referring to?

</comment><comment><USER13> Anyone have good resources on the future of internet security???

I do think it's about to get crazy if (like Sam mentions) individuals use superior AI to attack systems.

<comment><USER17> I don't really want to talk about projects when it's not yet finished. But we are gathering[1][2] training data as of now everyday on how a pentester uses a proxy such as mitmproxy by recording keystrokes and marks a API vulnerable. With enough data it will be a matter of choosing an ML model to train on it.

For an analogy, its like gathering data for self driving car.

1\. [https://github.com/mkagenius/mitmproxy/commit/fa706a479aeecf...](https://github.com/mkagenius/mitmproxy/commit/fa706a479aeecf6c3e4eaf8ca71021f972249a41) 2\. [https://github.com/mkagenius/mitmproxy/commit/407f636b4fe1bc...](https://github.com/mkagenius/mitmproxy/commit/407f636b4fe1bc3580a269fc71486f1f0a1b852b)

</comment></comment><comment><USER18> Anybody knows if there is a transcript?

<comment><USER19> I'm sure it'll get delegated to someone soon! :)

</comment></comment><comment><USER20> You're literally a Rails developer, so I think parent nailed it.

<comment><USER21> That crosses into personal attack. Please don't do that here.

We detached this comment from [https://news.ycombinator.com/item?id=14129541](https://news.ycombinator.com/item?id=14129541) and marked it off-topic.

</comment></comment><comment><USER22> _" I think repetitive work jobs will be replaced by machines in 10 years"_

OK, George Jetson, make sure and let me know when all the repetitive work in the world is replaced by an algorithm, because I don't want to miss it.

Also, he talks about the idea of a single corporation controlling the "infinite intelligence" of AI - buddy, they won't, the government will, and another government will go to war with our government for it, and it'll start WWIII. So I really wouldn't worry about who owns AI in the future. More like, invest in SpaceX to catch the first pod to Mars.

<comment><USER23> He said repetitive jobs will be done better by machines in the next 10 years. Which is slightly different to your quote.

<comment><USER24> I think it was, to paraphrase, "the repetetive part of jobs", which is, according to him, "75-80% of what most of us do".

Just a slight distinction, between all jobs, "repetitive jobs" and what I mention, "repetitive part of jobs".

Interesting to compare this idea with last week's Ask HN (How much of your time at work do you spend not working?)

[https://news.ycombinator.com/item?id=14082599](https://news.ycombinator.com/item?id=14082599)</comment></comment></comment>


A simple keyword research & content roadmap for startups - <AUTHOR> http://honeypotmarketing.com/keyword-research-blueprint/ Search and content optimization is quite often ignored by start-ups and small companies, the reality is that a modest time investment can pay large dividends towards business and visibility growth. I figured I would write up a quick little roadmap that can get you started around a strong search marketing strategy. <comment><USER2> Nice service for anyone starting a business</comment>


A glimpse of Cornell's new tech campus - <AUTHOR> http://venturebeat.com/2015/11/17/heres-a-glimpse-of-cornells-new-tech-campus-the-future-of-ny-startup-scene/ <comment><USER2> Its great that that the US is investing into more institutions of higher education, but my issue is with New York.

The cost of living as well as rent is already sky high, so I would assume that most entrepreneurs, who want to keep their burn low avoid such a place, unless they are building something that is very closely linked to the financial world.

<comment><USER3> How then do you explain the popularity of SF, where the cost of living is higher than in NY?</comment></comment>


Ask HN: Is there enough video content out there today to learn cs & programming? - <AUTHOR> I have a hard time reading, especially if it's a lot of text. I was wondering if there's enough video content on the internet today that it's possible to learn enough computer science and programming mostly from videos to be able to work as a web or software developer and possibly even build a business. <comment><USER2> It's quite the opposite. There's excessive amount of content out there so the problem is not the lack of content but the fact that there's too much content and you get into analysis paralysis in terms of where to learn. A lot of people just look for an easy way to learn so they dabble here and there and never end up learning. The challenge is to be patient enough to pick one source, sit down and start learning, instead of jumping from here to there.

</comment><comment><USER3> [https://github.com/open-source-society/computer- science](https://github.com/open-source-society/computer-science)

<comment><AUTHOR> Thanks for sharing that :)

</comment></comment><comment><USER4> 1\. If you have hard time reading, you'll have very hard time writing software.

2\. To build websites you don't use computer science _at all_ , so if it's all you want, you can skip most of the computer science courses. Just leave some algorithms and data structures course in your curriculum.</comment>


It's Official, Akon Has His Own "Crypto City" in Senegal - <AUTHOR> https://decrypt.co/16572/its-official-akon-has-his-own-crypto-city-in-senegal <comment><USER2> "Locked up, they won't let me outtt."</comment>


The Structure and Interpretation of the Computer Science Curriculum (2004) - <AUTHOR> http://cs.brown.edu/~sk/Publications/Papers/Published/fffk-htdp-vs-sicp-journal/ <comment><USER2> [https://htdp.org/](https://htdp.org/)

<comment><USER3> More info and links...

HtDP is the textbook for the curriculum approach described in the paper. It's supported by the student-oriented DrRacket IDE (which is included with a normal Racket install): [https://www.racket-lang.org/](https://www.racket- lang.org/)

Besides HtDP as an intro course for undergraduate CS majors, they also have an interest in teaching program design as a part of basic literacy, including to younger students.

In addition to HtDP, a lot of Racketeers also value the relatively intimidating SICP, and DrRacket supports SICP as well: [https://docs.racket- lang.org/sicp-manual/Installation.html](https://docs.racket-lang.org/sicp- manual/Installation.html)

</comment></comment><comment><USER4> > The primary goal of a computing curriculum is to produce programmers and > software engineers.

It reminds me of the old joke, "Computer Science could be called the post- Turing decline in the study of formal systems."

<comment><USER5> Sadly, you are right. SICP has vanished from most introductory courses. CTM a fantastic sequel, more oriented towards formal semantics, has never really made it into mainstream.

A central topic in CS studies should be formal system semantics. These days, students only get some computability and complexity notions. Usually embedded in an algorithms course. At that's it.

Which is sad. You can get a lot of insights into CS, and Software Engineering as true engineering, by going through some basic semantics notions. Take a theorem prover, and teach students how to model different computation systems and verify some properties on them.

If time allows, expand into more efficient but less general approaches like abstract interpretation, static analysis, model checking and type/effect systems.

You don't need a ton of background. Some beautiful texts cover these with just FOPL [1,2].

[1] [http://www.concrete-semantics.org/](http://www.concrete-semantics.org/)

[2] [http://adam.chlipala.net/frap/](http://adam.chlipala.net/frap/)

<comment><USER6> > CTM

Unfortunately, the accompanying Mozart 2.x interpreter/programming environment doesn't yet support some important features of the Oz language, and the old 1.4.x implementation is so outdated the easiest platform to install it for is... Windows. The macOS version seems oblivious to the relatively recent tightening of app permissions, and Linux is something I have yet to figure out.

<comment><USER5> Yes, this sucks. I have an old Ubuntu VM for running Mozart 1.4.

</comment></comment></comment></comment><comment><USER7> Quote 1 "Clearly, a computer science curriculum must not, and doesn't have to, become a vocational training ground for the latest industrial programming language and programming tools. Superficial aspects of industrial practice change as fast as fashion trends. No academic department can switch its course content fast enough and maintain a curriculum that passes on tested wisdom."

Quote 2 "Applied to the first-year courses, these suggestions say that the year should start with a heavy emphasis on principles and should add some industrially relevant components during the second semester. Even more precisely, the first semester should emphasize programming principles and habits; the second part should illustrate the use of these principles in currently fashionable programming languages. Of course, the "principled" semester may integrate fashionable parts where they aren't an obstacle, and, more importantly, the "fashionable" part of the first year must continue to practice good design habits."

First, organizations that employ software developers don't choose programming languages and toolchains because they are "fashionable". They choose them because of proven utility and effectiveness, prior experience, employee knowledge base, and inertia. Introducing the "fashionable" language to your organization typically requires overcoming considerable resistance from both management and peers. As a result the turnover of languages used in any particular sector of software development is really slow. The changes in relative frequency of use of programming languages more often reflects new areas of application, such as mobile, bioinformatics, machine learning, etc where early practitioners set precedents for the use of a new language.

The age of the top languages in Tiobe Index are C, 47; C++, 34; Python, 29; Java, 24; JavaScript, 23; C#, 19; and VisualBasic.net,17.

<comment><USER8> > First, organizations that employ software developers don't choose > programming languages and toolchains because they are "fashionable"

Citation needed

<comment><USER9> c. 2004 there wasn't as much of a chase of fashionable languages or the rapid churn of frameworks that is seen today in some technology stacks.

<comment><USER10> Yes there was. Java's adoption itself was largely a result of corporate fashion and was brought into university and high school curricula to meet their needs. Fashion has always been part of the industry in some way.

<comment><USER3> Java was a very plausible language for teaching software development at the time. It had memory safety, good multithreading support, static typing, exceptions with some static checking, and supported OO. The sandboxing and VM was also appealing, for tools support and research.

OO was very popular, and not just for fashion: (1) academia was concerned with things like interacting objects as models of computation; and (2) OO methodologies of the time were very useful tool for practical reasoning about systems designs, and Java arguably supported mapping design models to code better than any non-research language of the time (though there's still a gap).

I was involved with a university CS department effort to learn about and evaluate many OO languages, for rethinking intro CS education, and I recall Java did very well. This was before most companies other than Sun had ever heard of Java, so I'm not aware of any employer push at that time.

Turning exciting Java (which initially seemed targeted at the kind of programming work then using C++, not corporate MIS programmers using 4GL frameworks and such) into a bureaucratic enterprise language, came later.

Regarding pre-corporate university interest in Java, I can mainly tell you what I recall, but you can still see this 1996 Emacs mode for writing in an assembly language for the JVM (like a student might go to the trouble to spend time on, if Java had research target appeal): [https://www.neilvandyke.org/jasmin- emacs/](https://www.neilvandyke.org/jasmin-emacs/)

</comment></comment></comment></comment></comment><comment><USER11> Surprising quote: "Several instructors reported that female students like the HtDP curriculum exceptionally well. In a controlled experiment, an htdp- trained instructor taught a conventional AP curriculum and the Scheme curriculum to the same three classes of students. Together the three classes consisted of over 70 students. While all students preferred our approach to programming, the preference among females was a stunning factor of four. An independent evaluator is now investigating this aspect of the project in more depth."

That said, what I really liked about my SICP course at Boston Univeristy in 1987 was the fact I could do all the exercises on our office PC (an 80286), with Emacs as the IDE. Quite heady stuff back in day.</comment>


Ask HN: Had someone switched back from SublimeText? - <AUTHOR>

I was a VIM fan until i met SublimeText, had someone ditched it? <comment><USER2> I know it's not directly your question, but I ditched it for Brackets which has a VIM command plugin. I switched because of the plugin architecture of Brackets and it's support for real time debugging of chrome and Node.js at the same time.

</comment><comment><USER3> I never ditched Sublime Text. I've installed the last version and it's lighting fast. Emmet and some other plugins and that's all I need.

</comment><comment><USER4> Tried Sublime a couple times but I always miss something from VIM. Switched back. No patience/knowledge to customize Sublime the way I do with VIM.

</comment><comment><USER5> I still use it, but I'm a little sad about how the community is handled. In the end I feel it is more pragmatic than Vim and Emacs.

</comment><comment><USER6> Nah, i went back to Vim, did not try for very long though, can´t really say gave sublime an honest chance.

</comment><comment><USER7> I started with Sublime and moved to Vim. Don't regret it for a moment.

</comment><comment><USER8> No, i like sublime very much.</comment>


Who Needs Git When You Got ZFS? (2013) - <AUTHOR> http://zef.me/6023/git-zfs <comment><USER2>
      $ dd if=/dev/zero of=/tmp/disk1.img bs=1024 count=10485760

is a terribly inefficient way of creating a test image. It wastes 10GB of disk space. It takes dozen of seconds to run. Etc. Instead you can create a _sparse_ file of 10GB that takes 0 bytes on disk. The creation of such a file is instantaneous:

      $ dd if=/dev/zero of=/tmp/disk1.img bs=1024 seek=10485760 count=0

The key is seek=XXX. The filesystem will not allocate blocks before this offset. An application reading before this offset will just read virtual zero bytes.

Otherwise, this is a nice succinct article showcasing the snapshot/clone feature and send/receive snapshot deltas between 2 systems.

Edit: on Mac OS X, UFS supports sparse file, but not HFS+. On Linux, all major fs support sparse files.

<comment><USER3> Huh. I didn't know that. Does it work on any filesystem?

<comment><USER4> I think about anything newer than fat32 supports sparse files.

<comment><USER5> The FS people today are likely to come across which doesn't support them is HFS+.

<comment><USER6> Afaik neither exFat or fat32 support it -- and they are still(?) popular for flash sticks and/or drives that needs to be shared between OS'.

</comment></comment></comment></comment></comment><comment><USER7> While what the author demonstrates as the capabilities of ZFS to act in many respects like a version control system --one that you would never actually use, I think is foretells a future for file systems. It only makes sense that versioning should in fact become a standard part of all file systems eventually. There are definite limitations born of version control and file system not "living in the same world", so to speak. The most obvious of these is the notorious `rm foo`, oops... I mean `git rm foo`!

<comment><USER8> I was using a versioned file system in 1992, and you didn't even have to be a privileged user to take advantage of it.

<comment><USER9> ... and versioned file systems in production use have been around since _at least_ the early '70s... (tenex/twenex, etc)

<comment><USER10> and Tops10, Tops20 as well.

</comment></comment></comment></comment><comment><USER11> We should think more _out of the box_. BeOS BFS, (ReiserFS4) and early versions of NTFS supported extensive object oriented metadata and search capabilities ("Cairo") - something like WinFS but directly in the filesystem driver. Data could be organized like in relational databases today, you could find your data in various ways. Not just in the old and proven way of hierarchical directory tree.

A modern filesystem that is available for common operating systems would be a good starting point.

I am not sure if ZFS is the answer, there might be better FS around, but we need definitely rock-solid file system drivers that we can rely on for WinNT 5+ and current OSX (as well as Linux and *BSD but at least ZFS has it for the later).

At the moment the common determinator of all filesystem drivers are various editions of Microsoft FAT filesystem - a pretty basic and old filesystem by today's standards. NTFS as filesystem is very rock-solid and read & often also write support is available in all common OS.

We would definitely benefit if solid r/w filesystem drivers like ext4, XFS, ReFS, BFS/BeFS, Btrfs, etc. would be available on more OS platforms.

<comment><USER12> This ignores the massive body of research and evidence that suggests putting a database in a file system is a Bad Idea.

File systems deal with organizing unstructured data (i.e. blocks of bytes); databases deal with organizing structured data (i.e. typed records).

Efficiency and scalability come from decoupling the FS and the DB and letting them specialize.

Examples: GFS + Bigtable, Azure extent/partition manager+ Table store, Amazon's various storage elements.

Pushing the DB into the filesystem doesn't really buy you anything - you still have to solve the unstructured page management/allocation problem.

Counter-examples: WinFS, Cairo, Windows Registry (which I'd argue was a large failure).

It's an idea that sounds good on paper, but fails on the theoretical (unstructured vs structured) and practical aspects (distributing structured data is MUCH harder than distributing unstructured data).

<comment><USER11> I would argue that Nepumok, Cairo and WinFS failed because of the project management failed to meet the milestones, not because a filesystem with an index and query interface is a bad idea. Please point me to research documents.

The Cairo project documents never specified the query-language and UI part of Cairo. And this was basically what never got implemented, eveything else made it. WinFS was doomed to fail because it run in user-mode in dotNet (in Longhorn era PCs were slower), instead of adding the query part to the NTFS driver in kernel mode. The Shell integration with only UNC path and dotNet only API was bad. And the object oriented metadata scheme was way to complecated, especially if used on an SQL database

WinFS beta1 worked okay, it was just very slow (dotNet services + SQL server in background, stored in hidden directory on NTFS). WinFS never made it because it was way behind the shedule and too slow.

NTFS and similar modern file systems are modular enough that would make it possible to add the missing feature a query interface directly into the kernel driver. Operating system of course would need to expose the API too so that C functions like fwrite() and WinAPI WriteFile(), etc. could be used to access files using the file directory tree as well as using a query language (e.g. Windows search exposes in Explorer address bar)

<comment><USER12> The problem with Database-as-a-File System is people are really asking for The-One-Unified schema. The problem with The-One-Unified schema is it anticipates all future requirements which is impossible.

At best you can add a few more structured primitives, but that's not much better than SQL-lite or whatever you prefer running on top of a block store, since you don't know or really care about the domain of every application.

<comment><USER11> Microsoft SharePoint does everything of WinFS, it acts as WinFS like file- server for office documents. It comes with default schema (columns) and the administrator can add specific company relevant metadata fields. You can group, filter search, create custom views based on metadata. It all works great, but in the end of the day it's just a website and managing more than one file at a time is cumbersome (it's a website not Explorer/shell) and even if one can open directories in Explorer using inbuilt WebDAV protocol the WebDAV integration is ok but it is as featureless as the zip-file support in Windows shell (no rightclick menu entries, no new file, etc.).

With a native OS integration other applications could take advantage of the new possible features.

</comment></comment></comment></comment></comment><comment><USER13> Something similar is done for Plan 9 development using the Fossil+Venti filesystems.

You need access to the Fossil fileserver console to force a snapshot ``right now'' rather than waiting for the next scheduled time, but since Fossil is a user-space program, you could trivially run your own separate Fossil filesystem against the Venti store without needing any sort of root access.

<comment><USER14> Not only fossil+venti, the old standalone cached-worm file server, and its user-space port cwfs were also built around versioning.

By default, the cached-worm systems are dumped at 5am every day in the morning, meaning you can access your files as they were at 5am every day. You can manually dump them whenever you please, of course. These dumps are cheap, but not as cheap as fossil or ZFS (or git) snapshots. Unlike ZFS (not sure about git), these dumps are immutable, you can't delete them.

With fossil+venti, you still get daily dumps, but you also get finer grained ephemeral snapshots. By default at 15 minute intervals, I used to set them at 5 minutes. You can control how long you want to keep these in fossil, I kept mine for 3 months. The dumps are venti are immutable. These are very very cheap, and these systems also do deduplication, by default.

I don't run fossil anymore, I like the features, but reliability was less than stellar for some people, and the performance is much lower than cwfs, which is what I use now. Cwfs is very fast, rock solid, and very easy to recover in case of a catastrophe. I miss ephemeral snapshots, but cwfs dumps are cheap enough I can run them for what in a normal system you'd do "commits" for.

I miss all these features when I am forced to use Unix. Git does two things, history preservation and patch management. For history preservation, nothing beats the Plan 9 system. What git does better is patch management. I think it's valuable not to conflate these two concepts and create tools that can solve each one well, and work well together.

</comment></comment><comment><USER15> Given the article is from August 2013 does anyone have any updated feedback on the stability of ZEVO's ZFS-for-Mac product? I'm using ZFS quite happily on a HP Microserver (although I have yet to have to recover from any disk failures, and do weekly automated scrubs) and would consider using it on my Mac.

<comment><USER16> ZEVO doesn't currently work in OSX 10.9.

Despite its name, ZEVO Community Edition is a closed source project run by GreenBytes (recently acquired by Oracle).

Back in Nov. 2013, GreenBytes announced that they don't have plans to continue development of ZEVO.[^1]

So unfortunately, ZEVO is dead project.

[^1]: [http://zevo.getgreenbytes.com/forum/viewtopic.php?f=5&t=2244](http://zevo.getgreenbytes.com/forum/viewtopic.php?f=5&t=2244)

<comment><USER17> ZFS on OS X has been picked up by a new project: [https://openzfsonosx.org/](https://openzfsonosx.org/)

</comment></comment></comment><comment><USER18> I was actually interested in running a ZFS set up but after talking to some people they advised me not to run ZFS on a system without ECC memory. Reason being, if corrupt memory would be written into your ZFS set up you won't be able to recover from it.

I'm curious about any further thoughts/experience on this.

<comment><USER19> One of you missed the point. The reason ECC is suggested with ZFS is because all of the other features (RAIDZ and checksumming in particular) don't do any good if your data gets corrupted in memory. This is true for all filesystems, but most of them don't try as hard to protect your data in the first place.

<comment><USER18> I could very well have got it wrong but the way I understand it was that in a file system such as ext4, if a file is somehow corrupted in memory and written to disk you might not be able to recover from this and the file might become useless. However, with ZFS you would lose "all" your files in the file system. Again, I might have misunderstood.

<comment><USER20> Wouldn't surprise me, ZFS is pretty bad at recovering from metadata corruption.

<comment><USER21> Disagree: ZFS is show stopped by unimportable pools, which currently are probably _usually_ recoverable if someone could do the work to fix that use case (still iffy).

I've had a ZFS volume get very thoroughly trashed though by bad writes and still been able to recover data from it (back in the foolish days before ZFS- on-Linux when I had OpenSolaris in a VirtualBox VM with real disks, and _something_ happened that randomly nuked blocks all over one of the filesystems. Interestingly: just the one FS. I had a whole bunch and others were untouched).

</comment></comment></comment></comment></comment><comment><USER22> One thing that Git does not do is to track files, for a good reason. Git was designed primarily to track content which means it can track code movement between files and be smarter about compression. It is not limited by architecture of a file system.

<comment><USER23> ZFS is not limited to your concept of a file system either. Any change is represented by the addition of a series of one or more blocks, which can be seen as direct equivalents to blobs in git. ZFS is copy-on-write, so you can always reference any particular content change regardless of what file it was called when you made it. Compression and deduplication are handled almost the exact same way as you'd expect.

</comment></comment><comment><USER24> git is not reliable in the face of power failures. I believe this is due to insufficient care taken in writing to reflogs and packs when receiving. (Reflogs are appended to, for example, while objects are first written to, fsync'ed, then renamed into place, so object writing is incrementally atomic, while everything else... not so much.)

Fossil uses SQLite3, but it doesn't do what I want -- only git gives me the power of the index, rebase, and light-weight branches. (OK, Mercurial has those too, but it's too late and it sucks. Sorry.)

Fossil does get several important things from using SQLite3: SQL for history (do NOT underestimate this), extensibility (one file format, trivially extensible schema), well-tested ACID semantics support. Oh, one more thing: using SQLite3 minimizes fsyncs per-transaction. There's probably more benefits, actually.

And ZFS? Well, ZFS snapshots give you ACID. If you have a persistent ZIL then fsync() gives you barriers (nice!). But a) snapshots are slow by comparison to SQLite3 COMMITs, and b) you don't get the benefit of SQL.

Oh: and not everyone can haz ZFS, but everyone can haz git.

Everyone also can has SQLite3.

My proposal: backend git's I/O abstraction layer (which is pretty nice) with SQLite3. And if you have ZFS, then always take a snapshot in a post-receive hook; destroy older snapshots later in a cronjob.

(As for zfs destroy, you really want the async zfs destroy feature, which IIRC not every implementation has!)

<comment><USER24> I'd really like reflogs and branches to themselves be objects.

Only packs (maybe) and tags (also maybe) should not be objects.

If reflogs were objects then... they could be pushed and pulled, which would be really nice indeed.

If branches were objects then they could record rebase history. I would really like to be able to capture rebase history: what a branch's HEAD was before and after a rebase, as well as the picks/squashes/edits/rewords/drops done in an interactive rebase, and even the merge pre-/post-base (--onto).

</comment></comment><comment><USER25> We need some way for these snapshotting/logging file systems to integrate with application-level versioning to reduce duplication.

I had this problem with git and nilfs2.

<comment><USER26> As far as I know, ZFS does "automatic" deduplication, meaning that your application doesn't have to care about specifying it to the filesystem; ZFS will automatically detect duplicate regions and store them only once.

<comment><USER27> ZFS can do dedup if you enable it, but IIRC the recommended amount of memory to safely use it is ~5GB per terabyte of storage.

</comment></comment></comment><comment><USER28> As the article seems to be down, here's the text-only (google) cached version:

[http://webcache.googleusercontent.com/search?q=cache:CTMc7ZQ...](http://webcache.googleusercontent.com/search?q=cache:CTMc7ZQuOB4J:zef.me/6023/who- needs-git-when-you-got-zfs&strip=1)

</comment><comment><USER29> Where is github for zfs?

</comment><comment><USER30> > "Using ZFS as a replacement of Git for is probably not a good idea."

Uhm.

> "I'm not sure of the stability on Mac at this time. Using ZFS as a root file > system on Linux is still slightly problematic at this moment."

And Windows? Never mind.

Ok, so the author wrote an article called "Who Needs Git When you Got ZFS", and then in the body of the article the conclusion is more like "Who needs ZFS When You Got Git".

ZFS does a bunch of cool stuff in a generic way as a file system, sure. But we already have apps doing it better in a way specific to real-world needs (i.e. Git), on more platforms, and I don't have to fear if I'll corrupt my boot volume if Git is buggy.

<comment><USER2> In reply to your (edited out) comment that "ZFS saw poor adoption":

You might not know it, but out of all the new filesystems designed after 2005 (a few dozens?), ZFS appears to be the one that has seen the fastest adoption/growth [1].

Source: my anecdotal experience in the industry, the experience of many of my colleagues, random consultants reporting "I've seen 1000's of large ZFS deployments" [2], etc.

[1] Outside of ext4 which was introduced in 2006 and was a simple refresh of ext3, not really a "new" filesystem.

[2] [http://nex7.blogspot.com/2013/03/readme1st.html](http://nex7.blogspot.com/2013/03/readme1st.html)

<comment><USER30> There was a joke when Microsoft was pushing Zune that it has the fastest sales growth "in the brown MP3 players market".

The category you define may be seen as arbitrary, first because existing filesystems have not stopped evolving. HFS, NTFS and so on have been significantly improved over time, including after 2005.

ZFS is a categorically different concept than said examples, in that it's distributed.

But the file system has not been shown to be the best (or let alone only) way to have distributed data, you can easily put that at a higher level, and retain the flexibility of defining your own protocol with the consistency, consensus algorithm and other properties you precisely need.

Why solve this at the file system and lock yourself to a single system-wide way of doing it, versus have the best solution for each part of the system? I feel like it causes more troubles than it solves.

<comment><USER31> > ZFS is a categorically different concept than said examples, in that it's > distributed.

What? No, ZFS is _not_ a distributed filesystem. It never has been, it almost certainly never will be, and it has little in common with distributed filesystems.

What makes ZFS different is that it is a production-grade copy-on-write self- validating merkle tree. Most of its properties fall out from that. There's nothing distributed there.

I'm saying this in the kindest way possible: please don't write about things that you have zero idea about. You cannot possibly be more fundamentally wrong about ZFS, and nothing you wrote makes any sense. :(

</comment></comment></comment></comment><comment><USER32> Let me know when I can host my project on zfshub.com.

<comment><USER33> "Using ZFS as a replacement of Git for is probably not a good idea"

That's from the article... You know... that thing you didn't read?

I don't know what the correct term is for the kind of title here but it's not supposed to be literal.

EDIT: title is tongue in cheek.. maybe even linkbait but in a clever way rather than a negative way.

<comment><USER24> Yeah, but the title is still interesting on its own.</comment></comment></comment>


Apple blocks screenshots, axes sexual content from App Store - <AUTHOR> http://arstechnica.com/apple/news/2010/02/apple-blocks-screenshots-axes-sexual-content-from-app-store.ars <comment><USER2> _According to iPhone developer ChiliFresh_

Not a phrase you're likely to see in many other situations.

Crap: I didn't read far enough. Here is the actual money quotation:

 _We have decided to remove any overtly sexual content from the App Store, which includes your application. Thank you for your understanding in this matter. If you believe you can make the necessary changes so that Wobble iBoobs (Premium Uncensored) complies with our recent changes, we encourage you to do so and resubmit for review._

I know it's a form letter, but wow.

On a more serious note, I _hate_ when people use the word 'censorship' for situations like this. It's not censorship when someone refuses to sell your soft porn.</comment>


GOES-East CONUS View – GeoColor 2 hour loop - <AUTHOR> https://www.star.nesdis.noaa.gov/GOES/GOES16_CONUS_Band.php?band=GEOCOLOR&length=24 <comment><AUTHOR> This is just beautiful.

Makes me want to get a monitor set up to run it all day long.</comment>


Show HN: Web Scraping in Google Sheets - <AUTHOR> https://link.fish/google-sheet-add-on/ <comment><USER2> Love seeing Google Spreadsheets used like this. Many MVP 'products' would do well to be a 'simple' spreadsheet first.

sheetsee.js is great for visualizing data in these spreadsheets too (can make a graph on a website from data in a google spreadsheet in a few lines) [https://github.com/jlord/sheetsee.js](https://github.com/jlord/sheetsee.js)

<comment><USER3> And Google Sheets would do well to improve the add-on development experience. It's absolutely awful and the documentation rarely tells you what you actually need to know

<comment><USER4> Totally agree! Did run into a lot of problems developing the Add-On. For some issues, even bug reports exist that are many years old. So for me, it sadly kind of seems like Google totally lost interest.

<comment><USER3> You developed this addon? Lots of respect, my development experiences were really discouraging, and I was very happy when I didn't have to do it anymore. I can't begin to imagine what it must have taken to develop something so complex

<comment><USER4> To be honest, was not that complex. The problem was just that Google Script made stuff that I expected to take 5 minutes to code take days in the end. For example, simply refreshing the value of a cell. I thought I simply gonna call some kind of method and it will take care of it. Sadly was quite the opposite. Took me a week to figure out that to achive that, I have to: 1\. save the formula of the cell 2\. remove the formula from cell 3\. set the focus to another cell 4\. set the formula in the cells back to their former value 5\. activate the cells again And in the end, they then have such additional gimmicks like that they use different value separators in the formulas depending on your country (some use comma others semicolons).

<comment><USER5> 80/20 rules sadly.

</comment></comment></comment></comment></comment></comment><comment><USER6> Cool product, excited to try it out!

Apologies in advance for unsolicited feedback, but I think you could benefit a lot on the revenue side if you played around with pricing. I've done a lot of scraping stuff in the financial services world, and this would definitely be worth more than $199 per month for them if it can help them get an information edge.

Patio11 writes some great stuff about pricing here [https://www.kalzumeus.com/2012/08/13/doubling-saas- revenue/](https://www.kalzumeus.com/2012/08/13/doubling-saas-revenue/)

<comment><USER4> Thanks a lot! Great to hear!

Actually asked bellow specifically for feedback, so exactly what I wanted to hear. Agree, the pricing is probably really something that still has to get improved. This is currently the first iteration in which I did mainly orient on competitors and my costs. Hope once I have some more users and get more feedback I can improve on that. Also thanks for the link! Gonna read that later.

<comment><USER7> Please keep the pricing as is for now, I like it :)

</comment></comment></comment><comment><USER8> Do yourself a big favour, and make your credit numbers locale-aware. Many (most? not sure) people are going to assume (like I did) that $9.99 would get me 10 credits, because "." is a decimal point in my locale.

I almost closed the page at that stage because $1 per page scraped seemed very greedy, and it wasn't until I saw the Expert plan with it's "1 million" that I realised that 10.000 = ten thousand.

Maybe use the SI convention of spaces: 10 000.

<comment><USER4> Thanks a lot for the tip. Will change that immediately.

</comment></comment><comment><USER9> In case you're not aware, MS Excel already does this.

[https://support.office.com/en-us/article/connect-to-a-web- pa...](https://support.office.com/en-us/article/connect-to-a-web-page-power- query-b2725d67-c9e8-43e6-a590-c0a175bd64d8)

<comment><USER4> Thanks, was actually not aware of that. Did honestly not use MS Excel for probably 10 years. Looks very interesting, gonna check out the documentation.

Looks like that now with my Add-On Google Sheets can finally do the same what MS Excel apparently could since 2007.

</comment></comment><comment><USER4> Launched today our Sheets Add-On and would love to get feedback. Also if there are any questions, I am here to answer them.

</comment><comment><USER10> Ever since kimono labs shut down I haven't found a good point and click replacement - this looks like it might fit my needs of scraping <10 pages for something simple like blog titles + URLs.

<comment><USER4> Most pages should work by default because more and more start to use Schema.org to markup their pages. In case a website is not supported or the needed data is missing it is possible to add support. The easiest by simply writing us and we add it ourself. The alternative is to use our point and click data-selector tool which is similar to how kimonolabs worked. It can be accessed by logging into link.fish and then select in the header menu "Plugins >> Data Selector".

</comment></comment><comment><USER11> I think this is an opportunity for people who want to quickly build early versions of a product or website without diving deeply into the code. I've used Google Spreadsheets for some of my Alexa Skills and I think it's a super lightweight CMS. This integration could be helpful for adding dynamic content. Thumbs up

<comment><USER12> for low-volume requests Airtable is also pretty nice to use in an Excel-like fashion with a dedicated API (free for a couple of thousand of entries).

edit: except missing the scraper part haha

<comment><USER4> Actually wrote this morning Airtable to maybe also create a scraping extension for them. Still waiting for an answer.

</comment></comment></comment><comment><USER13> GoogleSheet natively can import webpages using '=ImportXML("website.com")'. But it is not as elegant as this addon

an example: [https://zapier.com/blog/google-sheets-importxml- guide/](https://zapier.com/blog/google-sheets-importxml-guide/)

</comment><comment><USER14> Great job. You might need to work on pricing. (I am sure, you are still experimenting). I used google sheets before to get rest APIs and extract information. (internal project). But google sheets being on cloud, provides many opportunities for integration. Google should be more serious on plugin marketplace.

</comment><comment><USER15> Really interesting tool. Searching for that time ago. Can't wait to try it out.

<comment><USER4> Great to hear! Would love to get some feedback from you once you did. Thanks!

<comment><USER15> Sure! I will do it.

</comment></comment></comment><comment><USER16> Interesting. I'm trying it out but getting "You are not allowed to get a DomainDescriptions you did not create!" after creating a custom Data Selector.

<comment><USER4> Yes saw that in the logs and actually already wrote you an email. At the current point in time, we do not allow to change DomainDescriptions other people created. In this case, we save the one the user wanted to save and log it (that the work is not lost) and then incorporate the changes our self. This will change in the future. Sorry for the inconvenience.

</comment></comment><comment><USER17> FYI, the email signup button on the Home page reads: "Keep me updat"

<comment><USER4> Thanks for the info! However, I just checked and for me, it displays it correctly. Can you please tell me what browser and version you are using that I can debug it. Thanks!</comment></comment>


Where the Bodies Are Buried - <AUTHOR> https://www.texasobserver.org/where-the-bodies-are-buried/ <comment><USER2> People don't want to acknowledge such events because they are not simply artifacts of the past. Racism and racist violence is going on right now. Slavery is happening to millions of people in our prisons right now. People don't want to be reminded of our ugly, despicable history and they especially don't want to be reminded of our ugly, despicable present. That would make it harder to continue doing these ugly, despicable things. The people doing these things and supporting these things do not want to stop. Ever. This is the heritage that the South (and the country in general) wants to preserve when they preserve Confederate monuments, a heritage of hate and violence that continues to this day. More importantly they want to preserve the ability to continue these atrocities in the present and future. Unlike Germany after the nazis, Confederate Americans after the civil war did not see their actions, and later the actions of their ancestors, as the despicable, horrific events they were. They were just sad they lost the war. That's still the case with enough of the South now that we have these monuments. If they could bring back slavery, (outside of prisons where it has been preserved) now, I have no doubt that would. By vote or by force.

<comment><USER3> You're right but it's also much more nuanced than you're making it out to be. Let me start by saying I don't like confederate statues or flags, because, well, they were objectively fighting to preserve slavery -- that's what the whole war was about -- and celebrating that isn't something I think we should do. The problem is it's personal for so many people who had family on the wrong side of history. Nobody wants to feel ashamed of their ancestors and this creates a difficult animosity and almost serves to re-create the hatreds that started the war in the first place. The pain of removing statues is that the people on the wrong side of the war would have to admit their ancestors were bad people, and ask themselves the difficult questions of what that means about them. There's a reason Truth and Reconciliation Commissions are used after atrocities: you can either have blame, or have truth, but not both. Truth is more important if you want something not to happen again. That's hard, of course. [0]

Regarding slavery in the US, yeah, prison farms are slavery. The constitution permits slavery explicitly as a punishment for crimes. That's not something I agree with either but that's just straight-up facts. When you use prison labor for private company benefit that's beyond the pail and the US gets criticism for this behavior regularly from the UN ILO. There's no better way to undercut the wages of hard-working Americans than forcing people to work for free. [1]

Where you run off the rails the the idea that people want slavery back. Nobody wants that. The establishment has much more nuanced and effective ways of keeping themselves well-off. IMO they've probably always been after the ends, not the means.

[0] [https://en.wikipedia.org/wiki/Truth_and_Reconciliation_Commi...](https://en.wikipedia.org/wiki/Truth_and_Reconciliation_Commission_\(South_Africa\))

[1] [https://www.ilo.org/global/standards/subjects-covered-by- int...](https://www.ilo.org/global/standards/subjects-covered-by- international-labour-standards/forced-labour/lang--en/index.htm)

<comment><USER4> I'm also from the south and my family probably owned slaves. It is something we should talk about and acknowledge. I am sure I knew people when I lived there who would be angry at "making trouble by talking about that time". But we need to do that, own up that our ancestors did that.

Even if one's ancestors believed in it, it does not mean that you can't have different views and see the wrongness of historical actions. And of course there is plenty of racism around today.

</comment></comment></comment><comment><USER5> Thank you for posting this. I grew up in the area and I'd never heard about this.

</comment><comment><USER6> Thank you so much for posting this.

</comment><comment><USER7> This is an interesting, if hard to read, article.</comment>


What's a good way to find talented people to hire? - <AUTHOR>

I work for a large video game company and need JavaScript developers, but I'm having difficulty getting high-calibre applicants. Agencies are infuriating and useless, but it's hard to know where to spend money to reach the right people... Linkedin? Stack Exchange? Any recommendations would be appreciated! <comment><USER2> Most companies seriously underestimate the level of exposure they have. We usually recommend applying inbound marketing techniques to your recruiting process to improve your exposure. A few tips:

1) Open source one or more useful projects. Smart people will use them, fork them, etc. 2) Have a referral program, and make sure it's easy to use. A lot of companies have a program that gives employees $1,000 or more if they refer a candidate, but not a lot of companies make the referral process an easy one. Build a landing page for each position. Include a little information about the company and the job. That way, employees have something to share on their social networks and via email. 3\. If you're looking for awesome and nothing else will do, consider allowing remote work. 4\. Set up a company page at Work for Pie (shameless plug) or Coderwall or similar. It'll help developers get to know your team and culture much better than a simple job description.

Good luck!

</comment><comment><USER3> Right heree onH of course. There is a monthly Who's Hiring post. Try posting there next month.

<comment><AUTHOR> Excellent, thanks. I'm new to HN, a friend recommended I ask on here, but didn't want to wade in with a job posting without understanding how things work! I'll keep an eye out for Who's Hiring.

<comment><USER4> You will be waiting a couple of weeks then! It's beginning of the month kind of stuff.

HN doesn't tend to take too kindly to none-ycombinator job postings, it goes against the spirit of the site, but as someone else mentioned, puzzles and challenges tend to bring the eyeballs to your site.

</comment></comment></comment><comment><USER5> Find people and train them to your requirements. Low level positions let you assess who has the raw talent and cultural fit for your business. Invest in developing people. Hiring a hotshot developer instead of training one is getting a solution from your vendor vs. building it yourself.

Go to local colleges, 4 or even 2 year schools, there are probably several near you with a CS programme. Meet teachers, and have them recommend students. Hire the good programmers, the talented ones who lack experience, as interns or entry level developers, and teach them javascript if you have to. Weed out the ones who don't have the raw ability or personality you want. The ones who do, keep training.

They don't have to replace the high calibre developer search, but they can supplement that process and some of them will eventually be high calibre.

But if someone doesn't trains good developers in work environments or something similar, there won't ever be enough.

</comment><comment><USER6> Maybe stating the obvious, but did you try attending related meetups? node.js, angular, backbone, etc...You can at least get to know people who work with those. You might convince them to join, or they might know someone looking for a job.

<comment><USER7> I don't think people realise how effective meetups are for hiring. If you sponsor/speak at the right event, it's near impossible not to meet some decent candidates.

</comment></comment><comment><USER8> If your company is large I assume you have some budget. You could consider creating a fun and challenging recruitment campaign which will go viral. Something like WibiData did [http://www.kotaku.com.au/2013/01/this-startups- new-hire-appl...](http://www.kotaku.com.au/2013/01/this-startups-new-hire- application-is-a-custom-portal-level/) Ideally it should contain puzzles which will accurately and reliably help to assess the required competences but that's quite hard to do and seems to be unnecessary if your main problem is sourcing.

</comment><comment><USER9> Also, this may be a good time to evaluate your standards and expectations to make sure that they are realistic.

Are you listing for a Jr. position, but expecting Sr. level talent? Is your compensation package in line with the caliber of candidates you are seeking? Are you rejecting applicants because they don't match your skill requirements exactly? Smart people can learn new things pretty quickly.

If you have a budget, then the answer to your question is to advertise everywhere!

</comment><comment><USER10> I recently landed a position, and I'd suggest that you look on Glassdoor.com to see what impressions candidates are getting about your company from browsing there. Are the salaries competitive? Do the employee reviews make it sound like a nightmare to work at? Do the interview reviews make it sound like an unreasonable process?

Also, consider hosting a javascript hacking class or meetup and choose talent based on the performance you see there.

</comment><comment><USER11> Don't forget to offer a decent salary package. It's not uncommon to see people wondering where all the talent are, only to find that they're offering something like $30,000 salaries.

</comment><comment><USER12> If you have a local university try advertising there, be honest and clear about what are you doing to do, etc

good luck!

</comment><comment><USER13> Why not give someone an opportunity? It looks like you are getting people, but you don't think they are any good.</comment>