skysight-inc/HackerNews huggingface dataset:
Thank you, this is really helpful. I find the keyboard on my 2009 MBP pretty good so the chiclet board is appealing - but equally I know I hit these keys too hard for my own good, and bottom them out all the time. It's more tiring to type on than a good desktop keyboard.

> I obsessed about keyboards for probably a month before breaking down and ordering a WASD [...] I never really think about my keyboard until one of these threads pops up, which is funny considering how much mental energy I devoted to choosing one.

Oh boy, that sounds just like me! You should have seen the months I took to spec out my new desktop computer. Drop me an email if you want to have a foil for these times :)
I can't really comment on source maps in Elm, but the approach in PureScript has been to generate clean, readable JS which is debuggable directly. Source maps are on the roadmap, but not really a priority right now. I haven't heard any complaints about the ability to debug compiled PureScript yet.
You can probably implement Elm in PureScript pretty trivially, AFAICT. AFAIK Elm doesn't have any static guarantees about lack-of-space leaks or lack-of-time leaks. Or, maybe it just lacks higher-order-signals? (Which would mostly prevent those sorts of things happening). I found Neel Krishnaswami's papers on a static way to decide/prevent these things statically very interesting. I haven't found any implementation of his ideas, but they seem pretty solid: http://www.cs.bham.ac.uk/~krishnan/
A Safety Net for Global Capitalism: Inside Munich Re, the World's Risk Center
This was announced on HN 2 years ago:

https://news.ycombinator.com/item?id=5177034
the most recent vinyl version (0.5) https://hackage.haskell.org/package/vinyl-0.5
winds up being a REALLY nice balance of flexibility, good type inference, and a few other things.

Its actually simple enough that for a work project I decided it would be simpler to write a custom version of the same datastructure just to avoid extra deps. (and because I needed some slightly bespoke invariants)
Played fine on my phone (Android) just now. Seems like they are using Vimeo now.
ResearchGate as a replacement for LinkedIn, on account of LinkedIn's spammy tactics? I can only hope this was meant in jest; if so: well-played, friend, well-played indeed. ResearchGate has taken dark marketing into the realm of high art.
Poll: What is your personality type?
I'd be very interested to know whether there was any correlation between HN readers and a specific trait of personality types.

If you don't know your type (Carl Jung's four letter system), there's a decent quiz here: http://www.16personalities.com/free-personality-test

I grew up with a member of my family who would often meet people and very quickly decide upon their personality type. As a result, I've always found it both fascinating and insightful. It'd be great to see the results on such a large yet focused group.
First of all, not all neural nets are deep, and many people discussing "deep" learning actually know the difference.

Secondly, if you'd like to dispute the series of records broken by deep learning across many benchmark datasets, feel free to take that up with Geoff Hinton and Andrew Ng. Skymind is hardly saying anything new when it points to the advances deep learning has made in unsupervised data.
#NoEstimates to me is often an indicator of poor company culture. It immediately makes me think of shops where there's a disconnect between developers and the rest of the organization.

The business and product people are unable to explain why they need estimates. Often they don't know it themselves and are just passing on the request from their bosses or customers. They hold devs accountable for estimates even if the requirements, priorities and teams change. They also think estimating is free - they don't realise that producing meaningful estimates takes time and requires a deep understanding of the code base. It also requires clear, precise requirements which they are unable to provide.

Developers at these shops believe their single responsibility is producing elegant code. They don't have to prioritise features based on their cost and value; and they don't have to communicate with clients, investors or sponsors. Many devs never learned estimating, that's why they call it an "art". They spend forever to produce estimates that turn out to be way off, even if requirements and circumstances don't change. The lazy way out is to say: Estimating is a waste of time because estimates are almost always wrong.

I have seen estimating done right: It took about 5%-10% of the overall effort spent. It helped make or break business cases, prioritise features and manage client expecations. It raised questions that, if left unanswered, could have resulted in massive cost explosions and unhappy customers later on.

Key cultural ingredients:
- Business and product people don't live on an island. They understand that estimating is neither free nor instant. They work close enough with developers to know what level of detail is necessary and they also understand the value of refactoring, test automation, pair programming, etc.
- Developers don't live on an island. They are involved in product decisions and client communication, so they understand why people are asking for estimates. They not only take pride in the quality of their code but also in their ability to deliver features quickly
- Estimates are not used to crucify developers, but the company culture allows an open and forward-looking conversation when the actual effort deviates a lot
- Estimating is seen as a skill. Becoming good at it (ie. accurate and efficient) is a requirement to get senior dev roles
- Everybody understands that when the world around them changes, the estimates change too

Final note: work should be estimated in line with the predictability of the business. If your company is pivoting every 8 weeks then there's no use in estimating 6 months out. If you have a successful app for iOS and consider expanding to other platforms, it's probably worth estimating
> How long will it take to invent a flying car? That's engineering right? I want a precise estimate.

No, that's R&D, a task which then later leads to engineering when a working solution has been found.
relatedly, why do they have webcams? WTF
Email Titled “My New Photo ;)” Actually Contains Malware
Might come handy in case you want help yourself get over the seemingly cryptic syntax: http://rigaux.org/language-study/syntax-across-languages/
Also, make backups regularly.
I've found meditation to be very helpful. Meditating is an exercise in concentration, where one trains their mind to be completely involved with "now". It helps quiet the mind, turning turbulence into tranquility. That kind of focus can elliviate the desire to jump from one shiny thing to the next.

"Zen mind, beginner's mind" is a small, wonderful book on the basics of zazen -- the art of sitting quietly, without thoughts.

Getting started is easy: take easy, natural breaths, counting them until you get to ten. As thoughts enter your mind, acknowledge them and return focus to your breathing.
>most apps aren't I/O
limited.

Is that the case? You hear time and time again that most modern web applications in particular are I/O-bound. I suppose that depending on the particular case the I/O device in question may not be a local disk but that doesn't categorically change it.
From your website, you appear to be a college student. Perhaps your expectations and uses are different than commercial developers.
OP here. Just returned to this thread after a nice day away from the computer. I'm sincerely flattered and grateful for every response in this thread. There is a great deal of advice and wisdom to absorb in here, so naturally any response I will provide now will not be adequate. The only thing I can give right now is my thanks. My Sunday will be spent going through these posts.

Thank you all again.

Michael
How to ship 5250 notebooks in under 30 hours
This is a very good idea. Similar to Rosetta Code for GUIs. They do a good job explaining the task specifications and the attributes of the framework that each task intends to test/reveal.

I think they should add a task where events outside the user's control can affect the GUI state in non-trival ways. For example, a control panel for a piece of hardware that could be disconnected at any moment, or a remote file viewer where the server can take away the user's rights to view a file while they are viewing it. This makes GUIs more challenging in my experience.
It's also like the religious fundamentalists who insist "you can just pray the gay away." As far as most people are concerned, the premise that all violence is absolutely unnecessary is not a widely held position. Indeed, it's more commonly seen as an exercise in extreme wishful thinking, on par with believing that it's possible to walk on water or leap from a building and fly.

Sure, you can flatly insist "the ends don't justify the means" but this is begging the question in that it assumes the means in are unequivocally wrong. Most people aren't about to make that assumption when it comes to violence. In other words, the tack taken by our friendly anarcho-libertarian here is is a bit like hitting a baseball and making a dash straight for second base. Sorry, kid, but nope.

To get to second you've first got to convince us that all violence is absolutely, supremely wrong in each and every case. Only then will the "ends don't justify the means" argument have a leg to stand on.

Good luck.
In Firefox, I either scroll quickly though readable tabs with the mouse-wheel, or click the right down-arrow for a text list of tabs, or start typing in the address bar of whichever tab I'm in. For example, if I type twi then the drop-down list offers Twitter, and I select "Switch to tab". That gets me to the half-dozen tabs I want to look at several times a day.

With those options plus tab groups, I find it pretty easy to handle several hundred tabs in Firefox, where Chrome was a nightmare. The drawback is that you just keep adding tabs ;-)
That's a pretty sad indictment of commercial developers. Or perhaps just the pressures put on said developers :/.
Reasonable time cost estimation is certainly possible with software. It's not particularly easy but you certainly have a better chance if you at least expose yourself to the decades of hard research on the subject and not arrogantly imagine that everyone before you started programming of flogging your "agile approach" was an idiot and knew nothing about software development.

Software estimating is not a particularly pleasant task - neither for developers (they generally have no training in the area and so don't even know how to approach the problem) nor managers (who have too little technical knowledge).

And since 95% of development is writing in-house CRUD stuff or putting together lightly trafficked web-pages, it's tempting to bask in ignorance and pretend that not only is the task almost impossible anyway (and so pointless) but that in-fact it's unnecessary. And for IS department mickey-mouse projects, this is probably the case.

Some of us however have had to pitch fixed price tenders for large software development projects, for example. And no, the customer isn't going to accept that it will be done when it's done and that we should just start a few sprints and see how it goes. And if you get the estimate wrong (too low), you screw yourself and lose money on the project - too high and you don't even get the contract. In this environment, you learn quickly that estimation is vital, difficult but possible with the appropriate effort. And yes I hated doing it the first time but it became almost satisfying after a few iterations having gained some confidence.

This assumption that a "post-industrial", agile, folksy-anecdotal approach is appropriate for all software development really pisses me off. It breeds developer myopia, ignorance, self-importance and exceptionalism. Believe it or not, engineers have estimated, planned and executed very complex systems inside and outside of software. But it's only in software engineering do you find clowns earnestly claiming that estimating or planning developing some crappy CMS system is beyond human capabilities because software is so "different" and that estimating and planning a project like the Hoover dam was easy in comparison.
Essentially, this is the way that Google sets the standard for acceptable web content.

It's subjective, it's vague, and sometimes unfair but that's the burden they have to bear. Defining the "quality" of a web page for a search has become as important a factor to web search as any other.

But "search quality" is a leaky abstraction like any other. When someone looks up a random phone number that just called them, they aren't looking for a blog post about it. They're looking for a very small amount of information.

Let's imagine we're determining the quality of a web page as a search result. Say we're looking for the combatants of the Second Boer War, so our query is "second boer war combatants". Now, if we had a page that listed only and exactly the names of those combatants, that would seem to be the "answer" we're looking for. But wait, isn't it better to see a page about the Second Boer War which has a lot of other information about the conflict? Or a page about the military history of the most notable combatant? Or even a table of major historical conflicts with their combatants?

Basically, although it would seem like a precise "answer page" is the best, there are a lot of other factors. The most popular kind of search results are often Wikipedia pages, so people seem to want that level of information on a subject. People sometimes search for something as a way to get to something else. The nature of the web indicates that pages with links to further information are more useful than those without them. And of course, as untrustworthy sites proliferate, the more well-compiled, organized and correlated information is on a page, the more reliable it is.

So ultimately, I feel like it's inevitable. As search has improved, Google has to make these kind of choices, in a quantifiable way, about the nature of a quality search result. And that ends up, in the tools-make-us stage of the web we're in, shaping the envelope of what web content is popular, even in some way acceptable. In turn, the web becomes easier for Google users to use by becoming easier for Google to index and search effectively.

But this is the more painful reality, as I also know. You get pushed out of the Google results not by sites with better information, not by sites that are more relevant, but by sites which seem like they can play the "Google game" better because they have the resources and profit motive to put together good metrics for the myriad signals that make you rise in the ranks.
Github repo that I can compile and try?
So who ends up footing the bill? Does the bank just write it off as a cost of doing business? Also aren't financial transactions reversible among banks?
But if the phone numbers weren't on Google when they had 0 comments, then who would be the first to put down a comment?

It is the chicken and egg problem.
U.S. Drops to 49th in World Press Freedom Rankings
Totally disagree - sure some people my be motivated by status but to say that's the most of the reason? no, no, no.

I'd say more of the motivation comes from taking control of your environment and crafting something from your own ideas, thoughts, and methods then seeing a finished product in the end. Now that is motivating. Once you have a few finished goals under your belt it just seems to flow naturally. Come up with a goal, finish goal, repeat until dead.

One of my biggest goals at the moment is to ultimately help a lot of people. I couldn't care any less about what my status is. I want that feeling that I made a positive contribution with my life.
Thanks for correcting me, Patrick. I certainly didn't mean to be unfair (especially as I replied to a comment I felt wasn't being completely fair itself, intentionally or not), and I should have been more precise about the use cases.

I agree about the GC considerations. I meant my points to mainly apply to the use cases where safety such as that offered by Boehm is eschewed in order to achieve other powers at its expense, which I feel is brought up a lot by Nim proponents as strengths during these discussions.
Privacy will not go away – but it will evolve
So since this is such an amazing language.. I wonder why it doesn't have a Wikipedia article? Oh, wait.. I remember. Its because Wikipedia admins are an incestuous cabal and will do anything to avoid admitting one of them was wrong. Or because Wikipedia in general is a joke.

Think I an exaggerating? I believe this is the best programming language out there. Just try to add a Wikipedia article. Not in a million years.

The Wikipedia notability rules and process are ridiculous and completely unfair, when every porn star, popular smut video on the internet, rare mushroom, and Pokemon DVD has an article.. But the best programming language in the world cannot.

This is an example of what is wrong with our society.
These are pretty good criteria for evaluation. I found myself using 5 of the 7 patterns from time to time in implementing UI.
One thing I find interesting, is that our industry is basically a gigantic sea full of Java/C++ programmers.

Within that ocean, there is a small portion of Functional Programmers who have come to a realization that a set of finer grained abstractions would improve the industry productivity at large.

Within that small subset, you have a set of people who believe that static type systems aren't ready for widespread use or are too cumbersome for expressive programming in many cases. While the other part of the functional camp are convinced that modern type systems (usually the ML variety) are more than sufficient for expressive programming.

Within the ML static typing camp you have people who adamantly claim that in order for static type systems to be sufficiently expressive, you must have a particular kind of polymorphism, or that this kind of polymorphism must be implicit - not explicit. Or they might form a stance along the lines of strictness vs non-strictness.

Then within the strictness camp, for example, some people will form a stance that your language must be formally specified (SML) as opposed to having only a reference implementation (OCaml).

At the end of the day, we're left with a handful of people who share our exact opinion about what languages would in theory make the industry more productive.

Meanwhile, the enormous sea of industrial engineers are still using Java/C++.

It can end up looking like people debating which particular brand of natural spring water should be given to millions of people who are thirsty in the desert.

I'm not sure I'm saying anything helpful, and I totally understand having a stance on any one of these issues. I'm not accusing anyone of being too focused on these nuances. They are important questions and I'm thankful people way more studied than I am take the time to report their findings on the tradeoffs. But personally, I also try my best to not loose sight of the fact that we are in a giant sea of people who would benefit from exploring virtually any of functional paradigms/languages.
Unless start-ups or top companies [0] start adopting OCaml, I doubt its rise would be meteoric. Take go-lang, for example. It performs no better than Java on JVM, but is gaining tremendous traction because Google is putting all its weight behind it. I believe C# gets far less credit than it deserves... and MSFT knows exactly what its doing by open sourcing it. I digress. I feel, one is better off investing time in Clojure or Haskell (if functional programming is what one is after), both of which are gaining a lot more traction in the industry and the academia compared to OCaml.

I can speak from what I observed here at Amazon... which did try and make use of Erlang (due to its excellent concurrency model) at one point, but gave up (Simple DB is powered by Erlang, but its successor DynamoDB is JVM based). At least Erlang had its chance... OCaml community within Amazon is non-existent. Whereas Clojure (plenty of traction within due to STM on JVM, I guess) has plenty going for it, as does Nodejs and go-lang. All of these plaforms are popular due to the strong community presence both within the company and at other tech power houses.

I'd also like to point out that the current crop of volunteers behind ocaml.org [1] are doing a really great job of evangelising OCaml.

[0] https://ocaml.org/learn/companies.html and http://clojure.org/Companies and https://wiki.haskell.org/Haskell_in_industry

[1] https://ocaml.org/about.html
> Calling upon government services and voting isn't a show of faith in the government, it's just a matter of practicality.

Intelligent people can disagree on the ideal way to transition from our present system to a more preferable solution - but your statement isn't absolutely true. Voting does demonstrate a faith in the government. That faith may only be that the present system allows for a transition through the mechanism of majority rule, but it is faith none the less. As far as police interactions, I chose my examples carefully - they demonstrate a belief in the state beyond practical needs such as insurance claims.
I didn't say they were wrong. Am I incorrect? Do you think it sounds like tin foil hat crazyness to people for a different reason?
>Filling in forms to tick boxes so that everyone can go home happy pretending there's security going on, when really their network is a leaky sieve.

I saw a DefCon video where the guys were talking about something similar. Lots of small banks in the US use 3rd party services for their banking software. One of them had horrendous security and so some hackers made off with several million dollars before anyone found out.
> It makes sense to have each number to be a page. How else would you design it?

I don't see how it makes any sense to waste an entire page for each number. A simple scrolling list, maybe with numbers that can expand to show more info.
Skype? :p
This is really super information. Many thanks. And yes, 7-9 years isn't close to 100. But if you think in terms of salary, and what it would mean to squander nearly all of what you make in a decade in a single year, you realize how completely detached from reality CA agribusiness has become.

These guys are in for a really hard and nasty shock.
Not to speak for everyone, but when people say that they mean the network specifically, not the disk.
Not what you are asking for, but possibly another approach to consider - https://bitbucket.org/chrj/smtpd.
Custom Switch Matchers in Swift
I don't think any programmer needs to know more than what this information means practically to a programmer. I don't need the details - I have other things to worry about.

SSD is great because when we compile we are opening potentially hundreds of files at once. SSD is great for parallel access and blows away spinning drives.

Also, as a programmer I replace my computer every 5 years. More often than that is too much of a time sink. I may replace some parts in those 5 years. For example I upped the RAM and replaced the harddrive with an ssd on my 2009 MacBook pro. But in 2015 I purchased a MacBook pro with 16gb ram and a 1tb ssd.

as a programmer I want to focus on the programming.

Edit: sorry, I read the article but didn't quickly understand that this is a summary chapter of a book written for programmers that actually do have to worry about ssd access vs normal hard drives. It makes much more sense in this context.
> Do you think it sounds like tin foil hat crazyness to people for a different reason?

Yes, for the same reason that you replied to. Here, let me distill it for you:

>> (forgottenpass) This generally sounds like tin foil hat crazyness to people who have been taught to not have that thought by their political allegiances.

> (you) It sounds like tin foil hat craziness because it has been wholly discredited by tin foil hatters.

Do you see what you did there?