skysight-inc/HackerNews huggingface dataset:
With all due respect to John Carmack and Michael Abrash, this reminds me of a song by Tom Lehrer:

"Once the rockets are up, who cares where they come down?
That's not my department, says Wernher von Braun."

I'm sure Facebook will give Carmack, and now Abrash, all the tools they need to build their rockets. Where they will aim them is another story, and will be decided by others.
That sounds good in theory - but do you see this actually happening in practice? I've filed dozens of patents, but haven't ever looked into a competitor's software patent to see how they do things. Many companies instruct their engineers not to ever read patents because it can work against you in a lawsuit.
Employder is looking for mentors (paid and volunteer)
Invest 1% of your day in your self
Huge fan of this article. Makes some really great points! Wish I could share and vote it up a thousand times. :)

I have been writing about exactly this topic, of why classes don't make sense (specifically for JS), in my second title of the "You Don't Know JS" book series, "this & Object Prototypes".

In particular, Chapter 6 makes the case for an alternate pattern to class-orientation design, which I call OLOO (objects-linked-to-other-objects) style code. OLOO implements the "behavior delegation" design pattern, and embraces simply peer objects linked together, instead of the awkwardness of parent-child abstract class semantics.

https://github.com/getify/You-Dont-Know-JS/blob/master/this%...
Regardless of the legal situation, the wording in the disclaimer is painfully confused.

"[..]trademarks named in this campaign are copyrighted[..]"

Trademarks and copyrights are two very different things, usually with separate laws governing each. Trademarks are usually not copyrighted because they are not eligible for copyright protection due the lack of "creative authorship".
tl;dr: ´types are overrated (in js) and Crockford thinks so too; you have to maintain the types; it's a superset rather than a subset of js.´
An example of something similar that actually happened: tax in the UK was temporarily lowered from 17.5% to 15% or something and it cost more to reprogram cash registers and computers than the 2.5% savings.
This is a bit overly critical. The implicit parentheses are optional, so if it's confusing or ambiguous you should just use parentheses.

func 5, {
event: -> 45,
val: 10}

Is reasonable but

func 5, {
event: (e) ->
if e.something
36
else
45,
val: 10}

Really ought to be split up for readability no matter what programming language you use. And besides, the only issue is the extra comma causes it not to compile.

To be fair, the `->` vs `=>` (which `this` is `this`?) for class members is confusing. I'd almost prefer class members didn't give you the option and defaulted to `=>`.

The "variable capture" section is overblown, though. You're a lot less likely to run into this issue than the classic JavaScript "I forgot `var` and now my variable is global.

My biggest complaint is actually the implicit returns. Sometimes I forget a return statement but it works anyway because of this feature. Then I come back later and modify the function slightly only to spend a bunch of time figuring out why it's returning `undefined`.
Okay, but that kind of polymorphism is actually a replacement for conditional logic, e.g. switch on type antipattern.

People hate conditionals. People hate polymorphism.

Everybody is wrong about everything pretty much all of the time, it appears.
Why abolish software patents but not all patents?
Lots of design sharing in the sedans too. Ford Fusions/Mercury Milans/Lincoln MKZs were all based on the same platform as Mazda 6, and even use their transmissions.
One of the reasons why you think TypeScript isn't the answer is "TypeScript doesn’t fix anything in JavaScript". You seem to fall into the trap of saying "Don't use JavaScript or anything that's like JavaScript" when in real life projects both are popular and effective. It's easy to laugh at the == operator but people don't use it, etc.
If Windows XP, it's usually that the root store is corrupt [1]. Otherwise it's usually a bad system clock. If nothing else, see chrome://net-internals and you can repo the problem and find the SSL socket under "Events" to see the actual chain and error code.

[1] http://www.microsoft.com/en-us/download/details.aspx?id=3594...
Napping can Dramatically Increase Learning, Memory, Awareness, and More
Just because I don't have enough understanding in other fields outside of software. It is possible, for example, that medicine today requires patents to advance faster.
Maybe NAT has been around a long time but there is still a lot of broken NAT, e.g. symmetric NAT on corporate networks (where one user might appear to come from two different IPs from the outside). This is not WebRTC's fault, it makes any peer-to-peer connections over the Internet hard, and given IPv6 adoption stands at around 3% right now insisting on IPv6 support would probably have been sufficient to prevent widespread adoption.
The BMW i3 is available now (at least here in Europe, don't know about the US) and is getting excellent reviews and delivers a lot of technology (most of it is carbon-fiber reinforced plastic) for a fairly low price - starting under £30K here in the UK.
And what language devs choose is nobody's business but theirs.

If I were the CTO of a Node-based startup with 10 or more developers, there's no way I'd allow the developers to choose whether they wanted to write their code in CoffeeScript, TypeScript, Dart, or clean JavaScript. Within a company there has to be at least some consistency.
About $8500 or so (assuming 25 mpg, 12K miles per year, 3.50 per gallon of gas)
It's not sporadic, it's updated every Tuesday. (But yeah, seconded.)
I am bit concerned that the standard committee is going to make the language worse while trying to fix it.

Yes it is inconvenient to do traditional OO programming with JavaScript, but I'm not convinced that is a bad thing. Encouraging subclassing, as pointed out by the author, could actually be detrimental.
Surprised at downvote, just sharing my own experience.
Your view of patents doesn't match reality.

> What they don't always do without patents is to say how those inventions work.

For 90+% of patents, the idea is implicitly disclosed by releasing a product that makes use of the idea. In cases where a trade secrets can be effectively kept, that's what companies do!
The basic sketch is to have a way to feed back information about pricings into the block chain. There are then a few ways to increase/reduce the currency in circulation, some of which involve creating coins and some of which involve shifting incentives for holding coins. Most of what remains, then, is a control theory problem.

My current issue is deciding what should actually be targeted. Targeting a single currency or commodity has most (though not all) of the downsides of just using that currency or commodity more directly. Baskets of goods is one approach. Other statistics are also good candidates, though - stabilizing the mean rate of change across a lot of goods, or the like.
Why Lisp is a Big Hack and Haskell is Doomed to Succeed (2011)
Attention developers: Box wants (needs) you
NAT only exists to workaround IPv4 address exhaustion. I think it's more likely the 5% edge cases have firewalls that block anything that doesn't look like normal HTTP traffic.
Officer Kaur, should you read this: thank you for doing your job, for regularly exposing yourself to great risk in the line of duty, and for carrying on in spite of interactions you must endure with all manner of bozos (including, as we are now aware, over-privileged, self-righteous, know-it-alls).
Nesting is state
Kyle, the figures (fig4.png, fig5.png) are missing from that page. Other pages too. I'm one of your kickstarter contributors, but I was unable to read & review some of the chapters because significant parts of the text refer to missing diagrams.
If you enjoyed reading this article, you might find The Straight Dope (http://www.straightdope.com/) interesting as well.

One of my favorites: http://www.straightdope.com/columns/read/113/the-story-of-sc...
Inheritance is easily overused, but that doesn't mean that we should just avoid it altogether.

The problem IMO is that we are stuck in a view that inheritance is really about ontology, when what we really mean, and want, is code reuse. It's very hard to make a 5 level deep ontology not break down. This is why we have this whole 'prefer composition over inheritance' business.

But while we are stuck with that kind of mindset in Java (at least pre java 8), we miss the capability of using inheritance as a way of adding mixins. There is much power in using mixins as a way to clarify composition, while we still keep the inheritance tree very shallow.

That's one thing we get with judicious use of the Scala cake pattern, which you could easily reproduce in javascript: Composition without really having to write a bunch of useless boilerplate. There's a nice talk out there about it. Cake Pattern: The Bakery from the Black Lagoon.

The trick, as with most other programming techniques, is to use it carefully.
In JavaScript, like other duck typed languages, you have dynamic dispatch without inheritance.

For example:

var objA = {doIt:function(){console.log('hello from a')}};
var objB = {doIt:function(){console.log('hello from b')}};

var doItDynamically = function(doitObj) {
doitObj.doIt();
};

doItDynamically(objA);
doItDynamically(objB);

a and b do not share a common class (since classes do not exist in JavaScript), but they implement the same interface. For this reason, they can be used polymorphically, as if they shared a common base class or interface in Java or C++.
My solution is similar--I have a tiny script of bash and gawk called "greppass" that I use to pull passwords from a colon-delimited text file. I don't encrypt mine (ssh, don't tell anybody) because the whole volume is encrypted, which I consider to be good enough.
The problem I have with clojurescript is i couldnt find any closurescript tutorial that did not involve java.

Let's say i want to start using closurescript,like coffeescript.

i want to do npm install -g closurescript then

closurescript compile myscript or closurescript myscript.

How do I do that?

If closurescript folks want their language to be popular with javascripters i need to be able to do that.

Right now,searching on google,on npm, i did not find any tutorial that did not involve maven or java.You cant expect a nodejs developper to learn maven or install the JVM for the sake of using clojurescript.

coffeescript is popular because it's easy to get started with.You dont even need to install anything,just add the coffeescript compiler to a HTML page.
>Unless it's against some kind of law for someone to observe police, you should know better than that.

What isn't against the law?

This probably doesn't apply exactly, but there are plenty of laws about "disobeying lawful orders of a peace officer".

Here's an example (it may not apply in these case, I dunno, IANAL):

> It is unlawful to willfully fail or refuse to comply with a lawful order, signal, or direction of a peace officer[...] in uniform [...] or to refuse to submit to a lawful inspection pursuant to this code.

CAL. VEH. CODE § 2800

http://codes.lp.findlaw.com/cacode/VEH/1/d2/4/1/s2800
>> to add insult to injury, the alloy they use for MBP and Air machines contains nickel so any unfortunate people with a nickel sensitivity come up in blisters using these machines.

This totally explains my wrist rashes. Thanks.
One Million By One Million is an accelerator that doesn't take equity: http://1m1m.sramanamitra.com/

http://www.quora.com/Sramana-Mitra-1

Disclosure: I have no affiliation with them.
Yes and yes (it's probably arguable though: you need to export symbols to avoid getting them mangled by the google closure compiler)

But since the author dismissed Dart due to not being "true to javascript", I doubt that he'd be satisfied with it
We want to use classes because we want to want to be able to invoke an operation and have the exact behavior determined by the type of the object or objects on which the operation was invoked.

Common Lisp philosophy of classes and OO fits the thicketness of the real world better. Generic functions, multimethods, mixings etc. Just embracing the notion that classes and encapsulation might be orthogonal issue opens up the way to use class system better ways.
> "Isn't it enough that downvoted comments become gray?"

Nope. That doesn't show you the difference between a barely-passable comment and an excellent one.

I learned a lot during my early HN days, when comment scores were visible, simply by looking at what sort of comments tended to score 5 points vs 1 point, or 15 points vs 5 points, or 40 points vs 15 points. Here on HN, "just post short memes" tends to be met with negative signals; thoughtful, helpful, and accurate responses are met with positive signals. I found it helped to be able to see that, and I think many newer HN commenters have the same misconception as you do because they haven't had that same training.
Employers are increasingly unforgiving of people with gaps in their resumés. There are fewer second chances in this world and it's getting harder to recover from early failures.

I can only give this advice because I haven't had to do it (I wouldn't publicly endorse it if I were out doing it) and don't think I ever will: people need to start lying.

As far as I'm concerned, employers who hold gaps or unemployment or "job hopping" or low previous salaries or past political adversity against people-- basically, the dumbfucks who evaluate people based on social-status shit that has nothing to do with getting the job done-- deserve to be lied to. They won't do the right thing unless deceived, so deceive away. I don't lie on my resume (I don't need to, and I'm too much in the public) but I don't think it's unethical to inflate titles, play with dates, misrepresent performance reviews, or otherwise inflate one's status. As long as you're not claiming to be able to do work that you actually can't perform (i.e. actual job fraud as opposed to status inflation) you're OK as far as I'm concerned.

Of course, misrepresenting objective skills and training is different. If you claim to be a doctor and you've never set foot in a medical school, you're putting lives at risk and should be sent to jail. Job fraud is wrong, social status inflation is OK.

Great minds discuss ideas, middling minds discuss events, and small minds discuss people. The problem in business, especially with resume culture, is that everything comes down to discussion of people, because there are so many small-minded people in positions of power. Those who are unemployed for more than 6 months become "dirty" even if they're more than capable. As far as I'm concerned, that's proof of the current system's ethical bankruptcy and a bit of lubrication (harmless deception) to overcome its pernicious inefficiencies is right in order.
Awesome, thanks for that I'll give it another read.
It's difficult to argue with this article. I can count on one hand the number of times non-trivial class hierarchies (that is, more more than 2-3 classes) made my life easer and every time that was the case I writing a compiler or a code generator or something similar.
No, you're right. "Favor composition over inheritance" has been the go-to OOP design advice for years.

The distinguishing feature of OO is modeling concepts by encapsulating state and behavior. For some reason, introductions tend to focus on complex inheritance structures instead. I think that's really unfortunate because it sends entirely the wrong message about OOP.

That said, I do occasionally use inheritance for polymorphism and limited code reuse (such as [1]), but I keep it limited in scope, and I don't think I've ever used a multi-level inheritance hierarchy.

[1] In my Let's Play TDD screencast series, I use inheritance when modeling a "Dollars" value object. There's a Dollars base class and then various specializations: ValidDollars, InvalidDollars, and UserEnteredDollars.

Source code: https://github.com/jamesshore/lets_play_tdd/tree/master/src/...

The screencast: http://www.jamesshore.com/Blog/Lets-Play/
It's important to note: once you add a link it can happen at any time. Removing the link doesn't fix it (i.e. deleting & creating a new folder). The folder path/name is permanently flagged and thus unusable even for personal content.
Yes, physically removed from the immediate situation which is treating an accident victim and the first responders don't want to figure out whether the dumb white kid who keeps sticking around is an off-duty EMT.

He absolutely should have been physically removed from that particular situation since he wasn't leaving on his own.

This doesn't mean he should have had his hands stepped on or been put in solitary to teach him a lesson.
>There's no shame in running `man xargs` to get the syntax just right (we're not dictionaries) but general knowledge of what those tools are and how to use them are _essential_ to being a good developer... this is an essence too often neglected by universities and professionals.

I don't really think so. You can get by fine developing a lot of things without knowing linux tools. They are helpful, though. What if you're working on Windows like a ton of devs do?
Good article, but I think the real message isn't to not use inheritance, but to use with great care.

Inheritance gives you a great characteristic -- isa relationships. And this is something you don't get with composition.

That said, the fragility with poorly constructed base classes is real. But a succinct base class can be very valuable and useful, and not that brittle. Just don't stuff cruft in it that is of questionable value. Ask yourself what's the least you can put in the base class and still provide value.

And this is where interfaces are also useful. You can get the isa relationship w/o much of the brittleness as there is no internal state associated with the interface. But you are still creating a hierarchy (just not of classes, but of interfaces).

It's a useful article, especially for those new to the idea. But the takeaway should be to use care. Not to avoid at all costs.
From the article: "what these two sets of massive reductions show is that companies like Amazon were probably charging far higher for their services than it cost to build and run them"

It absolutely does not show that. What it shows is that these are commodity services with little differentiation, and the only lever is price.
The drive is the differentiating factor here. If you don't need the drive then you can just load an emulator on any computer, either one of the many ARM boards available or just your PC.
This is a cool idea, but I must admit, I find the example video basically unwatchable, with the way it cuts back and forth so much. They might take longer, but I would expect “a moderately skilled person in the use of Final Cut or Adobe Premiere” to create a dramatically better final output.
Any dependency makes your code brittle. On the other hand, you can't reuse without dependencies. Power/safety tradeoff.

Superclasses are just a special case of this.
There will never be a single language to cover all use cases or all preferences, we have 40+ years of computer industry programming to back that up.

Whenever someone says "X isn't useful", you must add "in context Y". Someone for example, who says, they have no need of optional type checking, has never worked on a project like Gmail that has dozens of engineers and a million lines of code. Tools like Closure Compiler weren't made up because the JS programmers on the project love type checking, the introduction of a compiler obviously slows down workflow, they evolved over time as a necessity.

But Closure Compiler is completely unnecessary if you are a single engineer working on a small project that maybe has a thousand lines of progressively enhanced JS.

There is no ideal language for all scenarios.

The article fails to focus on the real issues and pain points of web development which really have nothing to do with the language use, and that is the pitfalls of the layout and rendering engine. Frankly, the language issues are a distraction to the real issues facing Web development today.

And just to comment on the GWT/Dart article, since I actually work on GWT, the idea of a 'major player' in Web development is fraught with bias. Again, context is important. As of last count, we have 130,000 monthly active GWT developers that we can count (there may be uncounted users of the SDK who get the libs through Maven central. I just keynoted the GWT.create conference recently, that was standing room only, major Banks, Financial Institutions, Health insurance companies, Nike, Amazon, even Apple iAds, use GWT internally for Web development.

The intense competition in the Web market means it is deeply fragmented with many solutions, and there will never be a winner-takes-all major player in either frameworks, or languages. Just like it never happened with Web 1.0 frameworks with Java. We had JSP/JSF, Wicket, Tapestry, Play, RIFE, the list of frameworks is just too long to name.

We live in a polyglot world and people should stop obsessing over whether their favorite language or framework "wins". Just get your work done and be happy.
> Why is there a demand for perfection out of the gate?

Because it only takes one flaw for money to be permanently lost.
The Magnitude/Number hierarchy in Smalltalk is amazing.
Working Ridiculously Long Hours is a Sign that Something is Wrong
That just means that this, like every performance dashboard, should be run internally and protected from the outside world.
> It turns out that our knowledge of the behaviour of non-trivial domains (like zoology or banking) does not classify into a nice tree, it forms a directed acyclic graph. Or if we are to stay in the metaphor, it’s a thicket.

That completely chimes with my experience. I wondered if I was doing OOP wrong, as any time the size/complexity of a project (or module) gets above a certain level, a Thicket results in my code.

> Classes are the wrong semantic model, and the wisdom of fifty years of experience with them is that there are better ways to compose programs.

Where's your source/links? What? This needs expanding - if there are better ways, outline your evidence and show us where we're going wrong :)
"The shell can be a disproportionately powerful programming environment."

Then how do you explain why other languages are so much more popular?

Not only that, but how do you explain why the market for software developers compensates those with experience in these other languages more than those few developers who are highly competent in writing portable shell scripts?

Relative to what I have seen written by other developers, I consider myself a competent shell user.

Practice helps. On average I write or revise more than one new script per day.

And I've been doing this for years. The number of shell scripts I have written numbers in the thousands.

Is there a place where shell scripting is valued on par with the trendy languages like Python, Ruby, etc.?
Thanks for your answer :)

I think you've misunderstood a couple of things. Or more spefically: I haven't been clear enough on a couple of things.

I know I can think on a PhD level, because I
- was smarter in some eareas than my teacher in cs (who had a PhD in cs)
- I've worked with people who mastered cs and during that time I felt like I was thinking on the same level as they were.
- I could try to do an IQ test but most (smart)people notice whitin a matter of minutes if the person in front of them is equally smart.

The thing you're missing tho, is the following: I'm Mike Ross before he meets Harvey; I can pass the LSAT of cs but can't be a competitive programmer yet.

If i <em>was</em>, I would apply as an engineer at Google and learn these things in my 20% time.

The Harvey I'm looking for must be able to teach me ao things how to be a good one, and at the same time challange me to bring on new clients etc etc.