skysight-inc/HackerNews huggingface dataset:
At the risk of being offensive, I've always felt that this "design patterns" cargo cult is Revenge of the Not-Nerds. The people who couldn't hack the harder CS classes because of all the math are striking back with something designed to be as incomprehensible to us as mathematics was to them.

Take the Visitor pattern. I mean, really? I already know how to work with trees. Lisp is all about trees. Ocaml lets us build tagged-union types and pattern match to our hearts' content. Do we really need to dickshit the program with Visitor? WTF does that even mean? Who is visiting and why? Is this the French meaning, where to "visit" someone is patronize a prostitute? (In French, you "pay a visit to" someone, or rendre visite à quelqu'un. You don't "visit" your sister.)

The design patterns cargo cult is horrible. It has such a "how the other half programs" smell about it that I cannot shake the belief that it was designed to make us Smart People pay for something. Anyway, how can it be "best practices" if I can't REPL the code and make function calls and see how the fucking thing works? If you can't interact with the damn thing, you can't really start to understand it, because it's almost impossible to understand code until you know what you're looking at. IDEs just give people a false sense of security about that.

Personally, I like functional programming because it has two design patterns: Noun and Verb. Nouns are immutable data. Verbs are referentially transparent functions. Want side effects? You can have them. Those are a separate class of Verbs: Scheme denotes them with a bang (e.g. set!) and Haskell has them in the IO monad. Real-world functional programming isn't about intolerantly eschewing mutable state, but about managing it.

Now, I'll admit that mature codebases will often benefit from some solution to the Adjective problem, which is what object-orientation (locally interpreted methods instead of globally-defined functions) tries to solve. OO, at its roots, isn't a bad thing. Nor is it incompatible with FP. The Alan Kay vision was: when complexity is necessary, encapsulate it behind a simpler interface. That's good stuff. He was not saying, "Go out and build gigantic, ill-defined God objects written by 39 commodity programmers, and use OO jargon to convince yourselves that you're not making a hash of the whole thing." No, he was not.
The real Linux aspect is definitely something that many developers find appealing. I still meet a lot of hackers who couldn't think of using anything else than the ageing Nokia N900. Hardware keyboard, Debian packaging, root out of the box, ...

For this group something like Jolla's Sailfish (see http://bergie.iki.fi/blog/jolla-sailfish/) or Ubuntu Mobile will be very appealing options.

Disclaimer: I've worked with some of the people behind both Sailfish and Ubuntu Mobile back in the good old Maemo/MeeGo days.
"Use monkey patching in tests, never in production."

"Never" is a big word.

Years ago, I was tasked to change the text label of a file uploader. The site was built using a home-made framework on top of WebForms. It was even built to allow components to be replaced, but since everything touched everything else -- my simple task proved to be impossible. Even one of the original authors of the framework sat at my computer trying to show me, and after a couple hours even he gave up.

Compare that to a problem I was having with a Ruby on Rails site built on top of Spree from versions ago. I wanted to set up a staging server, and (for a reason that turned out to be my fault) I couldn't get the server to stop switching to SSL -- which the staging server didn't have. After spending a little bit of time to solve it, I just monkey-patched the SSL switch to false. Deployed, it worked, and I moved on.

We're really talking about edge cases here, but it's a symbol of a higher issue. Are we to be martyrs to past issues and bugs in code, devising more abstractions just to try to protect one code from another? Or is getting the problem solved in the most efficient way possible the better solution?

I'd use the phrase "it depends on the context" instead of "never."
I just finished my Final year project, I consider it as a startup,

http://officeworld.my/ - Smartphone attendance system.

Walkthrough is available here,
http://www.behance.net/gallery/Office-World-Smartphone-Atten...
yea, I never said that. I was just describing what the vacations are. If you think that they don't do research you are partially right because of a lot them don't do it after their permanent status.
it's possible to toggle the sound in sidebar (click the button in left top corner)

i actually found the sound effect awkward and unnecessary because the app is called "_Distraction_ Free Writing"
Right, yes: what ships with the language shapes the way the language is used, and has wider impacts beyond what you could theoretically or even practically do with it.

A dumb example would be a Option/Maybe type in Java. You could write a good approximation. But none of the standard libraries would use it, let alone any user supplied libs. Lisps are different in some very important ways, but since this is in part a meatspace phenomenon, it's still a challenge. Somebody went so far as to call it The Lisp Curse[0].

Anyway, syntax is a matter of taste, though I think people focus too much on it one way or the other— people don't like s-expressions b/c parens, people don't like Clojure b/c brackets/braces/whatever.

So while I agree that Clojure syntax isn't a huge game-changer, it can and does improve the quality of life for some people, myself included. Built-in literals are a big deal. And there is a lot to be said for being able to use these as primitives on day 1 of learning Clojure, esp. as your first Lisp.

[0]: http://www.winestockwebdesign.com/Essays/Lisp_Curse.html.
Any idea where ramnodes datacenter is? And perhaps an ip address to try some traceroutes there?
Right. Jeremy Ashkenas also dropped some of the more controversial syntax along the way, like the use of dots to end a block.

http://news.ycombinator.com/item?id=1014080
That's a tautology.

[Edit] Or did you mean to say that most people use node on a PAAS? In that case it's not a tautology, but I don't think that most people do, and I didn't say node was easy to set up.
Yes, it's pretty obvious that the SRS makes a significant difference to the abilities of the users. There seem to be several gains but the biggest are

1. time saved looking things up
2. knowing what is possible and what tools you have at your disposal built right into the language.
I find that there is something satisfying about the sound of a keyboard. I guess I use to think of it at the sound of progress back in college. :)
Am guessing this is something to do with windows store.

"The belief in the development community is that Microsoft will make Windows 8 a closed system, an operating system that seeks to more stringently control, much in the way that Apple does with Mac OS X and the iOS platform. This would allow Microsoft to better monitor the quality of applications running on its platform, but it will also wall off the most widely used operating system in the world from myriad developers. PC game makers use Windows because of the openness of the platform and its ubiquity. If Microsoft takes that openness away, what will developers do?"

Ref http://www.digitaltrends.com/computing/blizzard-agrees-with-...
This is a GREAT post. I can't express how real every sentence of this post.
Android.com only lists 4.1 as available. Either way, by only making source code available on the day of release it is by definition already old. That means development happens in the dark.

android was also deemed the least open of a bunch of high-profile open-source projects: http://www.visionmobile.com/rsc/researchreports/Open%20Gover...
I'm with you on everything you wrote there, except that I think DI has more applications than just unit testing. Inversion of control, whether via DI or otherwise, is potentially useful any time you need more than one variation of a part of your system and the ability to swap them around on the fly.
I'm not sure that the presense of a stack is required for a concatenative language, but your point is well taken. Pesto5 is not enterprise ready.
Just a thought, but you could update the title of the page to be the text in the first line of the document. This would make it easier to identify your work later when switching between windows.
Lover of Perl and JavaScript alike here.

It is a weird comparison. The two languages are used in very different ways; I guess the author is saying JavaScript will be supplanted by something nicer, like Perl has been. But Perl hasn’t been. Python and Ruby are cohabitors, not usurpers. A sizable chunk of the web’s infrastructure is still Perl, and that is unlikely to change.

To give you an idea of the language, Perl is very easy to use, and very hard to grok. The language is large and complex, but most of the size and complexity have to do with being as helpful to the programmer as possible. If you use things in a way that seems plausible, your expectations probably won’t be violated. But if you want to deeply understand how something works, be prepared to discover many details you didn’t expect about how the language is silently helping you out.

It’s a relatively painless experience, even if you don’t know a lot of Perl, to glue a few CPAN modules together and get something working. In that respect it’s similar to writing a Node.js application, though the set of Node libraries is, last I knew, laughably small by comparison.

Having maintained both large-scale JavaScript and Perl codebases, I can tell you that it’s much easier to deal with Perl. Having a proper module system is a huge boon, as well as sane handling of types, and some compile-time checking. Perl is dynamic, yes, but types are explicit by way of sigils—in Perl 5, essentially typed dereferencing operators.

The main difficulty in Perl is the same as in any dynamic language: refactoring. It can be a pain to change things, because many of the resulting errors are not checked till runtime. A comprehensive test suite helps with this; Perl’s testing culture is very good, and comparable to that of Ruby. JavaScript developers tend not, in my experience, to write tests.

So not everybody hates Perl, and not everybody hates JavaScript. People who’ve actually used a language tend not to hate it as much as those who haven’t. This article is, in that regard, just plain silly.
Linux users resent being locked out of Windows 8
This is not really a service suitable for a full retail store.

This is a service ideal for a tiny panel in a wall at some major high-street retailer. Except many people have done that before, the only difference would be this one is Polaroid branded.
Developers are a small percentage of the overall market. Sure, we might think it's cool because it's running Ubuntu. But the vast majority of the population is going to look at it and say "How is this going to make my mobile experience better in a way that I don't already have from IOS or Android?"

I wish Canonical luck, but I just don't see my non-technical friends caring one whit about this phone unless it does something extraordinary that they can't get elsewhere. And I just don't see that happening.
Also Resurva - they're not marketing as a stylist-only product (more as a general booking system), but I know a whole bunch of barbershops that use them.
Michael had been reporting that Steam was soon comming to Linux ever since 2006. Just because Valve with the changes from Microsoft decided that they needed a backup plan six years later doesn't mean that Michael is a good source for news.

He's comparable to a gambler who by the Roulette table repeats the mantra "It will hit 12". Eventually he'll be right, but that doesn't make him a credible source when it comes to predicting what number the ball will hit.
It is not really a problem.

If someone saves out your source code, then they can. You can put a copyright notice on it.

If they use it on their web site without permission, they're violating copyright. However, that isn't why it's not a problem.

All of your:

* Version history (except for public versions)
* Unit tests, test plans, test data, test results
* Bug trackers
* Developers notes; QA engineers notes
* Code maintenance manuals
* Developers brains; QA engineers brains etc.

Are private, and someone leeching your content cannot obtain them.

Not to mention the fact that, if there are any server-side components, they'd need to reimplement them.

The time it would take them to understand your code, reproduce all the missing parts, they could just as well develop it themselves.

In fact, if they hired engineers with the calibre required to do that, the engineers would probably WANT to implement it themselves, not rip yours off.

Do not consider that the .js files are all of your development information. They aren't.

Additionally, the version that they leech is always going to be "behind" the one you're developing, right?

So in the time they take to figure out how your code works and how to integrate it with their own back-end systems, you'll have released a better (At least hopefully better) version. So they're permanently behind you, with an inferior product.
Disruptions: Smart-Gun Technology Could Prevent Massacres Like Newtown
I like Python (and Ruby) a ton, but they may find themselves legacy-stamped if they don't develop a good concurrency story quite soon.

No big deal to be ~50 times slower than native code in a single-thread, single-processor use case, but for a well-parallelizable problem on a multicore machine you end up being several multiples of ~50 times slower.

Google just gave up on trying to optimize Python (see Unladen Swallow project) and told the engineers to move on to something useful. I am not sure if the interanls are just to messed up too make it work or if resistance and denial on the part of "B"DFLs and the community is too strong.

But when javascript - JAVASCRIPT! - has a better server-side concurrecy pitch than your language, it is in big trouble
I'm going to speculate (and nothing more) just based on a few discussions a friend and I have had. It seems as though with Windows 8 and the trend towards unification with the mobile experience, Microsoft is headed in the path of a walled-garden style environment.

It may become more difficult (or just less convenient) for the consumer to select software that falls outside of the "Windows App Store" (whatever it may be termed).

This type of distribution model (Steam being another example) would be counter to Blizzard's apparent philosophy on the matter.

So I don't know that "Windows 8", the operating system, is bad for Blizzard. But maybe "Windows 8", the direction, is.

Again, 100% speculation. No necessary basis in fact, just ideas bounced around.
Nice! it would be great if there would be some inspirational music options just like ommwriter dana II has.
If you consider that a cornerstone of economics that a economic risk is rewarded when it turns out to have been a good idea, the actions of the dealers undermine the principle. The factory pawns the risk off to a franchisee, until it is shown that the risk is lower than they thought. Then they deprive the risk takers of the reward, or even the ability to pay off the financial burden of taking risk. It harms broader society by discouraging entrepreneurial activity - it stagnates the generation of new business because there is no chance of payoff to anyone who isn't an established player.

Essentially without the protections, the factories found a way to get the reward without the risk.
This does not mean they should be, though some of them are hardware companies too.
If you replace “popular” with “visible”, then it makes a kind of sense.
I would love to see mosh-like solution, but client only.

Pretty much a wraper to ssh which will use screen plus some predictions. I guess it could get 80% of mosh benefits without the hassle of deploying new software on servers.
And... what was the Ballmer answer (if you can comment about it)?

I see it different, for many founders, companies are a way for a personal grow. In that case founders grow with the company and change their management styles. Ballmer was a very early Microsoft employee, he was even in the IBM/DOS license negotiation.
Perhaps, but it's nice that there are other options out there. Cocos2D is a juggernaut, for sure, and a very safe choice. But LimeJS+CocoonJS/Ejecta or Impact+CocoonJS/Ejecta, etc can get you mostly the same features as Cocos2D+JSB does. I'm glad there is some diversity out there.
>How is javascript like assembly?

Their point is it is often used as a language to compile down to, not that JS is like ASM.
Ubuntu for phones is not (yet) a choice available to consumers. I assume their marketing is currently targeted at OEMs because that's who they need to convince first.

Hopefully when phones running Ubuntu are available on the market, they'll come up with a more compelling story for consumers.
I think a better indication that the company's equity will never be worth anything is that they hired a consultant in the first place.
it's interesting that if you replace the cars with electrons and change the graph to its electronic analogs, the electrons would do the super-rational thing and go along separate paths.
PHP comes with every hosting provider out there for a few dollars a month. Has been the trend for a few years now :-). PHP is cheap to support for a host.
I agree that it's not necessary. But it's a very strong signal, and thus illustrative.

AFAICT there is not a well-understood definition of first-class outside of "first-class functions." If I had to nail it down, I'd probably include the notion of first-class as applied to functions, plus:

* literal representations (where applicable)
* idiomatic, as demonstrated/enabled by the standard library
* well-integrated/interop with other primitives

This is just off the top of my head. And sometimes this is relative to other constructs in the language, or fuzzier, like Haskell lists vs. maps vs. sets.
Your iPhone Will Soon Detect Bad Breath
Hmm... did not know that you couldn't republish market data, I hadn't yet looked over the developer agreement I was only given access to it this past week...still not sure how I'll use it
Here's part 2:
http://bryanalexander.org/2013/01/06/a-year-without-caffeine...
Tolkien never actually describes them, so we don't know if they're stone-giants because they live among the stones of the mountains, because they throw stones, or because they are made of stone. I actually pictured them as Pdonis describes them, as very large humanoids, although I can't be sure.

But I don't think we can definitively settle the question of the giants' form, as we simply don't have enough data. So I suggest we branch out to another unanswerable question: would Gandalf have used Emacs or Vim? How about Sauron?
See also: http://en.wikipedia.org/wiki/Price_of_anarchy. A way of analyzing the difference between the "optimal" outcome and the "rational" one. Common in the computer science literature, slowly infiltrating the economics literature I think.
Linux and Zed Shaw have the best rants. All the others are disappointing :P
There was much more "magic" in CGI/Perl. The only "magic" in JS in fact is caused by browser vendors and have nothing to do with language itself.
Amusingly, just like whoever wrote the Haskell example linked in the blog, the very first thing I did with free monads was also write a trivial stack-based language. All I supported was pushing numbers to the stack and addition. Not a very complicated language! Programs look something like:

prog = do {1; 2; add; 3; 4; add; add}

The cool thing is that I get "subroutines" (or, as Forth calls them, "words") for free:

incr = do {1; add}
prog = do {1; incr; incr; incr}

The interesting thing is that incr and prog are actually ASTs: I can run them, with a function called runProgram, but I can just as easily pretty print them. This is a wonderful property of free monads that's very useful for real DSLs. And, in fact, I'm using them for a current project--they're great.

With a bit of cleverness, it's probably possible to encode some of the stack semantics into the type system, making running a program with too few or too many elements left on the stack a type error. Also, with GADTs, I can probably add support for something like strings and have a mini string/int type system just for my little language, without much effort.
Dear vendors: Can't announce price with your tablet? You're dead to us
"Many (open source) hackers are proud if they achieve large amounts of code, because they believe the more lines of code they’ve written, the more progress they have made"

Citation needed.
Google's the one I have the most experience with, and there's some excellent work going on there, but there's no longer a company-wide culture of excellence, and the reason is the injection of traditional HR and managerial behaviors: "calibration score" witch hunts, manager-as-SPOF, stack ranking.

If you're a Real Googler, you're above the fray with regard to a lot of that shit, and you can move to projects as you wish. Hell, Steve Yegge quit his project at Oscon and wasn't fired. He moved to a different project. The culture of excellence that exists at Google is for Real Googlers. If you're a Real Googler, it's an awesome place and you can get some really great work done there. If you're not, you're wasting your time and career. I'm sure it's wonderful if you're already great. It's not the best place for people like me who are good and trying to become great.

Valve is now the cultural leader, and it will be able to scale with open allocation. Why? Because open allocation is a natural fit for technology. I don't think you can grow at 300% per year and retain OA, but I see absolutely no upper limit on the number of people who can coexist in such a regime. What makes scaling hard is the deadline factor: having to grow quickly. It's easy if you can control the pace, which Valve (being privately funded, not a get-big-or-die VC gambit) can.

OA seems the anomaly because we're used to these military-inspired corporate megaliths, but the reality is that closed-allocation is the oddity. A caste of people whose only job is to delegate work? Top-down internal headcount limitations set according to political fights, arbitrated by people who barely understand the day-to-day of the company? Does this sound like an intrinsic necessity, or self-serving parasitism centered around control of the division of labor? I know where I'd put my money on that one.
No corpus is immune from comparison, and each will have statistical parameters that reflect it's original selection criteria.
Perhaps Mayzner's corpus, apparently based on a sample from literature, exhibits a bias away from the abbreviated forms widely used in written communication today.

So, if you wanted to tune your text prediction software for your phone...
I've gotten the same thing, usually when sleep deprived.

Often, during the paralysis, I experience weird things that are part of the dream-like state I'm in; The feeling of something like a cat thrashing and hissing on top of me, or a strange spider-like leggy thing being on top of me, or the sensation of being watched, surrounded or having something near me.

This feeling disappears as soon as I can move.
at all costs sure, but why should I waste so much time?
A quantified proof might not be needed, but at least the slightest indication to if he has seen this process work in the real world would have made the post much more useful.
The real use case for the visitor pattern is to simulate multiple dispatch in a language that only has single dispatch. In a language like Java, if you want to traverse a tree where each node can be a different type, you don't really want to use a series of if-statements for every single type, so the visitor pattern is used in this case. The visitor pattern allows you to use method overloading instead for each different type instead.