skysight-inc/HackerNews huggingface dataset:
Separation of concerns, reuse, and modularity are the key principles here.

I'm a fan of hybrid OO/functional approaches, use classes but minimize side effects. Return new objects when relevant, etc.

It's a mistake to misjudge OO based on some over-bloated java-design or some underdesigned implication.

The phrase "everything in moderation" largely applies.

Given, if you are doing things in C, and passing a structure as a first argument, you are getting most of the way there.

I think inheritance is frequently over-applied, interfaces are a great idea (or even just duck typing), but not everything is an inheritance hierachy.

Rather, encapsulation is the most powerful concept.

Much of what gives OO a good or bad name is in the hands of who is doing the architecture - abstracting things too early leads people to occasionally go to the extreme other side of the fence.

There's a balance to be had, and advantage to learning from multiple schools of thought.
Helpmonks Has Been Selected for the the Next Web USA Conference
No, but the party whose logo is on the posters did get voted by the general Swiss population to 54 out of 200 National Council seats...
Matt's article (and the linked one of Scott Adams' advice) is a good and basic foundation.

Adding to the reading list, I'd very strongly recommend the following:

A Random Walk Down Wall Street by Burton G. Malkiel lays out the basics of portfolio diversification. http://www.powells.com/biblio/1-9780393340747-0

The Great Crash: 1929 by John K. Galbraith tells the story and aftermath of the biggest stock market catastrophe of the past century. It is a slim, highly readable, and incredibly informative book. Parts of it read as if it could have been written yesterday. Much of it provides a background and context on the Crash that corrected a great many misunderstandings and holes in my own knowledge. Galbraith has a dry humor and is a strong (and often disliked by insiders) critic of much of the establishment. Fans of this book are recommended to view his video series The Age of Uncertainty.

http://www.powells.com/biblio/1-9780395859995-9

http://www.powells.com/biblio/1-9780395259474-2

http://fixyt.com/watch?v=KGSID_Uyw7w

And adding to Matt's advice: have savings. The flexibility offered by "fuck you money" as Humphrey Bogart and others have noted is tremendously valuable.
Am I the only one who's uncomfortable with the idea that political speech is kosher, but responding to political speech in a way which is "bullying" is not?

I feel like we should do more to separate the abusive harassment (which is clearly not okay) from other real-life consequences, maybe including losing friends or a job, that come with holding and furthering a political belief. The latter seems like it could plausibly be a feature of a well-functioning political discourse.
"Art is hard!"

It is common knowledge that math is hard. But it's not common knowledge that art is just as hard. Did you ever try to compose a song like Beethoven, to paint a picture like Van Gogh or to rap like eminem? Probably you did, but did you succeed? If you don't have affinity with a task, you will find it hard to invest your capacities to finally get a good result. It's the same with mathematics.

So why do people see mathematics as special? It is not because it is exceptionally hard. It is because of two reason.

1. We can determine the correctness of a piece of mathematical work.

2. Society forces everybody to learn mathematics to a much higher degree than art.

So what can we do about these points? In regard to the first, I'd say that it's an advantage of mathematics and other areas should take it as an ideal.

The second reason is a consequence of the unreasonable effectiveness of mathematics to predict nature. There is nothing I can say about this besides observing it.
It's F3, but that wouldn't have worked, because he needed a message to be logged (otherwise they'd have to type the coordinates in).
I've read it before. It's a fluff piece for Erlang. You can tell that it's not a serious argument since he doesn't acknowledge why things are done a certain way in OOP and what the advantages are. He obviously things the cons outweigh the pros, but Armstrong doesn't have to feign ignorance on the matter.
I'm certain this is an unpopular opinion I see Minecraft as an incredibly buggy mess. Not for it being unfun, because it is, a lot of fun but for years this game has been plagued with a litany of problems.

[Edit: Maybe it isn't an incredibly unpopular opinion I'm just used to people who play games try to cut you when you critique.]

Shortly before horses were added I thought something was going to be done to help the finer OCD-minded fans in the community like me. After horses were added I realised that was not going to happen.

For example a bug cropped up that would lose a 'tick' of redstone power once per transfer down a circuit. Only if the pulse was shorter than three 'ticks' long. Making anything requiring use of a precision circuit impossible. That as far as I know was never actually fixed.

Microsoft own the property I'd like to see them have a go at remaking it. I'm absolutely positive there will always be holdouts over the original. But Minecraft by itself doesn't seem like it would be all that complicated a game to remake.

I'd play it.
Simple advice: just use Wealthfront and take all of this advice at once, automatically. http://wlth.fr/1fsdN6t
Brilliant work!!
Brendan Eich, would be CEO of Mozilla.
I'm in some programming class in france. The teacher argued that OOP and encapsulation makes programs more secure. It really felt like a political statement.

The day I understood that class and struct are merely the same thing, I questionned the purpose of private: and public:.

To be honest, I think the sole purpose of those construct is just to hide proprietary code when you sell libraries and deliver a set of binaries and headers, to force the compiler to forbid you from writing to, or using protected member. It's really moot. It's just a coding practice, it's not some grand way to think and construct applications.

OOP is nice if you want to create some non standard simple type, like Vec3, or when you want to use an interface for something quite complex. Templates are a good extension of OOP, but it's not used that much, even while the STL justifies the existence of templates. But other than that, when you want to make an end-user application which is not a library, I think OOP is not that much useful. Too few programmers write libraries, most just write applications, and applications don't need OOP.

If you use OOP to pretend that your code is reusable, please, first check if what you're making really is worth reusing, chances are it's not.

TL;DR: OOP is good to design bricks. Most coders are not brick designers, thus most programmers should not touch OOP that much.
That doesn't appear to be accurate. #3 Fairfax County, VA and #9 Montgomery County, MD both have over a million people which puts them in the top 50 counties in the US by population. The others are smaller, but many are still much larger than Los Alamos. #4 Loudoun County, VA has 350,000, #6 Howard County, MD has 290,000, #2 Arlington County, VA has 227,000 and #7 Alexandria City, VA has 140,000.

It's also worth mentioning that those six counties are all contiguous with each other. That's a combined total of over 3 million people. That's far too many to dismiss as simply a statistical outlier.
The Nerd vs. Bro Wars
It was taught that way to me in sex ed class (in the US); you can get herpes from skin conact with a condom and no signs of sores. Needless to say, we were all terrified.
Those posters (the first two anyway) came from the largest and most powerful swiss political party. I don't mean to say that the swiss are racist, but we can safely say that there is quite serious tension in any country whose largest party is putting out posters with white sheep kicking out black sheep.

Any swiss people reading: does the phrase "black sheep" have the same meaning in the various swiss languages as it does in english?
"live like a homeless man" is going to the extreme. But it's either retire in 10 years, or 30.

You need sacrifices to get a reward.
Leave Wikipedia alone..Its doint great :)
But a cool UI I spent 10 min there..
Do you know if it is possible to use F# on windows without having to install several GB of crap? I'd like to be able to try it out, but the same way I would try any other language, install the compiler and try it out. All I can find is huge packages including visual studio and all kinds of other junk.
As in most Western European countries, there are some very good reasons to limit specific immigration.

Specifically the immigration of people that are hostile to the local culture, and act out that hostility through various forms of aggression.

Citing immigrant population statistics is tried and proven way to cloud the issue. In the Netherlands for instance, the largest groups of immigrants are Germans. You don't really believe the immigration debate is about them, do you?

I'm guessing a fairly large part of the UK immigrant population is Western European. Those, plus migrant workers in science, technology and finance, kind of skew the stats.

Calling everybody who points out that there's also another group of immigrants who's net contribution isn't exactly positive "neo-fascists" is extremely counterproductive.
I've since switched my research focus to machine learning (look up latent Dirichlet allocation, very cool stuff). I find a lot of parallels between the two fields: prob. theory, matrices, uncertainty, ...

I'm still following quantum information theory research, but more as a spectator from the sidelines. However, a couple of weeks ago I had to come back to quantum info. theory to "defend" my academic reputation. Our colleagues from TIFR found a bug in one of our papers (http://arxiv.org/abs/1111.3645v3) so my coauthor and I had to fix it. It was kind of cool to see I hadn't "lost my quantum skills" after two years of running a business. I guess, once you go quantum you never go back? :)
Surely your monoid example should be a Sigma type (`exists`), not a Pi type (`forall`), since a monoid is a specification of data for a single type A, not for all types A. Indeed, the empty type has no monoid structure, so the Pi type you wrote down is necessarily empty.
Hopefully this is doable! I believe Jeremy's currently having a go at getting a build script working that will:

1. check if PA is already installed
2. if not, will download and install PA.

The pull request is open and is here if you(/anyone) want to check it out / comment / contribute:

https://github.com/jeremyletang/rust-portaudio/pull/37
How much programming do you do? If you're a non-programmer who wants to write software, there are probably better things to do than read a bunch of CS textbooks.
Yes for the german speaking part. I can't say for the other languages.
And these posters stirred quite a controversy back when they were put up.

Edit: seeing as the first poster is in french, I'd guess it means the same there too.
Show HN: Fifty app – Live in-game win probabilities for NFL games
In the early days of both Engine Yard and Kongregate Ezra and I worked closely on solving some problems during high pressure moments. He was smart, dedicated, and genuine. He worked hard to not just solve problems, but to communicate and teach everyone around him.

We lost touch over the years, chatting occasionally and always saying "hey, we should meet up sometime." I'm sorry now we didn't.
If you're using public and private for security you've missed the point. The idea is to help other developers use your code correctly by only exposing the methods they should use, instead of everything.
Have you tried https://bugzilla.kernel.org/?
OOP is still good for gaming and simulations in general.
Closure? Common Lisp Object System? CLOS network topology?
The spire is there so that the building is respectfully not taller than the old towers, but still can win the stupid "tallest building" guiness record. Typical play to vanity metrics.
Probably nothing, but it's worth a try.
Functional vs OOP isn't really about the type system - Clojure is a functional language and it's dynamically typed.

The main value of functional programming is working with values and isolating mutation. When you deal with just immutable values your code maps to distributed systems naturally which is why functional programming is becoming more popular with the advent of cloud and distributed computing.
These short-term benefits are minuscule compared to both the costs and the long-term benefits. There are more cost-effective ways of developing better frying pans, pillows and small blinking lights than running a space exploration program. OTOH, there is no other way to ensure long term survival of human civilization than diversifying our real estate away from one planet.

The only reliable way to argue for space exploration is by explaining how important the long-term benefits are.
>I am on the opinion that just because the haskell type system is awesome, and the java typesystem is traditionally unflexible, it doesn't mean functional > OOP

No, it certainly does not mean that. And there is a tendency to misattribute the benefits of FP to the type system and vice versa. So remove the type system from the equation. The fact that erlang is better than all the generic untyped OO languages suggests that yes, FP is better.

>I figure as code evolves, it generally takes 3-4 rewrites to get class hierarchies to a point where it matches your domain

That's not a good sales pitch for OOP.
The correct term is "horizontal alignment", not "vertical alignment". It's impossible to vertically align code unless you're using a two-dimensional visual programming language.

https://google-styleguide.googlecode.com/svn/trunk/javaguide...

Google Java Style

4.6.3 Horizontal alignment: never required

Terminology Note: Horizontal alignment is the practice of adding a variable number of additional spaces in your code with the goal of making certain tokens appear directly below certain other tokens on previous lines.

This practice is permitted, but is never required by Google Style. It is not even required to maintain horizontal alignment in places where it was already used.

Here is an example without alignment, then using alignment:

private int x; // this is fine
private Color color; // this too

private int x; // permitted, but future edits
private Color color; // may leave it unaligned

Tip: Alignment can aid readability, but it creates problems for future maintenance. Consider a future change that needs to touch just one line. This change may leave the formerly-pleasing formatting mangled, and that is allowed. More often it prompts the coder (perhaps you) to adjust whitespace on nearby lines as well, possibly triggering a cascading series of reformattings. That one-line change now has a "blast radius." This can at worst result in pointless busywork, but at best it still corrupts version history information, slows down reviewers and exacerbates merge conflicts.

https://developer.mozilla.org/en-US/docs/Web/CSS/vertical-al...

The vertical-align CSS property specifies the vertical alignment of an inline or table-cell box.

Values (for inline elements)

Most of the values vertically align the element relative to its parent element:

baseline: Aligns the baseline of the element with the baseline of its parent. The baseline of some replaced elements, like <textarea> is not specified by the HTML specification, meaning that their behavior with this keyword may change from one browser to the other.

sub: Aligns the baseline of the element with the subscript-baseline of its parent.

super: Aligns the baseline of the element with the superscript-baseline of its parent.

text-top: Aligns the top of the element with the top of the parent element's font.

text-bottom: Aligns the bottom of the element with the bottom of the parent element's font.

middle: Aligns the middle of the element with the middle of lowercase letters in the parent.

<length>: Aligns the baseline of the element at the given length above the baseline of its parent.

<percentage>: Like <length> values, with the percentage being a percent of the line-height property.
(Negative values are allowed for <length> and <percentage>.)

The following two values vertically align the element relative to the entire line rather than relative to its parent:

top: Align the top of the element and its descendants with the top of the entire line.

bottom: Align the bottom of the element and its descendants with the bottom of the entire line. For elements that do not have a baseline, the bottom margin edge is used instead.
What is FO?
Mercedes F1 uses a similar concept they separated the hot and cold parts of the turbo and connected them with a long shaft. The vehicle is a hybrid and uses the battery to spin up the turbine at low speeds when there is less exhaust.

https://www.youtube.com/watch?v=I7MOlYhLZDY
The Few, the Rich: Chinese Who Like Uncle Sam
Public and private has nothing at all to do with hiding proprietary code. Encapsulation is important regardless of whether you use OOP or not. Even if you program something alone that will never be derived/re-used, you should strive to have clean boundaries between subsystems. You also want to make things read-only unless they should change (most things should not)

If you make everything public and writable you have to spend a lot of thought on things that a compiler could help you with so you can focus on solving the problem. Much like using a type system.
Nothing, but it reduces the conditions of the variables, which is handier than nothing.
I wonder if the reason we find slow motion in movies interesting (e.g. makes things more salient) is related to the time-perception-slows-during-startles thing.

(Assuming the startle slow-down is a side effect of the brain kicking up retention, based on the current experience having valuable information, we might learn to implicitly associate side-effects like time dilation with "this is valuable experience information". But mostly I have no idea what I'm talking about; I'm not even sure it's a well-formed testable idea.)
So... Functional reactive programming?
Take a look at option 3 on this page, have not tried it myself, since I use VS daily http://fsharp.org/use/windows/
Yes. If you can generate code on the fly [1], you can handle a subset of cases very efficiently.

[1]: JIT. Just in case some people confuse concepts, I'm not talking about JVM, virtual machines and such. Just plain runtime machine language generation.
Read "Functional JavaScript" and "JavaScript Allonge" books from this list http://bahmutov.calepin.co/javascript-books.html

Also, I have been blogging a lot about functional programming in javascript with practical code examples http://bahmutov.calepin.co/tag/functional.html

In particular how to go from imperative style to functional to reactive in JavaScript http://bahmutov.calepin.co/journey-from-procedural-to-reacti...
That's an excellent use of Composition. Most people think inheritance hierarchies are necessary for OO, but composition/aggregation is a much better way to do things.

A lot of the complaints I've read about OO center around people doing stuff that they later determine they didn't need to do, and then being stuck with it because it's in the middle of an inheritance hierarchy. Modern OO design would center around decomposing each class in the inheritance hierarchy such that the decomposition produces small subsets of shared behavior, and then composing those together to create the actual object. As a bonus you can still produce run-time polymorphism without crawling an inheritance hierarchy.

Composition in an OO system is very much like composition in mathematics. Two objects are combined to produce the desired behavior.

A lot of people crap on the GOF book because the patterns in it are either obvious or useless, but reading it does teach you some useful concepts, and for many people it will be their first direct exposure to something other than inheritance. Composition/Aggregation are great takeaways from that text.

As an example of a crappy inheritance hierarchy, a developer 20 years my senior had this four-layer inheritance hierarchy to represent 3 different data types. After he gave it to me I spent 15% of my time convincing him to let me eliminate half the classes he wrote. The worst part was that he was inheriting and then in the subclass he was writing functions that were semantically identical to superclass or cousin-class functions, but with different names. After I eliminated all that I was able to use templates to hide a lot of the mess.

OO design should be done according to the YAGNI principle--You Aren't Going To Need It--and its corrolary--do it as soon as you need it.
Haven't consider that. But the windows version is based on node-WebKit which has a built-in support of cross-platform, so there maybe a Linux version in the feature.
The correct term is "horizontal alignment", not "vertical alignment". It's impossible to vertically align code unless you're using a two-dimensional visual programming language.

https://google-styleguide.googlecode.com/svn/trunk/javaguide...

Google Java Style

4.6.3 Horizontal alignment: never required

Terminology Note: Horizontal alignment is the practice of adding a variable number of additional spaces in your code with the goal of making certain tokens appear directly below certain other tokens on previous lines.

This practice is permitted, but is never required by Google Style. It is not even required to maintain horizontal alignment in places where it was already used.

Here is an example without alignment, then using alignment:

private int x; // this is fine
private Color color; // this too

private int x; // permitted, but future edits
private Color color; // may leave it unaligned

Tip: Alignment can aid readability, but it creates problems for future maintenance. Consider a future change that needs to touch just one line. This change may leave the formerly-pleasing formatting mangled, and that is allowed. More often it prompts the coder (perhaps you) to adjust whitespace on nearby lines as well, possibly triggering a cascading series of reformattings. That one-line change now has a "blast radius." This can at worst result in pointless busywork, but at best it still corrupts version history information, slows down reviewers and exacerbates merge conflicts.

https://developer.mozilla.org/en-US/docs/Web/CSS/vertical-al...

The vertical-align CSS property specifies the vertical alignment of an inline or table-cell box.

Values (for inline elements)

Most of the values vertically align the element relative to its parent element:

baseline: Aligns the baseline of the element with the baseline of its parent. The baseline of some replaced elements, like <textarea> is not specified by the HTML specification, meaning that their behavior with this keyword may change from one browser to the other.

sub: Aligns the baseline of the element with the subscript-baseline of its parent.

super: Aligns the baseline of the element with the superscript-baseline of its parent.

text-top: Aligns the top of the element with the top of the parent element's font.

text-bottom: Aligns the bottom of the element with the bottom of the parent element's font.

middle: Aligns the middle of the element with the middle of lowercase letters in the parent.

<length>: Aligns the baseline of the element at the given length above the baseline of its parent.

<percentage>: Like <length> values, with the percentage being a percent of the line-height property. (Negative values are allowed for <length> and <percentage>.)

The following two values vertically align the element relative to the entire line rather than relative to its parent:

top: Align the top of the element and its descendants with the top of the entire line.

bottom: Align the bottom of the element and its descendants with the bottom of the entire line. For elements that do not have a baseline, the bottom margin edge is used instead.