skysight-inc/HackerNews huggingface dataset:
how tuition increases by however much the government provides in subsidies.

Problem with that theory is that much of the increase on college tuitions and fees has come about as the government has withdrawn subsidies (though it's continued guaranteeing loans, and more recently, making them non-dischargable).

Counterfactual argument is counterfactual.
It's always nice to fix up software, but it adds maintenance costs.

If you get your patch submitted upstream, it can take months or years before it's in official repositories. And it could be declined.

You can wrap all the changes into a patch file, but you still have to apply and build that project every time you clean-upgrade/(re)install your OS. (Maybe it's less common for others, but for me, it's three systems upgraded roughly every 6-12 months.) And you're breaking out of your binary package manager. And if your OS updates, it could overwrite your custom binary. And the second the upstream source changes, your patch breaks.

The more projects you patch, the longer it takes to set up a fresh install. So I try and limit it to only things I really care about. Which for me as a programmer, turns out to include my text editor as well.
Author here, I like Erlang's syntax :)
> JavaScript was, as far as I can tell, arguably the first truly mainstream language to embrace first-class functions and closures.

This is a nitpick, but Perl has had closures since the early 90s -- before Perl5 even.
Additionally, I think it's just a matter of "it's ready".

We just couldn't have practical functional language 20 years ago, in term of both software and hardware. Back then, GC was a rarity, the JVM didn't exist yet. Software has to be ran on the user slow-ass computer, speed was everything and you didn't care much about concurrency/parallel problem. Nowadays, even if the clock speed didn't stagnate and we have just one super core in desktop computer, we would still write a lot more distributed system on the web now than we used to.

Also, we're building more and more complex software over the year. I remember a question for Peter Norvig in "Coders at work", where he was asked about the differences in programming now and back there. In the past, programmers generally had to write (mostly) everything from scratch, and they kept the whole program in their heads. Nowadays, we actually spend most of our time reading other API and trying to plug different components together, referential transparency is simply a godsend.

In a sense, I think the change from imperative programming to functional is similar to the one from GOTO to structure programming. May be we need a "Mutable state considered harmful" to push functional languages mainstream ? :-)
Submarine: http://www.paulgraham.com/submarine.html
IMO, it's something of a backlash against the rise of class-focused, object oriented languages (e.g. Java, C++, Ruby) leading to some complexity in the last decade.

Pendulum now swinging back the other way. Functional, data structure oriented programming has many benefits above old-school procedural programming e.g. C, Fortran. But it also doesn't have the baggage of mainstream OO languages. Thus, this feels like an appealing -- and new -- ecosystems.

This -- along with a rediscovery of some functional concepts that seem have more importance in a distributed setting, like immutable data, purity, higher-order functions -- have led to some renewed interest.
Ask HN: Bank says it fixed openSSL/HB, can those claims be tested?
I can find the exile date, but not the purchase or activation date. I believe they updates SSL as heartbeats are now off, but the SSK cert nobly has 114 days left on it.<p>If they did a re-issue and revoke, that would be minimum a year would it not?<p>I can get the serial number of the cert, but how would I get the old certs serial number to compare it to?<p>I worry a lot pf people patched openSSL and called it a day, but our data was already compromised, so this open SSL patch does no good other than for new users. I can change my password, but if they have all the other data they need, I am still in trouble until that revocation of the old cert happens, correct?<p>Thank you.
Headphone Brands Ranked from Worst to First
But again where is this report? It is a quote and so far as we can tell the only source of this. A hematoma can vary widely and the lack of information doesn't help.

Again, it's not this person's actions but the hysteria of the spectators. There is really no objective coverage and your link is a good example (if someone has the medical report they should publish the relevant bits).
> also, can someone please explain the issues around 'nil' ? i fail to appreciate author's concern about those..

The question can be thought of as two parts:

1) Whether nil should be a base value for objects. If something points to type t, should that be allowed to be nil. It is obvious that it should if coming from C/C++/Python, not so obvious if coming from Haskell for example.

2) Should the lack of objects, or should error conditions be represented by nil. Say lack of a an object in a map is indicated by returning nil. Should it throw an an exception instead? Now, go doesn't have exceptions so it needs something like this perhaps. Or maybe panic should happen.

To expand on 1). If you are coming from Haskell (or any strong typed language) the thinking is, you are already paying the price for static checking, strong types, compilation step etc. It would be nice to have explicit non-nil types. You can say this function accepts a reference to this object and this cannot be nil. During compile time the typechecker/compiler will do a more rigorous analysis based on that, and barf out an error then instead of during production.

Like in Haskell you can explicitly say something may be nil (Nothing):

data Maybe a = Nothing | Just a

I don't personally lean one way or another here. I just don't have a strong opinion either way. I understand the trade-off. But this is how I interpret what the author means by his issue with 'nil'. Hopefully this helps.
Clojure is much more concise than java, but ironically high performance clojure is not more concise, nor as fast, as java.

But that said, high performance java is both slower and less concise than C by the same metrics. So if you think this is just fashion, then nearly every language outside of C is also just fashion.

In my view, languages as a whole have been moving more and more towards the functional space over time. Newer languages, or versions of existing languages, typically have more functional features. Languages are trending towards higher order. As a result of this, the existing higher order languages, the functional languages, are suddenly much closer to mainstream and so have become more popular as the majority become aware of their benefits.
The clip art in this post is distracting and does not add to the overall text.
Out of curiosity, what was your issue?
You want to play a word game? Fine. Substitute whatever words you'd use for "working focused" with every time I used the words "working hard".

The point stands. Maybe I (or someone) just works harder/more focused, for longer, than you (or someone else). Why should that person hold themselves to your standards and not theirs?
I think that when you dispose of code to create a better solution, say to reduce from 1000-100 lines or throw away a prototype to build a real application it's productive.

It's like throwing away the scaffolding that was supporting a building during construction but is now redundant. It's like removing the stone from the sculpture that isn't part of the figure you're trying to create.
Bingo. Hunter gatherer societies are far less forgiving of the weak and sick.
"If I spend 5 hours writing code, and then throw it all away, I'm not productive."

Writing throw-away prototype code can be very productive, since it's a way to learn about your domain and the problem you're trying to solve. It can certainly contribute toward making a better final product. If we're trying to solve hard problems, we can't expect to be able to come up with a perfect solution on the first try with no backtracking.

As Thomas Edison said about his numerous unsuccessful attempts to make a light bulb, "I have not failed. I've just found 10,000 ways that won't work." Each unsuccessful attempt got him a bit closer to being able to make a working light bulb.

"Using your example of refactoring 1000 lines of code, if the 1000 lines ends up doing the same as the 100 lines, how have I added value to the business?"

Speaking from first-hand experience, sometimes the code base you inherit is so bad that you can't add anything to it without breaking it. By refactoring, you've made it possible to add the new functionality to the code which your customers desperately need. You've also probably made the code more reliable, since there's less stuff in there to break in the future.

On the other hand, if you had code that worked perfectly and didn't require any new features, and you refactored it merely because it offended your sense of esthetics, then you were probably not being productive.
[link redacted] - a site I've made with a friend back in 2008. It requires absolutely no maintenance and earns a few hundred bucks a month. Tried selling it, but the best offer we got was somewhere around 10k $, which is way below our expectations. Now actually working on renovating it and probably adding some new content and features.
Do you know what social media sites are driving the most engagement post click?
You're welcome. I am an AngularJS neophyte as well... but the mental picture I have of the framework is definitely clearer than it was two months ago!
This has gone on in academia for awhile, you are now considered mainstream if you embrace FP as the way, and you are considered a rebel if you instead believe that OOP is still the way.

I predict that there will eventually be a FP backlash that reverses the situation again (hey, look how easy objects are to use vs. this crazy FP stuff!?).
I would guess the valuations are based on the expected targeted size of the market and defensible market position. Without a reason why your current growth will accelerate, it's only reasonable why a valuation would be done on a cashflow/profitability basis.

You also have to remember that you got to choose your business strategy to this point, you presumably can't be removed from your own company, and your ownership is worth something. There is always an exit for a well-run business, but it's probably not going to be through a VC funded growth-then-exit unless they can see a way to 10x your existing business at a minimum.
Au contraire, plenty of intelligent people who follow the paleo diet make the flawed argument I just presented. I know a few myself.

In addition, I'd argue that the reasoning I presented falls much more closely in line with what's found on Wikipedia's "Paleo diet" article and top Paleo sites than does yours, which, strangely, seems to focus heavily on avoiding modern medicine. But this is irrelevant, since you yourself claim that "intelligent" followers of paleo likely wouldn't propose your logic, either.

So I must ask you: What reasoning would these people propose? "Using studies" is a supplement to proposing a logical framework that justifies a conclusion, not a replacement. Research isn't cited in a vacuum: it's cited to argue for or against some premise or conclusion. Also, the types of studies you refer to could just as easily be used to supplement the framework I provided as it could yours or any other. Thus, the fact that some paleo advocates would cite these studies isn't an argument for or against the accuracy of my characterization.

It seems a bit disingenuous to label one's reasoning a strawman without providing specific reasons as to why, or even providing the allegedly correct reasoning. If a group refuses/fails to articulate its position clearly and publicly, then who is truly to blame for those views being misappropriated?
> Erlang chose immutability for safety, while Go chose shared mutable state for practical reasons, but as a remedy Go recommends best practices to avoid the drawbacks caused by it.

That's my point. I didn't say it clearly before. I understand why shared state is bad in general. I don't understand if channel takes care of most scenarios why it's still one of biggest problem for Go listed by author.

> Erlang's reduction-based scheduling does not have this problem and can be very fair.

What's the key difference between Erlang's reduction based scheduling and cooperative scheduling?
CodeBabes: The latest thing making women in tech cringe
From the title, I thought the article would be philosophical and would be about life problems, but came to me as a surprise when I clicked and found it is something about sublime text...
Ask HN: use Stripe outside US?
Is there any possible way for a citizen/company of a not supported country to use Stripe? The money can stay in the Stripe account and/or US in the next months, no need to withdrawy it. The main reason is the easiness to implement and better taxes.
Can't fully remember but it was something to do with the Go Sublime plugin (https://github.com/DisposaBoy/GoSublime). I know I should have perservered longer, but gave up in the end.
Convincing TSA that metallic parts in my body aren't dangerous
I just started using this couple of weeks ago and has been really helpful so far. I now have an idea what's the reason behind not getting something done on a particular day.
Exactly. Why guess? Why not know exactly how productive you are?

Last month I was 71% productive as defined by those tasks which are directly leading to output. An average of 5h 36m per working day. My best day was Monday, 14th April. I'm more productive in the afternoon than the morning.

My largest non-productive time block is on this site called news.ycombinator.com.
I just found a tester and it states this:
http://dl.dropbox.com/u/340087/drops/04.27.14/Screen%20Shot%...

'Regenerated 2 years ago', does that mean they in fact did not revoke, regenerate, and re-issue?
How is this different from godep? https://github.com/tools/godep
I am just using this for a couple of weeks, but sometimes looking at the hard numbers makes you realize where exactly you spend your non-productive time and where it can be avoided.
The new XCTest in Objective-C is fairly nice as well.
World's First RAM Chip [video]
English is Just Easier
I am pretty sure Rob Pike does not fall into that category. My impression is that he is not all that familiar with these features from the ML-derived family of languages. Do you have a quote from him to the contrary (where he specifically rejects these features)?
Days Since Last Tech Incident
"Just fix it" is definitely level 0 hacker zen. Level 1 hacker zen is subsequently realizing that you're spending too much time fixing your tools, and searching for different tools. Level 2 hacker zen is realizing that older tools probably already fixed it, if you're willing to learn their complexity.

In any case, I feel like a lot of the latest-and-greatest fetish in tech is driven by people who don't "just fix it", and are therefore constantly on the lookout for the next big thing that will solve all your problems and give you a chocolate-covered puppy. Most of the time that I've decided to use a "simple, new" tool, I've quickly found out that the reason the tool is simple is because I Have To Fix It, and that once I've Fixed It, I have a tool that was as complicated as the "complicated, old" tool, but totally unsupported.
I never found javascript to be expensive. Sorry, but incorrect analogy.
If you stick to primitive operations like loop, if, let and data primitives, the bytecode generated by Clojure is the same as the bytecode generated by Java.

Clojure's syntax isn't optimal for low-level in-place mutability, but macros can go some way to resolving that. The few times I've worked on high-performance Clojure code, it hasn't been too difficult to get performance comparable to an equivalent Java library.

Java is somewhat slower than C, but it's generally within an order of magnitude if you stick to primitives.
>Like say build tools static analysis tools to check if go-routines end up accessing shared state

I believe this is what the go race detector does: http://blog.golang.org/race-detector
The awful thing about getting it right the first time
Thanks :-) The implementation is basically the Pike VM as described by Russ Cox. Recursion depth in particular has an upper bound corresponding to the number of instructions in the regex. In practice, this means it's safe to run a regex on untrusted data.

(Creating a regex from untrusted data still needs a bit of work, but is fixable!)
By specifying exactly what the verification issue is they likely break trust with users and potentially expose themselves legally.
Ok, I changed it back. Cheers.
The Scala course for master programmers has begun
Worthwhile long version rant:
http://www.jwz.org/xscreensaver/toolkits.html
People have covered a lot of the rational reasons, so here's an emotional one.

I've been coding a bunch of Rust lately, and I'm happy to discover it has my favourite thing from Haskell: the "if it compiles it's usually correct" feeling is wonderful. My software feels rock solid to me, even while it's being heavily changed.

It almost certainly translates into more reliable software, but even just the feeling is enough to hook me.
One answer is in the question: MEAN. Mongo, Express, Angular, Node.

A subset of A is the implementation of the presentation layer, which means you can do that, too — you can take a design and architect it into MEAN, which is one Tech Stack within the Full Stack range of options.

.NET developers, for instance, are "full-stack" by default if they're also building the UI. Python developers writing non-Web products are probably using GTK, and so are Full Stack by default.

Full Stack's meaning is more about the domain of interest, which is historically the Web. It doesn't really have meaning outside of Web Development. Looking at MEAN, we have a delineation of the Web Application Stack: DB, Server, Front end, Tooling. It just so happens that this is a Full Stack in implementable via JavaScript, most importantly: a Web language, the lingua franca of the Web. "Full Stack" is historically associated with JavaScript's maturity, but we can use this delineation of the Web Application implementation to retroactively make sense of non-JS "already existing" stacks that might correspond analogously.
An Interview With The Co-Founder Of The Pirate Bay
If you're able to pull it off, good for you. Rest of us, as this and numerous other discussions here on HN show, find it hard. Its a pretty big deal. You don't really have to complain about it. You're probably the exception, not the rule. :)

In fact, it would be more useful if you can tell us more about how you it.

Is it just an innate ability you've got or something you learnt to do? Do you have any hacks/system like the pomodoro technique?

Do you have off days?

How often do you get 'into the zone' a day? Because, if you can only last a couple of hours in the zone (like me), then to get 8 hours of productive work would take me 12-13 hours to accomodate breaks, food etc. Do you have the luxury of not having to check your mail too often?

If you work with other people, do you notice them working less/more than you?
Thinkpad did something like this a few years back. See: http://www.pcmag.com/article2/0,2817,2337322,00.asp
What if a and b are numbers? What if they're matrices? What if they're quaternions -- or higher? What if they're finite fields? Additive groups? Points on an elliptic curve? Random variables?

Operators (+ - * / ^ & | ¬) come from mathematics. While I'm sure there are plenty of node jockeys who have little use for numbers outside of specifying ports, there are still plenty of us for whom operator overloading is a necessary good.
As stated it's not a problem with the continuum and uncountable vs countable (which did not exist in the historical setting mentioned!), but a problem of measurement.
While this is completely true, it is itself a bug, that we should fix. We shouldn't live in a world where a programmer's normal expectation is her patch sits in limbo for a long time and then is rejected.
If you read the actual title which seems much less misleading than the subtitle it tells a different story.

Foods aren't 'good' for you.

But it seems to fail to mention is the important bit. Some foods aren't bad and some food help stop you eating as much bad foods.
http://www.honeydo.es - A social todo list. I use it everyday personally, but simply don't have the bandwith to get it to the point I believe it needs to be at and work full time / create and maintain my open source projects.
Go does. So does Rust. Both languages have some sort of unit testing facilities packaged with the standard distribution. And both are dead simple to use.
Diets are easy.

Don't eat anything that is advertised on TV. If an actor in a televised 30 second play convinced you to eat it, you probably shouldn't.

Apart from that, invest in good quality scales. When the numbers go up, change your behaviour until the numbers go back down again.

Oh, and quit making endless excuses in your head. They are just lies you tell yourself. If you really want to be healthier, than just go ahead and do it.
In practice, this issue is rarely (like 1-2 times a year) encountered. And then functional tests catch the error. It would not be acceptable if it was a constant thorn.
I think it would be nice if there was one, but I'm not going to write it. I would guess that's the problem.
> his biggest surprise was Go is mostly gaining developers from Python and Ruby, not C++

Why is that a surprise? I think it's logical, and Go can be expected to attract developers who are used to garbage collection (Java, Python, Ruby etc.). Not so much C++ developers who prefer to have control and choice (i.e. pay for what you choose, rather than get it handed down forcefully). Rust is a better candidate for attracting more C++ developers than those from Java, Python and Ruby background.
New Zero-Day Exploit: IE Versions 9 through 11 Identified in Targeted Attacks
I though 'Riot On!' was funny - http://www.imdb.com/title/tt0427783/combined
I very much doubt that since java, c and python are the basis of most CS programs.
One effect of parasites and diseases is to increase diversity. If a species becomes too common, a disease or parasite targeting it can flourish, cutting back its numbers and allowing other species to take its place. Eradicating mosquitoes might have an unexpected effect like making the number of rats or some other vermin to explode.
Usually that's a sign that the person learning doesn't have the right "toolbox" yet.. It requires stepping into their shoes and trying to build up smaller pieces which they can grasp, then allowing them to step through them first semi-guided, and then again on their own. After a while, the student can grasp that this is the way to attack a seemingly "impossible" problem - well, all these pieces I've been learning must fit in here somewhere.. what's the simplest bit I know which puts me at least a step in the right direction?

Learning how to learn is a lifelong thing, and many people simply don't have the chance to be led through in this way to the point where they can do it themselves.

edit: in regards as to what's "the right thing" to say - I'd start with "Well, let's look for something easy first"..
Show HN: CoreMIDI Snake Launchpad S Game [video]
Yeah true, I guess it is more that I have no interest in having a conversation about clothing, whereas talking about a hobby to someone who actually has an interest in it is very different.

I also feel awkward where anyone is coming across as fake in their customer service interactions, I feel much more comfortable if they just don't do any routine. I would note though that there are places where people have a script but still implement it in a way that shows they genuinely care, which is nice.