skysight-inc/HackerNews huggingface dataset:
I think what we are missing is smarter tools. I think that's the argument here. What we really need is the ability to say something like "I want a data structure D holding objects of type Q, with an ordering using this key-accessor(A) called Alpha, and an index with this key-accessor(B) called Beta" and then later in the code say "I want to observe D for the following conditions ..." and let the compiler figure out how to store that data in memory, how to most efficiently build a data structure to trigger those conditions, etc. (Instead of saying List<> or IList<> or writing a custom data structure, etc).

And then if you really care (and this is where the non-text/denser ASTs come in; as well as a deeper understanding of computer science and programming) you can add annotations to your description of the data structure like "I want reverse traversal of ordering Alpha to be O(n)", annotations could even cause a compile error like, "I want to insert via index Beta in O(1) time, with an O(n) in order traversal time of Beta". And even fine grained annotations like "For index Beta use a red-black tree" or more specifically "To implement index Beta use module 'foo.bar.baz' by 'FancyBeansCorp', using class 'AwesomeEnterpriseIndex'"

Let the tools do the heavy lifting! Let data structure and systems programming experts write data structure implementation strategies. Hell, I bet you could build a marketplace of code just for optimized data structures, if it was easy to swap them in and out. Heck those sorts of dependencies should be at the company level, without even touching the project in question (a company level code policy to use a specific library of data structure implementation strategies, regardless of project being build (unless the project or user overrides it)). Let alone a market place of implementations for algorithms, general code patterns (conditionals, whiles), AI, networking, UI, etc.

Compilers should take a long time. A very long time. Sure we can short circuit them for debugging, and just use the best workable code we got in a few seconds, so we can test (and besides, with constant compilation, it should have already solved most of the problems reasonably well by the time you click run). Our compilers should be smart enough they can change their output for different machines not just at an assembly optimization level (better intrinsic, etc), but for different cache sizes, for different memory performance characteristics (changing between intensive memory data algorithm to intensive processor algorithm) as necessary. And yes, I expect it to be deterministic for every platform.
Thanks for posting. Fuller is amazing. The new site http://www.bfi.org has ever more resources.
With the ability to send personal messages, this could be mitigated, but it's no fun to point out how much smarter you are to a single person, rather than the entire internet, when correcting someone's speling or grammar.
ARM Partners Ship 50 Billion Chips Since 1991 – Where Did They Go?
dang has been forewarned that I've been working on something lengthy
(about 2000 lines) that might help with the usual moderation chores
and performance. I should be done with it this week. If it passes the
dang sniff test, I'm sure he'll forward it to you.
That's generally why we don't see emergency response folks running to the side of an injured person, right? No reason to slip and add injury to injury?
Well every design change is a trade off. Breaking metaphors, all other things being equal, is bad. The fact that the author here identifies an on screen cursor as a use case probably is enough to strike fear in any apple designer that this would lead to a regression in ux.
OS.js Version 2.0
PHP would be even more powerful to you ;)
I think the point the author is making is that Python eliminates a lot of overhead in learning fundamental programming concepts. I think it's easier for a beginner to grasp the meaning of something like

for i in range(0, 3):

than, say,

for (int i; i < 3; i++)

Haskell is also a great language, but not a great choice for beginners, I think, because it adds a lot of overhead in learning basic programming and CS concepts because of the whole purity thing. I certainly wouldn't try to teach first-year CS students how to implement things like stacks, queues and graphs in Haskell.
People clamor for a dislike button on Facebook because it is an emotion they would like to express with a button. Whether it would lead to better comment threads is a completely different matter, and if Reddit is any indication it does not protect against hivemind, and in here as well it occurs frequently that comments are downvoted merely for containing arguments that people happen to disagree with.
Reads like an origin story for Iain Banks' 'Culture' novels.
My gut feeling is that I agree with you that quality of stories has gone back up but that comments have been getting worse continually with no bucking of the trend. Of course that might just be viewing history with rose-tinted glasses, and either way it's completely subjective.
What is the negative feedback inherent in code reviews?
Thanks for adhering to the Number One Rule of Webdesign.

Number One Rule of Webdesign: "Never change your webdesign."

I guess temptation must be there. To add a few new items in the menubar. To add infinite scrolling that won't quite load all the time. Cross-promote some BS. Remove some functionality that the users loved. Move things around because the focus group was manipulated into liking that better.

I can only assume the most positive things about the people running this site!
Forums usually have strict content moderation for that reason. That does not scale at all (Dunbar's number), so very few startups would attempt it.

Upvotes are a quality filter, and downvotes are a quality filter for the quality filter.
I was somewhat surprised, but very happy, to see Verse mentioned in this context (although he did get Eskil's last name wrong, it's "Steenberg").

I co-developed the initial version of Verse with Eskil; I think it was a bit before its time perhaps. It was hard to get real traction for it, but at least the things Eskil has gone on to build on top have gotten some real attention. Great, and very well deserved!
Python and Java are too commonly taught languages, Groovy is not.
They just have multiple barriers with sufficient separation for rescue operations... this would allow them to turn up to n-1 barriers off.
What if foo() is present in two different libraries? (is this the 1% you're talking about?)

What if tomorrow I add another library which implement his own foo()? (this is trickier)

When I read the code, what is foo()? (here the IDE may be smart and show me the right documentation).

All that said, I feel that the pythonic "Explicit is better than implicit" is better.

It's also true that when I see a file whose first 30 lines are used for including dependencies it doesn't sound right.

The problem lies with the fact that we use text to store structured data. If we were to save source code as binaries we could have the source code in a "file|object|item" and the dependencies in another item, linked to the source code (I'm not advocating this, source code in text files has many advantages, but also his drawbacks).
sure, everyone can be taught. I just don't see it happening anytime soon. If we are talking if 100 years from now, anything is possible and it is a different debate altogether. But in next 20 years thus is not happening.

With same logic , Everyone can be taught to be a rocket scientist too.
I think I could have written this article a few months ago, when I was a huge Python fan and would spend a significant amount of time telling my friends in academia to stop using Matlab and start using Python.

Then I started working in a research lab myself, and I haven't used Python since. Very simply, there's an immense amount of code written for Matlab that I can learn from in domain-specific instances, hardware vendors provide Matlab example code (and not Python code), and all of my peers use Matlab. When I have a problem they can usually help me solve it, if I'd been using Python I would've been all by myself and likely unable to finish the task.

And really, these are the most important things to consider when choosing a language. As it stands, Matlab is the right language to choose, at least for me.
Why not have a net of some form on the surface of the water?
> it's clear to me that the 'sting' of downvotes [...]

Do we need to sugarcoat this? Being rejected for a job stings, having your paper rejected from peer review stings, etc. But in all such cases quality is maintained because of those rejections, and there's no way around it. It may be a factor that downvoting happens in public, but a moderation system where every comment needs to be reviewed by some peer review committee would be way too expensive and too slow for a forum.

Your idea of a two dimensional voting system reminds of Slashdot's more elaborate system. Some people say it works quite well, IIRC. Ultimately, I don't think one should hope to find a technical solution to a social problem.
That's a reflection of the skill/desire of the programmer and not their initial introductory language. A naturally curious and intelligent person who wants to get better at their craft is going to learn about this stuff. Some people are happy learning enough to get by, and that's ok. Not everyone is destined to learn everything about their machine down to how disk controllers work.

Personally, I barely learned enough C to even be dangerous, and it's had no negative effects on my work. I have a reasonably good understanding of how Python works at the abstractions that I need to. If I need to learn more, I go figure it out. In truth, the most useful stuff I learn about writing efficient code comes from reading articles/blogs that give medium-level overviews of how a language implements certain features and how it effects your software. Would knowing C help with that? Not in the slightest.
There are basically two things we call "programming".

One is the specification of a process in algorithmic terms - the abstract, but rigidly defined sequence of transformations on input data into output data. This is a field of mathematics.

Two is the building of a physical system to take input data and produce output data, these days by configuring a complex machine comprised of many different pieces of silicon, each of which takes a string of bits and understands a concrete machine language. We have built a high tower of abstractions, so many different silicon-based computing machines can be programmed the same way without programmers going insane. This is a field of engineering.

You need to teach both. They are two completely different skillsets and a successful developer needs to understand both sides - the mental tools necessary to make algorithms, and the engineering skills necessary to make machines that implement algorithms. You don't start from discrete mathematics and then proceed to trying to bang them inside a computer, nor do you start from silicone and then pretend this is the basis for algorithms.

Both are starting points and you need to approach both as their own thing, not a continuation of the other. To this end, it would be for the best to teach both C and Python at the same time. I find that the two aspects of programming are their own mindsets and things learned in the beginning of each don't really carry over to the other.

And then hope the student can put one and two together.
It actually makes sense that Facebook doesn't provide a dislike button, for two reasons. First of all on Facebook you're interacting with friends mostly and disliking a friend's post cannot lead to anything good and generate resentment. Secondly, being downvoted or dislike creates a bad feeling and people would either reduce or entirely stop posting or simply avoid Facebook altogether to not be met with disagreement.
To be honest, who cares. Even if your motivation was karma, if it's a good post we can upvote, if not we won't. Until prizes start getting awarded for karma I'd hope most people don't care about other users getting karma ('deserved' or not), even if they do care about their only karma. The only exception here would be that you don't want karma driving baity content, but a "no karma post" option wouldn't help fix that at all.
I think Go isn't particularly suited for students at any level. It is a language built for applications that aim to scale extremely well in the cloud, and usually it is being used to replace small parts of a larger infrastructure. Go does not look as inviting for general web development (when runtime speed is not as essential as features) or general programming outside the web/cloud.
What does KNF refer to in slide 19 ( http://www.openbsd.org/papers/bsdcan14-libressl/mgp00019.htm... ) ?
Kernel Normal Form, I assume, a specific formatting standard.
Comments got a lot less bad over the past year, at least what I've seen -- especially since pg threatened the pre-screening tool.

However, they've also gotten a lot less good. Comments now fall in a middle range of mostly not abjectly stupid or offensive, but also not amazingly insightful.

Twitter is pretty much where I go for the extremes of good/bad, now. It's easy enough to filter out the bad -- what I really care about in comments is the quality of the top 0.1%.
slightly off-topic. how do you think snowden will be remembered in 10 years?
I've seen the same "oh, this is only for beginners" reaction to some of Victor's ideas on making data visible and making libraries "discoverable" that seems needlessly dismissive. That's why I mentioned him. Also, Light Table's initial concept was inspired by his work[0].

I'm not always impressed by Light Table, but I appreciate the work the team has put into the problem and think they have good ideas.

[0]: http://www.chris-granger.com/2012/04/12/light-table---a-new-...
Or the Vanguard corporation in Use of Weapons.
"They lived in the L.T., which according to Harv was short for Leased Territories in letters. Nell already knew the mediaglyphics for it. Harv had also taught her the sign for Enchantment, which was the name of the Territory they lived; it was a princess sprinkling golden specks onto some gray houses, which turned yellow and bright were the specs touched them."
-- The Diamond Age, Neal Stephenson

I had to look it up -- I remembered the mediaglyphs as being part of the narrative in Snow Crash, not Diamond Age.

I absolutely think the Chinese "were on to something" -- it might not be commonly known, but one of the reasons for why Chinese (language) uses signs, is so that you can read text written by someone with whom you don't share a (oral) language. An efficient way to control an Empire that spans some 5-600 languages. Contrast with teaching all officials to speak and write Latin for example.
http://intelligence.org/courses/
Joey, your feedback is always welcome! I am aware of telehash (have been playing with it some time ago). Haven't seen the git push requests idea of yours. Digging in. It's a neat thought.

I think one of the most important aspects of the work I am doing is about establishing a tamper-proof record of history, decentralizing availability and proof of storage. If you have any further thoughts or questions, I am all ears!
The real problem imho is that votes, and in particular downvotes, shouldn't be visible, they should be implied by the ranking. While HN doesn't publicly show the votes of a given post it turns grey posts with more than 4 downvotes which has the same effect. Downvoted posts should automatically trickle to the bottom without any visual clue and there should be a minimum and a maximum for downvotes and upvotes respectively. Another problem that arises often (most evident on reddit) is that top posts get the most attention and thus the most upvotes and the tone and argument of the discussion is decided only by the first few comments. A solution would be to stop counting upvotes after a certain quota so as to let newer posts to bubble up to the top.
I found that SVGs between Illustrator and InkScape aren't fully compatible either. Sometimes objects wouldn't get filled in the same way. Most problems seemed to be on the Illustrator side, though, not InkScape. Or maybe the other guy didn't quite know what he was doing, but still that's a real problem, and he isn't dumb either.

I bet you'd get all sorts of minor glitches and artefacts with even more complicated vector imagery.
It's kind of depressing, but I tend to agree. What works for absolute beginners does not and will not work for experts because it's inherently limiting. A lot of the "let's make programming more accesible for beginners" experiments have already been performed and they didn't cause more beginners to become experts (nor did they empower experts). IMO[0] we really need to move closer to mathematics and precision to actually achieve software that you can rely on. That means foundational work in PL semantics, type theory, PL pedagogy, etc.

[0] And this is just my opinion because I have no actual rigorous research to back this up. At least I can admit that, contrary to most of the people who are agitating for approach A or B to software development.

EDIT: s/studies/rigorous research/. "Study" can mean anything from "I though about it for 5 minutes" to "rigourous randomised trials", so I shouldn't use that term.
Go is a highly specialized language made for very specific use cases and mind, and still missing features that are essential in many programming domains (dynamic linking and real generics come to mind).

Ruby has no real reason to be if you're already using Python. Nothing wrong with that language (although I consider its programming culture to be inferior in many aspects) but it doesn't really do anything that Python doesn't do, even if it has a few more syntax tricks, which are at best a nice but superficial advantage, at worst another point of confusion and bugs.

Scratch is impractical, and a toy language. Whatever ease of use it has is very quickly surpassed by the need to be productive.
> Go

Requires curly braces and type declarations. These are easy for beginners to screw up.

> Ruby

Ruby's syntax makes me want to gouge my eyes out -- it's every bit as bad as Perl. I'm an expert and I hate Ruby. I wouldn't dream of exposing beginning CS students to that crap unless I wanted to convince them to change their major.

> Scratch

This is a toy language in a toy environment. I don't know the language well enough to judge its syntax, but the author's goal is "...rather swiftly bringing [students] to a level of skill where they can use computing in their other courses: to analyze data for those lab reports, to learn linear algebra, to solve problems in particle mechanics, problems involving differential equations, maybe even to write a program to control a robot." Scratch doesn't seem well-suited to this role, but there's enough language and library support for Python to be used in all these roles and many more.
Big existing codebases always hinder language adoption.

But Python is becoming the lingua franca of scientific computing, owing to great open source tool and libraries. Very soon hardware vendors will always provide python example code, python "drivers" or REST-like APIs.

I don't say this lightly, and this statement is hardly ever right, but in this specific instance, Python is clearly the better "language" compared to Matlab, even in scientific computing. The syntax and quirks in Python are more consistent than in Matlab and general programming is a lot easier.
You can't infer anything about his motives from the number of files he took. It's just good sysadmin instinct to backup everything, encrypt it, and then sort it out later. Disk space is cheap and it's better to have too much than be missing something important.

It also often takes less effort to take more data simply because it requires no additional thinking or typing to exclude things.
"Research" is a wide area. I personally used Python in HCI research during all my time in grad school, and thoroughly enjoyed it.

What field are you in, if I may ask?
Oh man, I've definitely felt this pain many times lol:

"The samples will be missing lots of implicit information such as how to install the necessary libraries and how to deal with missing dependencies and version conflicts. Transcribing and modifying the examples may lead to bugs that suck up time. It's not terrible, mostly thanks to sites like stackoverflow, but it's still a lot of unnecessary distractions from the task at hand."

So many times, the actual programming isn't tough, it's just getting all of the stuff around it setup that is hard.
Yes, I know the history. That's precisely why I'm so disappointed.

I believe in the concept and potential; it's the execution that I'm finding fault with.
You can separate them physically without putting them in solitary confinement.
The two questions that must be asked about this are:

Are all documents created equal? Is one document a multi-page report containing detailed information, or is it a brief memorandum about something trivial? How much of these documents is boilerplate such as daily summaries that will repeat the same information as long as it's relevant? If I grab someone's mbox is that one document, or a collection of emails that each count as one document?

Of course none of that matters if there the number is entirely fictional. But there is still the second question, does it matter how many documents were leaked? Would your opinion of Snowden change if the number were different? If you defend him, is there an upper limit after which revealing the information is no longer justified? If you think he's a traitor, is there a small enough number that you would not object to?

I don't think it matters. The writers probably don't think so either and are thus using it not to add information to their articles but because sounds better. A person learning about this for the first time will see "1.7 million" and think either "Wow, that's a lot!" or "This reporter did a good job." A person writing "Snowden is reported to have stolen an unknown number of documents," will raise the question of who it is unknown to. The reader may think the reporter didn't do enough research. Or doubt the NSA's account of what happened. Adding an irrelevant statistic makes the article more believable. And the more specific the statistic the better. Would the effect be the same if it were "2 million", or the more cautious "over 1 million"?

I bet media analysts have studied click rates and know just what kind of meaningless statistics can be added to an article to increase readership. This is what happens when success in journalism is measured by page views.
This is awesome.

If factory workers and truck drivers are going to be replaced by machines why not board directors? Surely a well written algorithm can do much of what they do a lot better. For that matter, Mr. Congressman and mayor of my town.... I think there may be a more efficient and less corruptible solution to your poor leadership.

Government by algorithm. The source of which is open for public inspection and comment. It just seems this might be fairer and more efficient. And efficient is often selected for over the long run. Which is why I believe this will happen.
Gotta wonder if some of these new icons wouldn't have been better off split-up. Most people recognize the PDF file icon as a white box with a black outline but with a red symbol. Likewise the green W for Word.