skysight-inc/HackerNews huggingface dataset:
I've found that if you approach OOP from a more pragmatic point of view, metrics like the sizes of classes mean very little: the point of classes is to encapsulate code+data so they can be reused to avoid duplication, so it feels obvious to me that if you see (non-trivial) functionality in a class that is likely to be reused in the future, then extract it into another one, but if you don't then there's no point in doing so, because it will only increase the overall complexity. Same for OOP in general - it's a tool, use it when it makes sense and simplifies the design. Sometimes you don't need a class, and sometimes a function doesn't belong in one because it does things across several, so all the "which class should this function go in" questions have a straightforward answer to me: if it's not immediately obvious which class it goes in, it probably doesn't belong in one. I mainly use Asm/C/C++ so I have the luxury of doing this, but I can see how some of the "more-constraining" languages make this more difficult.

All the examples I see are one-way towards simply creating a million single method classes.

That's a phenomenon that I've definitely seen a lot; often with the accompanying obfuscation that the method bodies have only one or two statements in them, that just calls into some other methods. It may look like it's made the code simpler locally, but all it's done is spread the complexity out over a wider area and increased it. This isn't "well-designed" or "straightforward", it's almost intentional obfuscation. I've seen this effect most with programmers who were taught OO design principles very very early, possibly before they even had a good grasp of concepts like procedures, loops, and conditionals. "When all you have are classes, everything turns into an object."
Depends on the design, YMMV, etc. etc. But Consumer Reports found that the Ford Fiesta and Mazda 3 returned 1 mpg better when specced with an automatic.

http://consumerreports.org/cro/2012/01/save-gas-and-money-wi...

If you choose the CVT in the Nissan Versa, you'll get 5mpg better economy over either the manual or the automatic choices.

http://www.edmunds.com/fuel-economy/five-myths-about-stick-s...
That seems in line with the design more so than uploading css or js.
> but has come to describe both the hip person and the hipness itself. Phrases like "hipster shoes" or "hipster band" come to mind.

(Note: Grammar quibbles ahead.)

I don't think your examples really support that. Saying "hipster shoes" doesn't require the shoes to be hip at all, it only means they are a kind that is popularly associated or made for hipsters. Naming something "Hipster X" is just an case of attributive nouns.

Similarly, consider a "Programmer Chair" being sold... Surely nobody is trying to say that the chair is able to code, or that the chair is itself a form of code, or anything like that, right?

Instead, "Programmer Chair" means a chair that is associated-with or belongs-to Programmers.
Cat Kill Dog
take the $10 million, start another company. everyone knows it's about the execution, not the idea.
I assume you mean free cloud services. If you're a paying customer with a contract, it's harder to pull that stunt.
Most of those principles can be bent to mean anything out of context. This is why citing principles alone can never be an argument for or against a certain design decision for a specific project situation when it comes down to it.

When you can't stop citing Uncle Bob slogans or Martin Fowler anti-pattern definitions, you're exercising Mantra-Driven Design. You've given up thinking, and you're making project decisions for religious reasons, citing what various deities said, and interpreting it like the Devil interprets the Bible.

The solution to OP-s problems:

1. Define a clear, minimal interface between "Stan's" classes and your own classes.

2. Communicate via that interface (when I say "interface", it doesn't have to be one interface type, BTW), and only via that interface.

3. Let everyone code their classes as they wish, and let the results speak:

- If either developer produces significantly more defects and issues over time than the other, have the decency and courage to learn from your team-mate. Because the interface is defined (see points 1, 2) it means you can refactor all code that isn't part of the interface. You can add classes, remove classes and you can assign from zero to infinite responsibilities to your classes, do whatever you want.

- If not, then this is one more instance of a valuable lesson: there's more than one wrong way to do things, but there's also more than one right way to do things. Maybe both developers have a good approach, they're arguing over B.S.
Not it, but it does about the same thing. Thanks!
Example of Covert Redirect and Early Warning bug
Tindie says forget Kickstarter
Two things strike me.

1. Are these people just general 'early adopters'? Anyone who's willing to try new stuff is going to use products that ultimately fail in the marketplace. This is the whole 'Crossing the Chasm' story.

2. Are these people merely flitting from product to product? In other words, they drink the new Cola A now but will immediately switch to even newer Cola B tomorrow. Thus, they're not really reliable long-term customers. The article gives the impression that this is not case but it's not that clear to me.

In any case, this comes down to a question of market size. If that niche is big enough, there may still be a profitable business in it. For example, how many people do you think need a service that makes Bingo Cards?
Sounds very similar to logic mazes (classic example for me is Theseus and the Minotaur)
I would be okay with no support (explicitly mentioned) vs no support where that's not implied to be the case.

<rant>

There's nothing that sucks quite so bad as a link on a project page which says "Go here for help" - you do so, then find out you are in an IRC channel with 500 people, none of which ever speak, any questions are simply lost in the ether among the hundreds of join/quit messages per hour.

In other words, don't say you provide support if you don't intend on giving it. At least a message along the lines of:

This is provided as is, where is, if it breaks you get to keep both parts

..forewarns me to either not waste my time, or be prepared to waste quite a bit of time.

As it stands, now I've wasted time, and now I hate your project for being an unsupported piece of shit, and now I hate the developers for fucking lying about it.

This is a literal experience I'm fighting with right now.

</rant>

And worse, every time a user encounters this situation, it tars all of FOSS with the same brush. It's what leads to people joining companies and remembering their experience and telling people not to use X Y and Z due to that bad experience.
At this point, there's no question I'd take $10 million. Given that 95% of startups fail, there's no reason to believe that mine would be any different. There is a difference between good luck and skill.

If I really had the itch to start my own company, I could use the $10 million to pursue another idea and never have the need for VC.
Take the $10 million, F* off the tech industry and relocate to Central America to start an "off the grid", "self sustainable", "green" retreat.

F* Startups.
In the absence of finding the time to really tear it apart, it seems that there are a few false choices in the article. I don't think a class that fulfills SRP necessarily means a tiny single-method class. It could mean a collection of methods that each do one conceptual thing, at one abstract level of understanding, but where the class and collection of methods is still cohesive.

The example of the client needing to instantiate B to pass it to A's constructor seems like a poor example of tight coupling. The only reason to instantiate B is because A needs it. The client doesn't literally need to know about B, it simply needs to know how to construct/build A. This could be done through a factory or service locator, or it could be done by A having B autowired into it, which would free the client from having to instantiate B directly.

I do, however, agree that SRP is poorly defined in most of the resources you find, so if anyone has links of case studies of applying it properly, they'd be interesting to review.
I would be interested to see a binary size comparison along with the speed comparison. Is there a trade-off of speed for byte size?
http://www.kuro5hin.org/?op=displaystory;sid=2001/6/19/05641...

Windows used to, and perhaps even still does, incorporate some bsd-licensed code in its network stack. That's a plausible explanation for the unixy path to the hosts file.
arguab.ly was arguably the best
Should the existing property rights only last as long as current owners? As soon as the property ownership pass to another person/entity, the current law should apply?
This is a no-brainer. I have 20 or 30 ideas that I could turn into potential companies. With $10 million I'd be free to pursue them, rapidly making each fail. If none succeed I still have a living, and if one succeeds then I've got even more.

Edit: OK, I missed something. You're talking about some show I've never seen with parameters I can't know. As you phrase it it's still a no-brainer, but there are hidden factors here that I don't know.
XplorationApp – REST for Apps about Space Missions (SpaceApps Intl Challenge)
I'm sure their benchmarks are more than adequate. In either case, if your barometer for what makes a good PHP framework is based on performance, you certainly wouldn't be choosing Symfony. If anything you'd go for for HHVM or Phalcon.
What algorithm is that?!
How do you query your database?
There is still a bunch of new PHP projects that use mysqli::query, which is like playing with fire compared to using PDO::prepare
If you are still using mysqli, changing to PDO for future commits might help reduce chance of creating these kind of vulnerabilities.
What documentary is this?
I think the biggest difference is that Flynn is building a scheduler modeled after Google's Omega paper (what they call Layer-0) along with the Heroku-style platform components (which they call Layer-1) -- all written from scratch in Go.

Deis, on the other hand, is laser focused on the platform problem. We're also not shy about using off-the-shelf components where they make sense. For example, we believe the distributed scheduler/init system is best left to others like CoreOS/Fleet.
>> The future is pretty irrelevant, so asking to design based on future requirements is uncanny.

The future is irrelevant? That's exactly what design is for -- to protect you from the future. If you didn't care about the future there would be no need to design at all.

A good way to evaluate various candidate designs is to imagine future use cases and ask which design holds up better. A good design will respond really well (ie., require fewer modifications) to novel use cases. Many people think this means design starting with future use cases. But you really just need to design with good principles. Future use cases are useful however at objectively evaluating designs and resolving arguments, such as Which design is better for futures that we care about?

>> Stating that "binding business rules to persistence is asking for trouble" is flatly wrong. Au contraire, It's the simplest thing to do, and in most cases any other solution is just adding complexity without justification.

Everything is a tradeoff. It doesn't make sense for many cases (hacking, etc) to avoid the simplest thing. But if you are building a project that's longed-lived, I can give you countless examples of how coupling business rules to model objects resulted in pain and copious paper cuts.

For me, I'll always decouple them. Why? Because it costs me nothing extra to do it and I have internalized the value in this principle from experience.

>>> Not all applications are big enterprise-y behemoths that benefit from Perfect 100% Decoupling™

You're right. It depends on how much you care about your future. Do you want your codebase to respond with agility to the future. Or are you okay with increasing your technical debt?

>>> Therefore, classes should be:
>> small enough to lower coupling, but
>> large enough to maximize cohesion.

Not sure I understand. Author seems to suggest these two are in contention with each other.

>>> Coding is hard and principles should not take the place of thinking.

Absolutely. There are many cases where the rules are to be broken. Systems with too much flexibility are just as bad as monolithic ones. It's an art what we do.
Fair enough. I think that's where we differ - I feel the word isn't quite as ill defined as you suggest, though it is commonly misused. A conversation for another time :)
And suddently they hear a SHHHHHHHHHHH...
$10m is a lot of money, a life changing amount. Take the money every time.

On the other hand I've been offered $250k for one of my side projects. I turned that down as $250k isn't life changing and I still have a lot I want to do there, things that mean more than that dollar amount mean.

If the $10m figure were reduced to $0.5m or $1m, then I think a lot more dilemma would be introduced.
This is a great way to make sure you only hire people who are just like you.

I'm not a fan.
I'm new to this area but am really interested. What do people usually use other than sysdig to try to see if/how their machine has been compromised?
Well, the cookie should not contain anything computable by the user. You could use an encrypted cookie to store session information to save a round-trip to the DB. In that case it should be impossible for the user to derive the key or modify without detection (so HMAC-SHA256, GCM, Poly1305 or whatever authentication mode is fashinable/applicable.)
Even the hardcore Whedon fans didn't like Dollhouse very much. Just a handful of episodes, really.

I haven't watched Agents of SHIELD at all yet, because the early episodes have had an even worse reception on whedonesque.com, though that seems to be improving lately.
> At Neumitra, we build-in anonymity before we get a single bit of data.

How do you do this? Have you asked people to try de-anonymizing your anonymous data?
HP Manager's LinkedIn profile May Give Clue As to HP's 3D Printing Aspirations
10M is way better. Not only is it enough to bank and live off capital gains, it's also a 2.5 times higher valuation than 5% at 200k.

The reverse may be interesting. 1m or 200k at 5% is harder.
wow, really sorry to have set off your spam-alert. I think their solution is really awesome and a great complement to our tool. I couldn't have made my point without mentioning what my browser plugin does, which is why I included the name (but no link here, mind). If two posts makes me a spammer, then so be it, but I'm mostly just trying to encourage mailpin to consider the opportunity to collaborate with browser plugin companies, which is something they may not have thought of.
That's still a bit too vague for me. What does it mean? That they won't use the content being created in the system in any way? Does it mean that when a student signs into Classroom with their Google account, Google won't track or record the sites, apps and pages they use? Does Google anonymise any data it captures? Or does it tie your activity to your account? When Google says "Google Apps for Education users own their data" does that mean I can remove all my history of activity and sites visited from Google's servers?

I know lots of Hacker news readers consider this a complete non-issue, but I don't think these are unreasonable questions to ask of a company that has far greater oversight of people's online behaviour than anyone else.
Discussion: https://news.ycombinator.com/item?id=7684634

Also:

https://news.ycombinator.com/item?id=7673745

https://news.ycombinator.com/item?id=7678428 : 4 comments

https://news.ycombinator.com/item?id=7682740

https://news.ycombinator.com/item?id=7684413 : 2 comments

https://news.ycombinator.com/item?id=7685649

https://news.ycombinator.com/item?id=7686000
Why Your Code Is Broken On Production
Not even worth thinking about unless you're already very wealthy. Take the $10mil.

It's not an "either/or" situation. Take the $10mil right now, start another company.

Promoting the idea that it's preferable or "cool" to start your own company given these choices is ridiculous, and I hope nobody learns the wrong thing from this show because of it.
Somewhat in relation to these things that are related, pipeline is a DSL for manipulating JSON in a Unixy manner.

http://github.com/qnectar/pipeline
MLB Lineups App
$200,000 for 5% of the company is only a $4M valuation (assuming not contract hijinks).
If you use a country code TLD, make sure it's on Google's list of generic ones (e.g. .io):

https://support.google.com/webmasters/answer/1347922?hl=en
An attacker would have to modify the actual gem files in a way that would yield the same checksums, since the hashing is one way only.
> Tabula Rasa

Using Latin is much cooler, and as bonus, you can smugly snigger at other people. How do you really spell the "rasa" part? With a hard R?
I guess if they published their interview technique it becomes useless.
Also, added to README.
FBI is looking for owner of this Facebook profile
Take the $10m, then R&D for a new algorithm, sell it for another $10m, repeat. Life's good.
I suggest you read SICP and gain an appreciation for higher-order functions. Once you do, you will probably have answered your own question.
http://mitpress.mit.edu/sicp/
I'm not really sure the law matters that much as ethics do in this case. If the surfers are doing something bad or illegal, fine, but otherwise: DBAA.
Right, the F-1 lists Jack Ma as "Executive Chairman", so he's leading the board rather than the company.
In other words, your customers’ passion should be fire rather than fuel.
They did release it under MIT. It's right there in the first sentence.
The APIs allow developer to do significantly more than just be a "Twitter clone". Just a few examples:

File storage: https://directory.app.net/app/182/filebase/

Mobile group chat: https://directory.app.net/app/238/whisper/

Personal memory log: https://directory.app.net/app/229/ohai/

IRC style chat rooms: https://directory.app.net/app/145/patter/
Sorry, I was vague. I didn't realize there was a penalty system that flagging or modding could invoke. I had never investigated it and always assumed that if a post was flagged then it'd just be removed from HN.

In retrospect the system makes sense as is, but I'd just never considered it.
Do I have to pay taxes on the 10M? :P
This is great. One use case: my grandma who struggled to learn how to use email can now make websites.
Nicely done. Feedback:

- Where's your privacy policy detailed? With the nature of the service (gathering email addresses etc) you could head-off lots of questions with that.

- A default serif font drags anything down. For me personally I'd prefer another font.

- You sensibly replace emails, but other links like 'unsubscribe' remain intact, which could be problematic (don't worry, you'll still get your costco emails although it can sometimes lead to real emails/names).

- I guess grouping and parsing is the next step, i.e. process them and provide features around them a la tripit. Is that the direction you might take it?
> when somebody names the variable SFU in his source examples

I have never seen SFU used as a variable name, whether in source examples or in production code. And were I to see that, I would never even consider the possibility that it's trying to reference the acronym STFU. Because that doesn't make sense. Googling for "SFU" as slang comes up with a reference suggesting that it could potentially mean "So Fucked Up", which I'll grant uses the same swear word but otherwise has a rather different meaning than STFU. But that does not seem like common usage. And when not explicitly looking for it as slang (after all, source code variable names are typically not slang), it is a lot more likely to refer to many other things, including various universities and Services for UNIX.

As near as I can tell, you're basically just making stuff up at this point.

Also, I don't think you understand what "metasyntactic" means. WTF in TheDailyWTF is not "metasyntactic". Neither is naming a variable "SFU", regardless of what you intended to convey with that name. A metasyntactic variable, by definition, is a placeholder name without meaning that is intended to be substituted with some other context-appropriate thing. "foo" is the most common such variable, "bar" is the second most common. You cannot simultaneously claim something is metasyntactic and also claim that it has meaning.
Ugh. Like 10 times the price of DigitalOcean.
I think you are focusing on the wrong phrase in the definition of SRP. You are focusing on reason for change without the context of responsibility. The way I read that definition is: if a class has more than 1 responsibility then making a change affecting any one of those responsibilities will require the class to be recompiled where as if those responsibilities were broken up in different classes making a change affecting one responsibility would not affect the other classes.

Hence a bug fix does not constitute a "change" since it does not change the responsibility of the class, neither does a refactor for code clarity or performance improvements. The purpose/responsibility of "what" the class does, does not change when you do any of those things.

"sometimes a class with more reasons to change is the simplest thing" Could you give an example of this? I can't think of one instance.

"Stating that "binding business rules to persistence is asking for trouble" is flatly wrong. Au contraire, It's the simplest thing to do, and in most cases any other solution is just adding complexity without justification" Now this statement here is flatly wrong precisely for the reason specified in the Uncle Bob's example. Let's do a thought experiment. Consider that you have an Employee class that is a black box to you. Someone else wrote that code and didn't have any exception handling logic in their code. The Employee class did business logic and persistence control. When you tried to use the class there was an error. Now which part of the class was faulty? The business logic part or the persistence control part? Now consider that you needed to use the same Employee class in another project but it needed a different set of business rules but the same persistence control, you would not be able to use this Employee class you would have to create a new one and duplicate your persistence control code.

Design principles have been developed to make sure that code written is maintainable, extensible, clear, comprehensible. Sure me as a single developer who is working on a simple project, who knows what each of my class does and has a small enough code base such that I don't need to separate the application into layers (e.g. call my database directly from my view because I just need this one value and don't want to write a couple of classes to that) can indeed write classes that have more than 1 responsibility. There's nothing to stop you but it does violate the SRP which will make it tougher for someone else to come in and maintain your code or extend it.
A compression algorithm soo good it solves every problem in the world :)
At least compared to the valuations of instagram, pinterest and so on this one actually makes sense.
Regardless of the law, I just don't understand why Khosla is going into this PR disaster. Which entrepreneur who has a choice (and 99% of successful entrepreneurs have a choice) between Khosla and another VC would choose Khosla after that?
200B valuation is actually very reasonable: it's PE would be roughly 35 compared to Amazon's 400. Now the big question which I have not been able to figure out from their S1 is why they have so much more margin compared to Amazon, given the two are operating more or less in the same space. Is that because US is a free (and more efficient) market, where China has more artificial barriers for other players?