skysight-inc/HackerNews huggingface dataset:
To become a better programmer and not a better computer scientist:

Do your own thing. Build something you want to see built and you will learn oh so much. Programming isn't about how you implement something so much as it is for what reason. Think of something you want to see built and figure it out from there.

For example, I learned Python by trying to write an app that would take my Shazam tags and convert them to a Google Music playlist so I could more easily remember songs to listen to later.

Notice that I didn't write anything about SQLite or how slow Python's HTTP was when making the queries, because in learning Python, that wasn't important; those things were just implementation details that I only started thinking about after my application was demonstrably "slow." And more than that, I really didn't consider anything about lambda calculus and I don't know a single thing about NFAs or DFAs. I just wrote an app.

And I learned something, enough to get the job done. If you really want to learn about how to apply functional programming, learn Haskell. If you want to learn about compilers, write a compiler. You'll learn enough, because there's no way you can learn "everything" on a topic in Computer Science.

The field is much too broad, and you'll be way better off lazy-evaluating it than calculating it wholesale.

Tl;dr: If you want to be a better programmer (as opposed to being a better computer scientist) build and the knowledge will follow.
An indian candidate tried a clever hack to win election and almost won
Alternative Interpretations of Common Java Exceptions
It looks like the title question posed by the author is more about "worth" to improving society as a whole, rather than "worth" of improving the business of the company.
Wish I could upvote this more. You nailed three of the examples that I found most questionable in the article.

One thing I would add is that it's not just "self-proclaimed intellectuals" that treat issues that are not settled as dogma. Reputable scientists do it too, and that's a big reason why the average American doesn't trust scientists--not just politicians and the media, but actual scientists--to tell them the truth. I blogged about this some time back:

http://blog.peterdonis.com/opinions/science-heal-thyself.htm...
Interesting. It took me until well into my twenties to realize and then come to terms with the fact that maybe I was having trouble being as social as my peers because I just didn't enjoy it as much.

Once that happened, I solved most my issues with 'socially capability' by seeking out specific kinds of socializing that I did like.

Turns out there are plenty of people just like me, but they either never bothered to enter the 'normal' social circles I desperately tried to enjoy being part of, or they came to know themselves quicker.
Any idea where that advice comes from, I've given similar advice in the realms of learning to throw pots (on the potters wheel); would be nice to ground that advice in a source as ancient wisdom if it is indeed that.
Eden Alexander, Crowd Funding, and Discrimination Against Sex Workers
Yeah, not necessarily a proponent of this power structure (or lack thereof) having not experienced it myself, but I did find the idea fascinating.
These aren't computer science students. Most of them won't find recursion and data abstraction interesting in the slightest. If their primary interests were in computer science I'm sure they would have gone into a comp sci program.

These students are there to learn programming as a tool to help them solve problems. The elegant recursive algorithm isn't really a goal they have. Their goal is to get a reasonable answer to a problem so they can move on with more important things.
Not that I am not agree with the link but Python is not caveats free either.

The fact that they have to "fix" the language in one version making it incompatible with previous versions is smelly enough to me from a design point of view.
You cherry-picked one line that is not representative of Google's response.

Google's final response was: "[we] have filed a bug [and] will [...] take a look", see my coworker (Jeremy)'s reply from May 6 at http://static.shubh.am/2fadisclosure/google.pdf

Clearly there was initially a simple misunderstanding/miscommunication. The reporter, on April 30, gave Google a few Australian telcos presumably vulnerable. But then he clarified on May 3 that it is actually at least "a large majority of telco's in Australia and UK" that are vulnerable. So, based on this new information, Google replied "Thanks for explaining the potential scope of this issue... [we] have filed a bug".

I mean, compare this to the way it was reported to Facebook: the reporter told them right away that 2 of the top 3 telcos in Australia are vulnerable(!) Now if it had been worded like this when first reported to Google, the misunderstanding would probably not have happened.
Cached version: http://webcache.googleusercontent.com/search?q=cache:yZWURXy...
I totally agree. It's true even for us, experienced Web guys (and gals), in this mess ruled by packages and their managers.

For example, I am trying to make my first Rails app outside a tutorial.

Okay, I want to use bootstrap. Should I use gem? Guess that's the ruby way. Okay seems like there a few of them. Tried one, another one. Doesn't work. Don't know why, since I am just copying half-cryptic stuff because I am new to Rails.

A friend suggests to use Bower. It's easier. Right! I had totally forgotten about bower, it rocks! Google: bower rails. Okay, there is that thing sprockets which I apparently need to configure. Googled, a few blog posts opened, they offer a bit different advice each, let's try. Doesn't work. Nope. Not really... Google: bower rails bootstrap sprockets. And yay! Works.

Two hours later, I have included Bootstrap. Properly.
If you need a rule to tell you not to be evil, you're definitely not good people.
Flash. shiver
We do intend to add a few things, such as a "show" link in the top bar for Show HNs, and collapsible subthreads. In general, though, the look and feel of HN is unlikely to change. Infinite scrolling is right out.
It depends on the type of dual SIM exactly; it could mean anything from not more than being able to switch between two SIMs, to being able to use both of them simultaneously.

The Mediatek dual SIM phones do register to both networks at a time, they have two IMEIs as well.

http://www.youtube.com/watch?v=Ro7k4itFT-U
The fact he got so many things wrong trying to make a C++ hello world from memory actually reinforces his point. All these idiosyncrasies are nothing more than friction to a beginner. These only matter if you're trying to teach C++, not programming as a whole.
I agree with this. I started with Python, then later learned C. Taking the top down approach has several benefits when learning. You can make programs that actually do things much more rapidly, incentivising continued learning; this can not be emphasized enough. Less time is wasted wrestling with the many subtleties of something like C. Although important, knowing about pointers and memory allocation is unnecessary when trying to get across very basic fundamentals like control flow. Python also acts as a model for good abstractions. If you start out working with Python's list type, lists are already a familiar concept when it comes time to implement a linked list, because you understand how it should* work. By the time the student is ready to learn something like C, they already have a solid grasp on how things are supposed to work, so understanding how they actually work becomes substantially easier.

*CPython's list type is really a dynamic array, and it works better as a stack. However the interface is similar enough to a typical linked list, that it gets the point across.
Here in Australia, first aid is trained in the acronym "DR ABCD" as an order for dealing with people in distress. It started out as ABC, but they keep on finding things to add. Anyway, the very first letter is 'Danger'. Before going to help, make you're you're not in danger, and consider further dangers to the patient. So even in first aid, it's one of the first things you're trained in; it was a strange line to come across in the article.
I think specifically what they're saying is 'If even Google can get it wrong, then you should seriously reconsider implementing it yourself if you need it. That said, we know a lot more about it than most people and you can trust us more than you can trust something you build yourself.'
Ugh: "...found that 42 per cent of Americans are “not too” or “not at all” confident that all life on Earth is the product of evolution. Similarly, 51 per cent of people expressed skepticism that the universe started with a “big bang” 13.8 billion years ago, and 36 per cent doubted the Earth has been around for 4.5 billion years."

You know, I wouldn't pile those who are "not too" or have "expressed skepticism" with those who are completely opposed to the idea of evolution & the currently accepted age of Earth.

I mean, sure, evolution manifests itself in everything around ourselves, but that aside for a brief moment.

If your measure of "dumbness" is "anyone who doesn't unreservedly believe in evolution and the bing bang" then you're turning science into just another brand of religion.

I'd much prefer to interact with people who aren't too sure about either religion or about the current scientific viewpoint, rather than zealots on either side.

You see, the currently accepted scientific point tends to change over time (one of the benefits of science over religion I suppose). It was not long ago when black holes were described as having infinite density and zero volume. Few discoveries and math formulas later, turns out they far more likely stop collapsing at the size of their Schwarzschild radius.

So who is dumb now. The one who "believed" in zero volume black holes, the one who "believed" in no black holes, or the one who had the courage to doubt and seek answers?

Talking about zealots:

"Has the most powerful nation on Earth lost its mind?"

Emphasis mine. Give me a fucking break. The author may need a bit of smarting up on their own, it seems.
yes, as per Piketty, r > g
GoCircuit: Simple language-agnostic cluster programming
How long until people start using portable RF detectors/sweepers?

How long until people use these devices to manipulate police officers into shooting who they want?
Pretty sweet article. Needs a once over from the author for some edits though. "if you don't have something useful to say, don't say nothing at all" made me giggle.
America is a great country not because Americans know more science, not at all.
Pick a Free Software project that you use regularly (possibly one without a CLA to begin with if you want to avoid paperwork), preferably one written in a language you already know, find the bug tracker, and find a bug (or wishlist item) that sounds interesting but really trivial. (No, really. The first time you do this will probably be a lot harder than you think it ought to be. If it's not, no problem, pick something less trivial second time around.)

Download the code, figure out how to build/install it, and start to find your way around the codebase to try and figure out which bit of code is at fault/needs extending. When you get stuck, ask on the dev mailing list or IRC or whatever comms channels the core dev(s) have.

A lot of programming is not about designing something elegant and new. It's maintenance work, fixing bugs, extending functionality, adding new features. Sometimes adding exciting new features is a chance to design something elegant and new, but other times it's a bunch of repurposing and refactoring some features that are mostly-there under the hood, but need a couple of tweaks, and a small amount of really new stuff (but in the same idiom as the rest of the system) and exposing in a new way.

You'll really find out how to properly spelunk into a codebase (which is a complementary skill to just reading code), how code is used, and how it solves real-world problems.

If another dev solves the bug before you do, that's not a problem. The real purpose of the exercise was for you to learn, and only perhipherally to help the project. As a bonus, you can see how the other dev solved the problem, and how their solution differs from yours. Did they solve the bug at the "same level" as you? Was their fix a bigger or smaller change than yours?

If you get there first, great! Submit a patch to their mailing list, or a pull request to their git page, or whatever they use. Do not take their criticisms of your work as a personal insult. (If they do insult you personally - which almost certainly won't happen, but very occasionally does - that's another matter. Drop it and find another project. Life's too short to waste on asshats.) Rather, listen to exactly what they don't like about the way you solved the problem, use that to fix the problem in a way they will like, and re-submit.

Repeat.
Related material: Cindy Gallop's struggle to get ANYTHING for MakeLoveNotPorn.com - which has a fantastic, social mission. She can't even get a bank. We've been working our banking partners to see if we can find a fit, but no takers.

Here's a really great talk on it if you're interested: http://www.swiss-miss.com/2014/05/cindy-gallop-make-love-not...
Cells: Lightweight Virtual Smartphones
We did not file this as a non-issue. We clearly replied we filed a bug internally and are investigating defense options... Also see https://news.ycombinator.com/item?id=7761372
Off-topic but I tried ceramics and found it to be the hardest thing I ever had to learn. Ceramics seems to be unique in that your creations literally get destroyed right in front of you with no way to go back. (I'm told ceramics people dream of VCS' in their sleep :)
Well, thanks. But s/always/sometimes/. The bottleneck is usually just typing, but occasionally thinking.

Probably we'll come up with ways to record the more formulaic moderator interventions (such as burying an item as a duplicate) that don't involve adding comments to threads.
Is the problem the declaration, or the format "source:foo"? Because people have identified themselves as a 'foo' for years here when making a point on a topic outside HN's usual scope, and in this case it's perfectly relevant. "I am a professional rescuer, and this is how we're trained".
Twice on Sundays.
Li Ka-shing boosts Bitcoin investments amid currency crackdown in China
The essay starts out with a good premise, but in the end, he seems to have conclude that "fair market price" is equivalent to the added value to the society of the job. That seems quite a bit off of a conclusion to me.
Free soda and beer are worth a few dollars a month.

Just compare dollar evaluation; managers, salesman or even HR are more valuable.
This is incidentally also how air crash investigations work, at least in Europe. Placing blame is never the intention. Focus is always on finding ways to improve the process. This seems like a superior approach in most situations.
Or perhaps we ought to drop this junk already. Musl libc implements strlcpy while being a whole lot less bloaty than glibc.
Our response: http://blog.wepay.com/post/86048891401/wepays-terms-of-servi...
I wonder whether this could be a manufactured opinion to an extent?

I mean, we now know that online forums are subverted and socially engineered to keep 'bad opinions' down.

Add to that the still persisting mass media with known effects - and I slowly start to think of the internet as being very much part of the 'mass media', too.

For example, I noticed a lot of articles in newspapers being written by journalists that have agendas that diverge completely from the opinions of the people commenting on an article. The next step, I'd guess, is to 'properly' police these comments....
It isn't so clear to me that Culture is an emergent as much as a sort of foucaultian bidirectional control.

If everyone quits because of culture as a company - I wouldn't say a CEO is in control of said culture.
No worries. The "Source" thing is just a hot button of mine and I could not let my respect for what you do get in the way of speaking up. "Source: XXXX" is the internet equivalent of "because I said so" and only my mom gets away with that one. I think it has a dreadful effect on lively intelligent discourse.

The Pjs are the least risk averse rescue group that I can think of and even they consider the risk of life when planning conducting operations. The PJs' creed is one of my favorites:

It is my duty as a Pararescueman to save lives and to aid the
injured. I will be prepared at all times to perform my assigned duties
quickly and efficiently, placing these duties before personal desires
and comforts. These things I do, that others may live.
This is one of the areas where bitcoin actually has value as a payment system (vs. as an investment asset or other more sophisticated things) -- industries which are suffering from gatekeepers.

If WePay could process bitcoin payments, they wouldn't be beholden to essentially the lowest common denominator of bank policies at the card associations. This would disproportionately help marginalized groups, and would be awesome.

So, rather than hating WePay, I'd rather just ask them to allow bitcoin. It's ironic that WePay started in response to PayPal (who are worse than the banks by some factor), but has now gotten to the point where they banks are preventing them from getting too much better.
I like your example. Especially because milk expires ;).
I agree, they are horrible flaws. Though to be fair, you have to understand why JavaScript has as many flaws as it does. I believe this is largely due to the context in which it was created. First, it was written in the absolute minimal amount time possible. "If it fits, it ships", really applies here. Second, JavaScript was designed to make sub 200 line scripts that add basic interactivity to web pages, not to make the complex layered applications it's often used for today.
No Idling: 30 inspiring stories from those who "Do the Work"
GNU Nano acquired by the VIM project (April 1, 2013)
There is a huge issue in this - it used to be that there were much stronger labor movements to create employee cultures that were somewhat separate from employers/management

There can and should be ways to shift cultural control back to employees - but white collar jobs in general are not so prone to unionization (one of the major ways to do so)
I believe Lisp is a good choice for beginners too, but it's two different approaches. Lisp is interesting for the theory behind it - you can introduce lambda calculus, parsers, AST, stacks while you teach the language, and the student will have a grasp of how the computer understands code. Python is a more hands-on approach - you just teach some syntax that reads like english and the student can put some libraries together and do something meaningful, the barrier is low and you get instant gratification, which is important to keep students motivated.
We'd certainly like to help authors of good material, but the thought of keeping track of all this is overwhelming.
Life360 CEO calls patent troll "Piece of Shit"
I'm just starting out teaching my daughter (10). Any recommendations on how best to get her started with JS?
Would you say that there's no "Silver Bullet"?
If those are in opposition, the author should probably quit his job. There's a good number of companies whose basic purpose lies in improving society.
>In today’s world, web developers have it all: money, perks, freedom, respect. But is there value in what we do?

Sorry, no. The author needs to pull his head out of the bubble. In today's world (the actual world), web developers and programmers are given less credence than assembly line workers, and are considered at best a necessary evil in businesses where the actual product, itself, is something other than code. Money? As little as possible. Perks? Perks go to sales. Respect? It's not even considered real work.

Granted, it's not flipping hamburgers but let's not pretend what the author describes is in any way the norm.
I actually find the term useful, when not applied to the entire field. "Coder" seems like a more polite and less derogatory form of "code monkey", as in someone who "just" writes code and nothing else.
Junior programmer (22): makes $80-100k, 120k in the Bay Area. Easily gets jobs.

Senior programmer (28): 5-10 times as valuable as the junior. Makes $120-140k, possibly 150k. Serious stock options possible with the right company. Three-month job searches.

Expert programmer (37): 3-5 times as valuable as the senior, so 15-50 times as valuable as the junior. Makes $150-200k. Leaves the Bay Area/NYC because he can't afford to raise kids there. Has a defined specialty. Job searches take 6-8 months because he's overqualified for everything but high-level positions, and those in his specialty number in the single-digits nationally.

Master programmer (45): TO;DH.

This industry pays well at the entry-level (if you went to a reputable college, live in the right city, know where to look and how to play the game) but doesn't have a clue when it comes to rewarding excellence. Getting better tends to backfire when this industry (being run by dumbass MBA types) continues to insist on structuring itself like a pyramid.
Data Mining Shows How Down-Voting Leads To Vicious Circle of Negative Feedback
> Nowadays I think Python is the ideal first language followed by C and Haskell. It's starting in the middle, and then moving towards opposite ends of the programming spectrum: systems and functional programming.

I agree. My friend studied CS at UC Berkeley where (at the time?) first semester was Scheme, second semester was assembly language, and then subsequent classwork was usually C++ or Java.
Another great book missing in the article is "Mining Massive Datasets" [1] by Jure Leskovec, Anand Rajaraman and Jeff Ullman.

[1] http://infolab.stanford.edu/~ullman/mmds.html
What makes 'void main()' fundamental to programming? And the syntactic sugar of cout and operator overloading? Come on. If there's anything fundamental about programming it's not the particular design choices made in your favorite language. What makes Python good is that it allows one to focus on learning to translate ideas into programs before having to deal with all the other junk that goes into programming in other languages.
The problem is that once you get to defining your specs as programs themselves, they can have bugs, and the closer those specs get to maths, the less the people who actually define the specs in the first place - usually neither programmers nor mathematicians - can understand them, reducing the likelihood that anyone will notice the deviations between the spec and what users actually want.

Additionally, frankly, "reliable software" isn't something that's needed at least 99 times out of 100. Software that more-or-less gets some specific task done is. Those tasks can change from day to day, and generally require a few tries before the person who gave the task is even sure what they want, so RAD is more of a necessity than spec-based development.

Basically, we now have this entire class of information workers, and very few tools to give them that are any better than an Excel spreadsheet for the most part. I don't see the article as trying to give traditional programmers new tools, it's trying to give information workers new tools, and probably traditional programmers will find some of those useful.
Are you mad that they're blogging?