skysight-inc/HackerNews huggingface dataset:
Most of the problems he brings up are already addressed in major OOP languages.

1) Inheritance can be confusing and messy.

Yes, hence the advice: Prefer composition over inheritance. Instead of having B inherit from A, declare an interface I, and have both A and B implement I. If B wants to reuse A's functionality, it's free to do so through composition, and not through inheritance.

There are some edge cases where inheritance is vastly simpler than composition - mostly when the interface requires you to implement 20 different methods, and there's only 1 method that you really care about changing. Using inheritance here gets rid of a ton of boilerplate, but that's a conscious choice you're making. If you don't like this, just revert to using composition.

2) Encapsulations can leak if you write buggy code

Any program can break if you write buggy code. Not sure what the author's point here is. In order to encapsulate your class carefully, either accept immutable inputs, or make deep copies of them. If neither happens to work, warn users that class behavior is undefined if they misuse it. This is what every non-thread-safe class already does anyway: it warns users that if you use them in a concurrent manner, things may break.

More importantly, when dealing with internal state that's created by the class, make it private and ensure no one else can access it. This also serves to encapsulate the internal implementation and algorithm from external users.

3) Polymorphism is... not unique to OOP languages?

Yes, using interface-based polymorphism is a good idea, and covers most of what people need. How does this make the argument that we should never use OOP languages?

--------

The author brings up valid points about what to watch out for when coding in OOP. If you read other books like "Effective Java," they bring up the same points as well. But instead of acknowledging the benefits that come with OOP as well, and teaching people how to avoid these pitfalls and write code the right way, the author jumps to an extreme position that OOP languages should be abandoned entirely. Can we please avoid this type of wild overreaction, and pointless jumping from one shiny tool to the next, in a never-ending search for a silver bullet that will solve all of our problems. Because let's face facts: No such silver bullet exists.
You're right, that could be more clear. We plan to add ARM support, but we aren't there yet. Sorry for the disappointment.

There are 101 (really) Chromebook models, past and present. 33 are ARM, but GalliumOS supports almost all of the remaining 68.

https://wiki.galliumos.org/Hardware_Compatibility
You're making a false equivalence. Functional programming has a strong basis in discrete mathematics that OOP simply does not. This makes it better suited to accurately describing computation at a high level than OOP.

However, you probably arrived at this conclusion because you still see programming languages as having intrinsic paradigms and those paradigms meaning anything about computation.

The fact of the matter is that all programming languages are little more than notation systems for algorithms. The best programming language is the most accurate algorithmic notation system.
My Favorite PostgreSQL Feature: Insert / Update CTEs
> For instance I have yet to see an easy and simple to use (and as such maintainable) functional widget and gui library.

I will continue to shill for Elm[1], like I always do.

[1] http://elm-lang.org/
Programming paradigms are a lot like political parties -- they tend to lump a lot of disparate things together with a weakly uniting theme. You don't need inheritance for encapsulation to be useful, for instance.

The problem is, sometimes you agree with only a small part of the platform. None of these things individually are terrible ideas if tastefully applied, but it all gets clumped together into one big blob of "the right way to do things" (aka object oriented programming). I blame languages like Java for selling certain ideas as The Right Way, and building walls that intentionally prevent you from using other techniques from different schools of thought ("everything is an object, no you can't write a function outside of a class").

I think the functional paradigm has a lot of good ideas too, but in my experience they're just as annoying if they're strictly and tastelessly applied in the same way OOP principles often are.

Don't be a "functional programmer", just take the ideas that are useful.

I tend to prefer languages and tools that adopt good ideas without promoting a single specific way of thinking.
They're ... duplicates...?
Knowledge Panel Reviw
Less than the $5.7 billion Yahoo! paid in 1999 for Mark Cuban's Broadcast.com: http://money.cnn.com/1999/04/01/deals/yahoo/

Times -- and fortunes -- change.
I don't understand what you mean. I've only ever gotten one pop-up, if even that. I've never found TechBeacon to be intrusive.
From a purist view one could argue that inheritance doesn't belong in OO in the first place. Alan Kay's first descriptions of Smalltalk & OOP did not include inheritance concepts.
It depends on your ethics. Which I think is more than a trite rejoinder. You don't have to go very far back in history to see how slippery received wisdom can be.

Here's a vaguely on target real world example: There are doctors who perform surgeries for people that refuse blood transfusions for religious regions. Presumably some of the doctors disagree with the belief, but they perform the surgeries anyway.

In that situation it isn't a huge conundrum, choosing to engage the patient on their terms can be better than letting them suffer or die (so while your predicate is true, it's also the case that there is strong alignment of interests). It's had an impact on how medicine is practiced otherwise: http://www.newyorker.com/news/news-desk/how-jehovahs-witness...

Anybody have any better real world examples that more directly get at the tricky part of the question?
I haven't tried it but the new HP Chromebook 13 G1 looks absolutely fantastic. It doesn't have USBC on both sides like the Pixel but it comes in a huge variety of configurations that range from $499USD to > $1000. HiDPI screen too and no touchscreen. I'm going to evaluate when the new MacBook Pros come out and see if the price is worth the differences.
It's missing "web artisan". So much self-entitlement.
You gotta flip the button on the graphic to account for local, state, and federal spending. In all but four states, poorer school districts receive more money.

As for your second point: that's a different argument than the one I was responding to, which was that lower educational spending in poor districts causes the achievement gap. Now, you can make a different argument, which is that poorer school districts should receive more money than rich ones. That implicitly concedes that the achievement gap is not due to a lack of funding, but due to external factors.

So the question is, how to overcome those external factors? Why do we assume spending more money on teachers and facilities will do that? If kids in poor schools are at a disadvantage because their parents are working two jobs, why not just write those families a check? I'm highly skeptical of this whole idea that the way to help poor people is to funnel more money to middle class teachers and administrators. I think that's ass-backward actually.
> The codebase is easily accessed, saved, and modified by them, if they want to.

This is harder than it already being local, or apt-get install turning into apt-get source. Likely, if they find your app interesting they will keep using it directly from your URL and end up at your mercy.

And that's the crux of my point - the assumptions of the platform are at odds with software freedom. Not in a way that is incompatible - as this is computing, we are always free to ignore the properties an abstraction provides and build a completely new one over it.

Your argument is analogous to a C programmer insisting that if one just follows the rules, C is just as expressive and safe as a higher level language. People are not perfectly rigorous, and the properties of the basic abstractions matter.

"Web" implies executing code off of a third-party server. Yes, there is a pathological case of having your own server (and that may become more popular one day), but that does not change the term's current wider definition and the general culture around it.
The same can apply to any use of libraries.

1. You depend on the library and its dependencies

2. Version controlling libraries is hard when you depend on A and B both of which depend on C

3. Someone changes something in, say, npm and it breaks everything that depends on it. Also, security is only as strong as its weakest library.

4. Do you put everything in one monolithic library or have libraries require each other? Requiring is also a hierarchical graph.

5. Libraries may want to share pointers to the same objects, but then who owns them?

6. Libraries do things for you but sometimes you need to override or customize something, so that breaks encapsulation.

And so forth.
I do not understand how anyone could tell if the kids are learning anything if they are not tested.

> it beats all joy out

Would you also say that scoring a football game beats all joy out of it? I would posit that an un-scored football game has little joy in it. It's just meaninglessly running around holding a ball.

I remember tests from grammar school, and enjoyed it much as I enjoyed working puzzles. A couple of the other kids and I would compete for bragging rights.
> later books

bourbaki is fairly early. the date on your site is related to translation.

although the halmos book appears wordy, i think he has a sound pedagogical style appropriate to his target audience, having glanced at the text mentioned here and really enjoyed his book on set theory.

> by choosing one road I am turning my back on a thousand others

ah, no need to paint such a glum picture: there are only a few facts that will appear and reappear in many of the theoretical books, b/c there is only one thing called, "vector space," one thing called, "hilbert space," and so on.

for hacking, of course, numerical methods are what many readers will be interested in...

> Weird Russian

this might be the best section, except for the categorical "weird" label. the iron curtain must have been sort of like a semi-porous membrane. probably just about every book list on math topics considered during the mid-20th-century ought to include some books by russian authors.
Why can't I? For the purpose of this argument, Windows and Mac keyboards aren't all that different. See for yourself - modern mac keyboards have two layouts:

- Full / 105-key layout, which is a copy of Windows 105-key layout with renamed and re-shuffled lower row, featuring: control, option(alt), command(win), space, command, option, control; [1]

- Compact (laptop / magic), where lower row has: fn, control, option(alt), command(win), space, command option; [2]

Other (Windows) layouts of the bottom row:

- Full/Desktop 105-key: Ctrl, Win, Alt, Space, Alt, Win, Menu, Ctrl;

- Lenovo laptop: Fn, Ctrl, Win, Alt, Space, Alt, Win[4]. Ctlr; [3]

- Dell laptop: Ctrl, Fn, Win, Alt, Space, Alt, Ctrl. [5]

...etc.

Now, this is ridiculous.

So my point is: sure, there are (ad-hoc) standards, but way too many of them, and all of them try to pack too many keys around core QWERTY field, especially lower row. Chromebook is the first one on record to prune this and offer a clean, usable layout.

[1] http://www.apple.com/shop/product/MB110LL/B/apple-keyboard-w...

[2] http://www.apple.com/shop/product/MLA22LL/A/magic-keyboard-u...

[3] http://www.lenovo.com/images/gallery/main/lenovo-convertible...

[4] On some models, PrintScreen takes place of second Win key

[5] http://kbimg.dell.com/library/KB/DELL_ORGANIZATIONAL_GROUPS/...
Foreword to “Brave New World” by Aldous Huxley (1949)
For Android Developers: Use CoreAdapter, Any Type of Items in Recyclerview
I hope yahoo mail sticks around. I've been using it since forever, and would hate to change to gmail. Yahoo mail is kind of slow, but gets the job done, gmail is too chaotic for me. Maybe I'm old school about that, but I'm all in on yahoo mail.
I read one of those disaster porn books on an EMP attack. It was a pretty good story, but I tried to look into the real effects of these things, as I didn't think it sounded very plausible to create that much destruction.

I don't claim to have done extensive research, but I got the distinct idea that we really don't have any idea what the effects of a large-scale EMP attack would be. Nobody's bothered to try to figure out how to create a small-scale EMP without a nuclear blast and then tried subjecting modern cars and computers and phones and such to them. As far as I can tell, it tends to affect things with long antennas and lengths of wire most strongly. Would we expect it to disrupt a modern car? Cellphone? Cellular base station, broadband base station? Hard to say for sure.

I have worked with shielding electronics from EM interference, where interference can sneak in through unexpected routes. Not sure if EMP style effects could penetrate in the same way, though. Cars seem like kind of a tricky case - there are some moderate length wires, like 6-8 feet probably, but they may be somewhat shielded. Could they pick up enough energy to damage essential electronics? I don't think anybody knows.

Part of the book's premise was also that the weapons were launched on rockets loaded onto anonymous cargo ships and timed to detonate at the same time over the continental US and Western Europe. Sounds pretty implausible to me that anybody could pull off a complex attack like that without a lot of mistakes and/or obvious preparation work. How long did it take us to get SLBMs working right? And I don't think even the rouge states would be willing to use a untested Rube Goldberg delivery system to launch an EMP attack whose effect on the target nations will be unknown.
I came to this conclusion because as soon as a paradigm becomes popular clueless people who don't really understand the foundation will start using it. Then you have consultants popping up who don't know much either but come up with slick patterns to sell. This happened with OOP and will happen with FP.

Functional programming is not that easy to do right in the real world. It takes some level of abstract thinking and understanding. Not too many people in this industry really want to do this level of thinking. They just want a recipe for getting things done with the least amount of thinking.
The better solution is to stop funding them, although I wouldn't know how to locate the source.
Hadley's packages seem geared more towards data munging and transformations (I regularly use plyr and ggplot from the 'verse) and not machine learning. In my experience R has better implementations of machine learning algorithms than sklearn and rstudio is a better ide than any I found in python.
Well said.

I feel the same way about this as I do platforms. There is amazing projects on every platform. There is horrendous projects on every platform.

Taking sides just a narrows your point of view and lessens the amount you can learn.
He does have a point. The border was straight because the people living there mostly (European descendants, the locals were already disenfranchised by that point) didn't give a crap about the border.

I'm Romanian. Ask a Romanian what he'd think about straightening the border around Timisoara, thus giving it to Hungary. Many of those people would die rather than letting it happen. Those borders represent family possessions, cherished childhood memories, remnants of stories past that bond together people on either side of the border, etc.

Normal, i.e. organic borders, are messy and rarely straight.
You mean lambda calculus? That model has plenty of shortcomings. Someone recently pinpointed the problem for me. Complexity analysis is impossible in a system that is inherently unaware of time and computational cost of transition rules. Lambda calculus is inherently timeless (both in the theoretical sense because of turing equivalence and the practical sense of being unable to provide a proper framework for complexity analysis). See http://cstheory.stackexchange.com/questions/376/using-lambda....
Here's a quick overview of South African exchange control [1]. Another example is withholding tax which a number of African countries legislate.

These are blockers because they create friction for small business that wants to expand into other African countries.

1. http://www.money-transfers.co.za/south-africa-exchange-contr...
It has been noted that the relative poverty of Europe in the post-war period led to emphasis on what you call Theory B in those countries. Hardware or allocated processor time was not necessary to make theoretical progress.

The wealthy US was doing much more in the way of computations on real hardware and algorithms and complexity (Theory A) became a crucial focus for equally pragmatic reasons. You still design the new theoretical object on paper, of course...

I think I've mentioned this theory before, and I'd love some corroboration or counterexamples.
Yes and no :). The MIT authors can not sue someone for not following GPL, and the GPL authors can't sue someone for using the MIT licensed code under MIT.

There is one consideration however. One of the GPL license condition says "must license the entire work under GPL", which mean that in order to legally distribute the GPL part, the MIT licensed code will be under both GPL and MIT. As such the patent grant in GPL will cover the whole project for anyone distributing the GPL included version, and many interpret this condition as making the entire project GPL. The exception to that view is that a project can still continue license new code as MIT, and a distributor could simply remove the GPL parts when they want to use it in a MIT and BSD only/Proprietary/Patent enforcing situations.

While I have not seen many MIT projects do this in regard to GPL add-ons and patches, it is the standard model for open core MIT projects to do this in regard to proprietary add-ons. I would thus not call the existence of optional GPL patches or add-ons as "make your entire project GPL", unless the additional code is essential to run the program.
Or an IScannable and IPrintable interface (that is not the correct english word for 'something that can scan'..), and a Scanner implementing IScannable and deriving from PoweredDevice. And a copier deriving from PoweredDevice implementing both interfaces.

Then an interface is a capability.
That makes no sense whatsoever.

Yes, I know I'm banned. Hello, people with showdead on!
Yeah, you recommended a sockets library as an alternative to a distributed durable circular buffer. Not obviously clueful. Might as well recommend Nginx as an alternative to JavaScript.

I need to durably handle billions of events per day. No amount of redefining changes the underlying business problem.

Kafka, on the other hand, has been helping me solve that problem for years.
no version of C++ ever added new comment syntax that a previous version of C++ didnt have, tho
Well he did leave an ellipsis at the end of the sentence, implying that the list isn't exhaustive. He could have many more grand titles and occupations. His headshot is also a Jobs-esque, black and white photograph of him wearing a black shirt. This must be satire, right?
> I really don't understand how this even gets upvoted on HN.

Upvoter here. I upvoted because:

- I had no idea such a thing as an Afican Union existed. It seemed like a big thing so it's good to know about this (though the comment thread gave me a reality check and explained why I hadn't heard from it yet)

- From the article, it did seem like any African person can now move freely to other African countries. I hadn't thought about it explicitly, but I guess that subconsciously, I expected it to be living and working too, since that's how I know it (as a European). Turns out that I should have read the whole article instead of the first few paragraphs.

- I read below the picture: "Idriss ... kissed his passport when he received it. ... 'I feel deeply and proudly like a true son of Africa after receiving this" which is of course what a political leader would say, but it still sounds nice and makes me feel good about the progress of welfare and happiness in the world.

After reading the comment thread, I got quite the reality check (as mentioned), but I'd still upvote. African citizens are planned to get this passport too from 2020 onwards I read, which is nice to read and good to know. I know very little about Africa because the news hardly ever mentions it (aside from "hunger percentage X changed"), which is bad. It's good to learn more.
As much as I think the original article is bullshit, I still think it's not just about the brand.

According to that logic, any project that involves well recognized brand should succeed.

That is far from true. Especially in mobile games, if you look closely the ones who spend the most on promoting their games are the biggest brands. You still need to spend tons of money on marketing if you're building is just another candy crush clone or just another temple run clone.

As an example, I do not think if Niantic came out with a sequel--say a super mario version of Pokemon Go--it would succeed as much as they did with Pokemon Go. It's not just about the brand. It's also about luck, timing, and how it makes people feel.
Resources for Teaching A-Level Mathematics
Why do marriages have to be saved, and why are marriage counselors presented as respectable good guys instead of odious charlatans that prey on the weak and miserable???
Short version:

Urban environments with well planned transit corridors make useful service far more likely.

Suburban environments make 'coverage' more likely, but not effective coverage or coverage that is useful for those that would need it the most (anyone unable to afford personal transport).

Rural environments are just shafted; there can't even be the pretense of economically viable coverage.

I can't help but imagine how self-driving cars would change the above; when you can have an automated taxi take you directly from point A to point B, or maybe share one or two stops at most with carpoolers along the way.
OO is treated almost like a religion by some people. It's useful to be able to create instances of some things but the place OO fails is the "oriented" part. Code is much easier to maintain and understand written in a functional state.

If something doesn't need to be an instance, it probably shouldn't be one.

This article articulates a lot of problems I've noticed in OO code, I think it would be foolish to ignore it. My life as a developer became 10 times easier once I realised some of these same pain points and pivoted, or maybe even more so.

In school I was taught all about OO coding practice and I think he's right, they were wrong.
It's not irrational IMHO to be prepared to live a couple of days or so without power or grocery stores, as that's happened dozens of times all over the US for a variety of reasons. A total collapse of civilization on the other hand, not so much.

I will also say that I've wondered how many of the people prepping are capable of spending a day hiking in the woods with a decent pack on their back. Having a ton of stuff may not be very helpful if you don't have the physical capabilities to adapt to unexpected circumstances.
This is good info, thanks.

So then should all states require the same standards of their students? I do not see why not. But not sure how to agree on a non-stupid set of standards.
I'm at the point now where I just refuse to read any Medium post titled "Goodbye, {x}".
As someone theoretically interested in investing in things governed by Ethereum "smart" contracts, what the rules of how the contracts are executed? Obviously it is no longer just computer code that rules. There is some, to my mind, ad hoc process involving politics. Sorry, but my money is not touching that system. No thank you.

The DAO was literally the "to big to fail" investment of Ethereum.