skysight-inc/HackerNews huggingface dataset:
I can tell you what worked for a friends daughter: Music. They steered her (somewhere around her sophmore year) into playing piano and eventually she found the guitar.

As she described it "I needed to rewire my brain and music was the way to do that". From her perspective learning to play music helped her begin to understand how things "fit" together in her head. Her ability to memorize things was incredibly helpful (so she was initially a step-up in confidence), but as she played more she began to see how chords build on each other to form songs. She went from rote memorization to actually building a mental model of music.

In the end she became not only a fantastic musician but a MUCH better student.
Depends. When I'm looking up lyrics, I'm looking them up to try to figure out what they mean. Before RapGenius, the only decent crowd-sourced lyric meanings site was SongMeanings. RapGenius, on the other hand, has a much better interface for allowing the community to pick apart songs, without any of the shady stuff (on the site itself, at least).
How we learned Power and Fault Analysis to break embedded crypto.
Teaching Mathematics – Graph Theory
Mom creates birthday Facebook page after son says he has no friends
Empty and unjustified statements about moral obligations.
But truncation is very often needed when you have more text than space. What's the alternative?
For really big programs you can't use valgrind; valgrind causes significant performance hit and the system often starts to choke under the the memory load. Also GDB really alters the timing of things, so it is bad at timing/multithreading bugs.

Mostly what helps is working through the logs & traces / following through the code along as you pass through the traces; Use a needle and a steady hand ;-)

i guess that's what they should practice in school as part of learning the trade. On the other hand its a trade off - school needs to teach the general principles of programming, with regards to debugging it is hard to distill universally applicable principles; it all depends on what you are doing.

Here is my take:

- unit testing is cool, it allows to catch problems in isolation; so it would be useful to teach this as a discipline

- for most GUI programs and application logic the debugger is really helpful

- traces and log analysis as mentioned earlier as the last resort

Also they should teach how to formulate the problem, analyse problem source and ways of fixing a defect; here you have to understand the trade offs: when to choose a local fix, when is a local fix no longer appropriate; how to quickly test a fix - so that it does not break the system in any way.

If i remember correctly then some of that they do teach in software engineering courses.
It might also be useful to add to the disclaimers that many of these things that aren't explicitly documented can be in flux. Parameter passing is currently for example being discussed and may change (experimentally and in a backwards compatible fashion) between the upcoming 5.20 and next year's 5.22 release. It also may not, but I know it's been actively discussed this month.
A 3rd thing, which I've done, is for a private site to collaborate with a small group of people I know in real life. You give them a hardcopy of your CA cert and then they can verify the details when adding it to their browsers.
You think there's a lot of people who wouldn't want a cross-dresser in their church, but would allow their sons to wear dresses?
I read it more like "Look at what's happening with 'proper' guns with licensed manufacturers and such. Tremendous evil is being done, not by citizens, but by politicians. So explain how giving private citizens the option to print guns is so horrible."
How to teach the knack:

Write lots of code that uses the most sketchy language features available. The chance is high that soon you'll get code that doesn't work. Now go through each line (source code or assembly) using a debugger of your choice and get it to work again.

Do this until there is nothing that will scare you anymore.
Or they're simply under investor pressure to put on those big boy pants over achieving feature parity.
Actually (and sadly) for some jobs with Perl that involve codebases older than 2007. That material would be useful. Because, like the languages you mention, deriving object systems from Perl5's rough axioms, was at one point something of a hobby for people.
See Lockhart's Lament for an in-depth view of the same argument: http://www.maa.org/sites/default/files/pdf/devlin/LockhartsL...
I think that you're getting at a great point, but another contributing factor may be that high school has a different scheduling structure.

High School:
Classes/Week = 5
Time/Class = 45 min
HW Frequency = Every Day or Every few Days
Exam Frequency = Every Week or Every Couple Weeks

University:
Classes/Week = 2 or 3 + Discussion
Time/Class = 90 or 120 min
HW Frequency = Every Week or Every Couple Weeks
Exam Frequency = Every Month or 3 per Semester

All I am trying to say is that difficulty of material is not always the problem. Sometimes the system can be the problem. It's clear that university expects you to spend more time doing independent study given there is more time between sessions, yet many new students aren't accustomed to spending their free time this way.
I remember reading a fun fact in an MIT faculty newsletter a few years ago: the amount of money that American students spend failing calculus — paying for the course and tutoring, then redoing it — is greater than the budget of Avatar (over $300 million).

Every year, our students spend the budget of a James Cameron film on failing to understand calculus...
Senator Rand Paul is suing the National Security Agency
If you think Google, or any other consumer Internet service, has already secured those things, evidently not. What I have in mind is end-to-end encryption with no provisions for surveillance of cleartext, with or without a warrant. As I wrote earlier in this thread, even if you think our law enforcement can be trusted, there are plenty of jurisdictions where that is not the case at all.
We will be millionaires before long
Yeah, that. Mea culpa, but the idea remains the same.
You would get the same reaction if you wore a fireman's coat or trousers made of aluminum foil.
Well don't forget, there's a standard client that works fine. These exchanges were writing their own custom clients, but that's probably not something a one man shop would have to do. And if you have to modify the client, you should definitely be reading the wiki. And test it extensively when you're running million dollar exchanges.
Just backed this, hoping to see more startups in Orlando!
I remember my dad giving me the following problem on a long distance car ride:

An A4 sheet of paper, when folded in half, becomes an A3 sheet of paper with the exact same ratio of long side to short side. Given this information, can you figure out the what the ratio is?

I must of spent 3 hours of that car ride doodling on a piece of paper trying to nut out that problem with no additional information or tools, ultimately unsuccessfully.

To this day, I think that was when the light switch went off for me about math as a creative problem solving endeavor and not just a rote series of calculations.
A user is someone that you send data to (probably one of your customers or employees).
Go tell this kid happy birthday.

Adolescence is already hard enough. Going through it with Aspergers and feeling like you have zero friends has got to be a lot worse.

I think that this is something that folks in on this message board can relate to. Imagine being able to help him out, even just a little bit.
Ask HN: Best websites for quality news on cyber crime?
If it's storage space, you truncate by bytes, rounding down to the nearest complete grapheme- no need to count graphemes.
If it's display space, truncate by pixels, in which case you need "size in device units of the output text from a rendering engine". Again, no need to count graphemes.
Go doesn't have exceptions. Can you please stop saying it does? There's a reason we didn't give "panic" the name "throw". Because they work differently and are used for different things.

There's also no such thing as a "recover block" (you're thinking of a "finally block" or "catch block", neither of which exist in Go).

If we thought you should use recover any time there might be an array out of bounds panic, we'd have designed the whole language differently. Panics should happen when things go badly wrong, and most of the time that means your program should crash.

You should use recover only in two rare cases: 1. where you're specifically using panic/recover as a kind of setjmp/longjmp (as it is used within encoding/json, for example), and 2. where you don't want a programming error to bring down your entire program, such as in the base net/http handler (although I think it's debatable whether we should have done it there; but it's done now and we can't change it).

It amazes me that there has been so much discussion over this incredibly minor and seldom-used feature. Just return and check errors (and just panic when things go really wrong) and get on with your life.
"The problem with Wilson's argument is that's it's an argument, one that you might formulate in the sixth-form debating society. And on the other side, there would be a dead person."

If all you have to do the limit a right is show someone was hurt because of it, no right is safe.

Does the author think free speech hasn't gotten people killed? Ask the thousands who die after protests and rhetoric becomes revolution.

Extending this thinking means any form of government surveillance that saves a life is justified.
Are you saying that the only feminists who count are the ones who cause scandals? I don't follow.

Is this the same viewpoint that says that all Muslims are terrorists because those are the ones that make the news? (Because "Local Mosque-Goers Are Pleasant Neighbors" doesn't sell newspapers.)
> You can do that by creating another function.

You can't emulate the behavior of continuing the current block after an exception is caught. You have to recover() and copy/extract into a function any code that you'd want to run in the recover.

For example:

try {
... code that throws
} catch {
}
... other code

In Go, to run "other code", you'd have to duplicate all of that logic in the recover():

defer func() {
if err := recover(); err != nil {
... other code (duplicated from below)
}
}()
... code that panics
... other code

This isn't really the same thing, but I suppose you could technically get the same effect if you move all of "other code" into a function and called that in both places, but you're still duplicating code.

Panics and exceptions are two very different things, which is why there are different idioms in place to make working with them safe.
That only requires being able to identify the boundaries of the last grapheme. It does not require counting them all.
Any good books, or online resources, people can recommend on actually doing maths for people from a non-maths background?

I mean this is an old refrain, and not one I disagree with, but it's missing the positive side of the argument.
You may not realized that's what you saw, but for example all of the Moose documentation uses effectively a nested param:

has foo => ( is => 'ro' );

is equivalent to:

has('foo', ('is', 'ro'));

because Moose's `has` sugar is written as a exported function.
Of course not. The solution is for the user to create new packages from arbitrary tarballs instead of relying on "make install" and "make uninstall". But that's not a regular user anymore, is it?
> Bottom line is, let's stop treating feminism like some omnibenevolent movement for equal rights, and as if radicals are just "fringes who don't make a difference". This is not true anymore. Feminism got derailed decades ago. Go read any large feminist publication like Feministing or Jezebel, and it embraces the toxicity of postmodern feminism.

This ignores the fact that "feminism" is not a coherent movement.
I would encourage you to read criticism of this and Cordelia Fine's books, such as

http://www.biomedcentral.com/content/pdf/2042-6410-2-4.pdf

It has been argued that these authors have picked evidence they find disagreeable but fail to mention more solid studies.
Hey, Parse employee here, I work in the support team. Shoot me an email, hector@parse.com
I think I understand. Any acknowledgement that Google has done more to secure Internet traffic for normal users than any other company would require you to concede something, and thus feel bad.
You'll probably go on the no fly list for that.
Yes I did. Also:

when a freshman college student tells me that he was always good at math, it translates to “I was very good at following obscure steps to manipulate mysterious symbols, without any real understanding of what they mean.”

The most common complaint I hear about undergraduate students is that they aren't able to blindly manipulate symbols, and consequently get hopelessly confused when they have to deal with "unintuitive" concepts.
Guys who do more housework get less sex
My 2 cents: He is correct that YCombinator is running little risk doing what it does at this point. That seems pretty obvious now - though it was not when they started. Accelerators were a novelty back then, and YC could have fallen flat on its face.

YCombinator is a pretty low risk deal for entrepreneurs too, come to think of it. Perhaps the author misses this point. If your startup does fail and/or you get tired of the startup game, there's probably a large number of companies willing to take you on as an employee, given the skillset you likely had to get into YC.
Marxists..."eliminate" this or that from the society.

Ok, you're right. Things just haven't been as good since we Marxists have eliminated the doctrine of coverture and laws forbidding women to wear pants. (Fact. Look these up.)

A) I'm not Marxist. B) Society in the recent past was far from perfect. C) For your sake, I hope you're trolling and this isn't your best attempt at a reasoned response.
Granted, but the freedom to ruin one's system is not a freedom I would promote.

Installing software from source is a good thing, you just need to go through the intermediate process of creating a package for your distribution first.
You're looking at it wrong. Stop thinking about Java. Go programmers rarely use recover. There are many that have probably never used it at all. Go does not have exceptions. Panics are only vaguely like exceptions, but you shouldn't even think about them in those terms. It is confusing you badly.

Defer is primarily used to make sure that clean-up happens in functions that have multiple exit points (return statements). It's a convenient side effect that defers are executed while a panic unwinds the stack, but it is rarely the first thing on the mind of the Go programmer when they type "defer".

Embrace error values. Return them! Check them! Panic when shit goes really bad. That's it. If you're writing Go code and you're thinking about "throw" "catch" or "finally", you're doing it wrong. Go's features do not map cleanly to those concepts, because Go doesn't have exceptions.
Question:

Do the kind of people who work at places like stackmob, once their product has been killed, really want to work in other departments at paypal upgrading ancient systems?

(According to the article rradu posted this was why they were aquihired)

It seems like they would run away as soon as possible since they worked at a place like stackmob over paypal in the first place. (I assume there are some sort of retention bonuses etc to try and keep them.)
This just made me remember the whole class struglling with Riemann sums in Calc II, and Russian professor yelling "This is grade school calculus!" at us. Apparently Russians do Calculus in grade school.
It's not about quality of products. See the other reply. Without ads, there will be no Facebook or Twitter. The issue with fraud is a very serious and difficult one that creeps into many industries, and ends up sucking the life out of them (hint: check banking or finance!).
He actually summarizes and links to Lockhart's Lament in the first six paragraphs.

More interesting is his link near the end, about how he teaches graph theory to college students: http://jeremykun.com/2011/06/26/teaching-mathematics-graph-t...
Lots of good explanations in this thread, but I'll add my own:

I'd call it the trap of the gifted, rather than the curse. That trap has three prongs:

1) Gifted people get concepts right away, almost effortlessly.

2) Because it's so easy for them, they never have to work at learning. It just happens for them.

3) Being so good at something earns praise from their teachers, parents, friends, etc. This often becomes central to their self-esteem.

This is fine until the day when their giftedness alone simply doesn't cut it. It could be in high school, or college, or graduate school or maybe even at some point in their professional career. But eventually it stops being easy and this is usually a very traumatic event.

Because of the three prongs of the trap, the gifted person finds themselves in a very hard situation. First, they are not used to frustration because previously they got everything right away. Second, they have no persistence because they've never had to work hard. Third, they become anxious and afraid and possibly even become depressed because they are no longer "smart" (at least by their own definition).

Being gifted isn't a curse or a trap in and of itself, but it can lead to a certain kinds of bad habits. Schools and parents tend not to do a very good job correcting these bad habits, which can lead to big problems.
Sephardic Jews get dual nationality from Spain
I don't like this kind of claim. Even calculation of 1+1 is math. To be constructive, instead of claiming what students learnt is not math (which actually is math), please articulate what you think needs to be added to high school math. However, please be aware that not everyone is expected to learn calculus after high school.
One thing I never understand is why it is so important to count graphemes.

I read dozens (hundreds?) of Unicode-related blogpost for many different languages, with long debates and discussions about the hurdles of counting graphemes, but they always forget to explain why one should need it; it's just assumed that it's important or interesting. This specific post just says: "Let's say you want to count the number of symbols in a given string, for example. How would you go about it?" and then go into a multi-page explanation, which is even incomplete (as you correctly noticed).

I can't remember many cases in which it's been useful to count graphemes, in my programming activity. I usually need to either:

1) count the number of bytes of the Unicode encoding I'm using / going to use, for the purpose of low-level stuff like buffers/sockets/memory/etc.
2) ask a graphic library to tell me how big the string will be on the screen, in pixels (with the given fonts, layout, hints, and whatnot).

Counting graphemes only sounds useful for things like command-line terminal; e.g.: if I were to make a command-line user interface (ala getopt()) which automatically wordwraps text in the usage screen at the 80-th column, I would need to count graphemes, in the unlikely case I had to support Tamil or Korean for such a specialistic case.

tl;dr: counting grapheme is a very complicated problem you probably don't need to ever solve.
Looks like you have extremely high IQ. But IQ is not the only merit leading towards a successful and fulfilling life.

When you think most problems people deal with are simple and similar. Take your example, overweighted. You think the solution is simple: exercise more, eat less. Usually it's from an engineer's brain. But probably, you forgot to take your excuses into consideration, that's why you over simplified it. Then you struggled with it like many other people. If you do take all of the aspects into consideration, it's no longer simple any more.

When you easily felt bored after you have learn something new, I think it's lacking of depth to learn it more or to find more fundamental problems in it before you skip it.

I agree with you in most of the points, but I wish I could see that you can really dive into something and make it a
big different for the world. If you cannot find anything with enough challenge for you, you may want to visit here: http://kck.st/JNqv8z because most people think that they are overwhelmed.
Can a team of 24 people fix PayPal? No.
Disclaimer: I work for Kinvey on their development team.

Kinvey[1] is another BaaS platform with a pricing model based on users instead of API calls. We also have quite a few integrations, including the ability to run code on a pre-save/post-save on a different server if you so desired.

At the end of the day, there are a bunch of decent choices out there, it all depends on what features and pricing fit your needs.

1: http://kinvey.com
Indeed. For me, the worst part about college was how everything was spaced out. Once you got into the zone, you didn't have that much time before you had to go to another class or something.
Or as an old boss of mine used to say: "Never outsource something hard to replace".
I run a web development company in Sydney called Thinkmill (http://www.thinkmill.com.au).

We use Node.js for everything we do, from mobile app backends to websites to web apps. We've been using it for nearly two years, and found it fantastic - compared to technologies we've used previously it's faster to develop in, faster to run, easy to deploy (especially with platforms like Heroku) and the value of npm and the ecosystem of high quality open source packages is hard to overstate.

We have also developed an open source Node.js model-driven CMS / web app framework called KeystoneJS (http://keystonejs.com) which is built on Express and MongoDB and has been getting some great feedback :)

The biggest lesson / gotcha has been getting into the different mindset - especially when we started, there wasn't a lot of 'hand holding' available compared to other languages and frameworks, and there were few established best practices to follow. I think it's easier these days (there's certainly more out there) but I'm very familiar with it now so it's hard to gauge from a beginners point of view.

It's easy to fall into traps with callback patterns and error handling, for example - so you really need to get your head around what's out there (like the async library for example), and how to structure your application and code.
Then don't use them? My point is that there is nothing wrong with email alerts, so the statement about them being a problem sounds like a misconfiguration or a failure to understand how to setup email filters.
For my projects I did a make system that uses gmake meta programming to easily define rules for most cases, here you have to includes a template make file that expands the target definitions into make rules.

http://mosermichael.github.io/cstuff/all/projects/2011/06/17...

The catch is of course most cases ; other stuff is still possible to do , but things become hacky.

Another downside is cross compilation, my system does not do this effectively (though it works for Linux i686, x86_64 and Cygwin - many surprises between these setups !). Most build systems I know don't support cross compilation - except for automake, the terrible.

If you do debian packages then you are strongly encouraged to use automake - because of cross compilation.
Interesting, I'd never thought about this before. In case you (or anyone else) are still wondering...

If an A3 sheet is X units by Y units (with X the long side) and A4 is 2Y units by X units then their ratios are X/Y and 2Y/X, respectively. If these are equal we have

2Y/X = X/Y

cross multiplying gives

2Y^2 = X^2

rearranging and taking a square root (X and Y are positive) gives

X/Y = sqrt(2).
I was a teacher for a few years, so I transitioned that into a tutoring company and I am doing some freelance web design as well.