skysight-inc/HackerNews huggingface dataset:
Thanks for pointing out that it's from 2013. I was reading this
and thinking I was sure I'd played spaceteam much longer ago than a year.
Yeah to clarify: you or your team members MIGHT build something awesome because you and they are awesome, but the chances are the custom framework was built by your boss 10 years ago and the server has already been hacked.
It's kind of strange, but I came up with the same (more-or-less) rules while I worked.

Especially interesting, was that I worked at a place that "required" meetings pretty much every day. I just decided to start skipping them, all of them. Absurdly, nothing happened. I was able to complete all of my work by Tuesday afternoon (skipping the 3 monday meetings).

Then I would meet one-on-one with my boss (who agreed that I could try this out), show him what I did, and by wednesday I started something new. Within a month I convinced three of the teams (3 - 8 people) to start doing this. It was pretty awesome it was to improve productivity by just trying to skip meetings I didn't want to attend anyways.
While there are a couple of guys still shaving that yak, today it's more or less Jetty micro services all the way. Still Java but a huge step forward from the J2EE abstraction astronaut crap you had to put up with for a while. Configuring factory factories suck on a whole different level from ordinary coding.
Update: Removed the unnecessary and (as noted below) false remark about Joel not understanding Dependency Injection.

The main (but not only) reason we have object factories is to be able to extract code suitable to be unit-tested from the whole application. And unit testing is like testing the tire of a car in a laboratory instead of testing the whole car on a race track. Not that we don't test cars on race tracks - but it is a lot cheaper to test the tires in labs first.

It is not that we sell Object Factories so that people can produce their objects - we use Object Factories in our code - so that the objects are better encapsulated. Once you understand that - the whole satire with hammer factories collapses. But OK frameworks are still yet another subject and I kind of agree that libraries are often better (http://perlalchemy.blogspot.com/2010/02/frameworks-are-frami...).
Thank you for the offer. I will follow up soon.
10 Advanced Tips to Improve Your Programming Skills
Solve multiple problems at once
One of the more popular Stylish "themes" for the site disallows just the javascript blocking text selection, avoiding the center-aligning.
You understand that you are the saleman of this post by talking about micro services, right?

Unless I oversaw your sarcasm...
This, a thousand times, but I believe it also requires an intention of humility behind the question. There are still plenty of ways to phrase a critique as a question and come across as a jerk. People who are intentionally jerks will find a way to do it no matter what, though.

Asking a question leaves open the possibility that you, the person issuing the critique, are wrong. From my experience direct factual critiques are fine as long as they're correct. Some people might mind being told that a loop never terminates (even when that is trivially the case), but those people have their own ego issue to work on.

I feel the issue comes when your critique is either flat out incorrect or when it misses the context of why seemingly incorrect behavior might actually be desirable. Asking it as a question is an implicit exercise of the 'reasonable person principle'. That tiny shift in voice turns an accusation into a conversation that effectively starts with "My expectations have been violated by what I'm reading here. Have I missed something or was this intentional? If it's intentional, can you help me understand why this is desirable behavior?"
I disagree with many haters in the comments. Of course, it works differently for different people and different businesses. But the ideas in the article make me willing to try some tweaks to my workflow. I will just try less hardcore implementation of those things (eg. limit meetings and calls to 3 days a week and see how it goes).
I was also maintaining a version here:

http://leanpub.com/hpmor
I think the key is that if you ask a question, you should be willing to accept "no" as the answer. Sometimes the answer is "not now" or "no", and perhaps adding a TODO or a comment explaining why not.

Particularly well-explained code shouldn't raise any questions.
Only if there's a social angle.
Why did this topic fall to the second page on HN so quickly, despite its relatively high upvotes, activity, and recency?
I agree, this is extremely common, and it completely baffles me....you are in charge of a resource, would it not be in your best interest if more people use that resource rather than less? For whatever reason, I find DBA's to commonly have this type of attitude, as well as having extremely unimaginative minds (Why would you want to do that?)
> If you're doing something really original, a framework is less useful.

Waaaait a minute - what kind of frameworks are we talking about here? You can build loads of things with Django. I can build VERY unique sites with backbone... i don't understand the opening comment. Hell, even bootstrap can be tweaked beyond recognition without terrible code.

Edit:

> They use a framework, and might not even use it correctly.

That's a shitty company or developer, not a symptom of the framework.

Surely you would rather work on an established documented framework than a custom undocumented mess from the same shit company?
Show HN: Music from Pi's Digits
We use this in our project ---
https://github.com/aerospike/aerospike-client-c
Actually they don't. People want ads for what they're interested in. Time and again, that's been the number 1 complaint, that they see ads that aren't fit for them.

Contextual relevancy is hard (and what you talked about isn't scalable) but that's not the only issue. A mainstream news site can get a massive amount of people of all kinds, an ad about cars to one might be irrelevant to another. It's just not that simple to show "generic" ads, especially when advertisers increasingly want better and more accurate targeting.

It's better for both sides to have this tracking, companies get better performance and users see what they're actually interested in. Again the legitimate companies don't know anything personal about you... at most we know what you've seen, what you've clicked and can guesstimate that maybe you like a certain thing or another. And 15-30 days later we delete the profile because it's old. Not exactly a giant NSA database of your life here.
The contract is over and now some other programmer (such as me) is now supporting it. Now, making changes is several of order of magnitudes harder, because you're fighting the framework

That's barely ever the case though. A framework guarantees consistency. You can complain about the Zend framework, but it has documentation you can look up. If an outsourcing company wrote it from scratch you'd have no-one to ask and no further information to pick the code apart.

You're complaining about a framework that doesn't have the feature you wanted, but that doesn't invalidate the concept of frameworks.
I'm surprised the John Gruber "little birdie" thing is treated as a legitimate source, especially in this case where it's outright absurd. John has retrenched to now Apple "basically" inventing it because wires and stuff.
1. This was not written by Joel himself. This was written by a guy named Benji Smith on JoS forum.

2. I understand dependency injection completely but question if it's really required to write quality software OR is it a technique you use because programming languages are lacking.

Let me give you an example. In .NET world, there is a product called, Isolator by a company called TypeMock. It can let you mock any type/method by exploiting CLR.

In .NET, there is a type called System.DateTime with a static property DateTime.Now. I have seen code where people try to write interfaces to inject DateTime.Now. And I think it's an overkill. When I saw their example of how they can mock DateTime.Now without doing DI, I am personally convinced that DI is about addressing limitations of your statically typed language and is not an absolute must.

http://www.typemock.com/TypemockIsolatorExamples
Great idea. You could even generate a random mapping of the letters -> CSS classes on each load, making it very difficult for bots to decipher.
Perhaps http://dnstunnel.de/ ?
What do you think of my demo video?
For such broad claims, I think you need to define some terms. What is work? What is success? What do you hold to be best? These are slippery abstract concepts, and it's therefore dangerous to hold strong opinions about them without being very clear about what you're saying.

So for example if you define work as activities you are paid for and which society values, Einstein was not paid for the work he did on general relativity at first. If you define success as becoming rich, Abraham Lincoln, Rembrandt, Mozart, Einstein in his early days, Wittgenstein etc were all abject failures. If you define it as recognition from your peers, many people we now value were ridiculed and rejected in their lifetime - Darwin, Newton, Van Gogh etc. Of course you can find fault with some of these examples, but it only takes one to undermine your first sentence, which is a remarkably broad claim without qualification.

So when you make sweeping statements about hard work consider what you mean by best. Are they best simply because your implicit value system values hard work above all else? Are they best because they earn the most money? Are they best because they are esteemed by their peers today, even if in 100 years they will be forgotten?

From the article:

Immense harm is caused by the belief that work is virtuous – Bertrand Russell

I think what he is driving at here is that leisure, or at least the avoidance of work for pay, is required for some of the greatest advances in our civilisation, we require leisure in order to speculate, create and explore. I'm not entirely sure I agree with him completely, but it is an interesting counterpoint to the martial beat of the calvinist work ethic we now march to.
Egoless programming is about accepting that you are flawed, your knowledge is flawed and your work is flawed, and then drawing appropriate conclusions from that. That's how you get to "critique code, not people", because everyone is flawed, and almost all work is flawed, so there's no point blaming people for their flaws. The focus should be on the flaw and how to get rid of it, not the person whose flaw it is.

You are indeed rare for being able to take direct criticism of your work and respond in a constructive way.
Some mobile operators offer unlimited Facebook and whatsapp traffic doesn't count towards the monthly data transfer limit.
I've just created a demo video for my online service - the goal is to increase conversion and get people to understand the service. I made it quite quick n' dirty - but I would love some feedback on the general direction. Any ideas on how it possibly could be improved to more effectively reach my goal? The service can in short de described as a collaborative idea box for teams and organisations. You can take a look on both the demo and site here: https://www.brightly.io
Yes, they have to because of how Windows detects connectivity (NCSI).
Just because there's never really a good time to break out this link: http://baconipsum.com
"Adderall is amphetamine, whereas Ritalin is methylphenidate, a completely different drug entirely."

No. Methyplphenidate is as different from methamphetamine as methamphetamine is from amphetamine, which is to say that yes they're chemically different, but have similar effects that are different in the margins, like MDMA and 2CB, for example.

"The real difference between Adderall and "street meth" has more to do with the means of ingestion (smoked vs oral) than the actual chemical compounds themselves."

Which is exactly what I said.
Agreed, frameworks are tools to be used or abused. The main problem with Joel's analogy is really that factories did not replace hammers. Hammers and factories and everything in between are always available to us.
May I ask what about "Less Wrong-style rationality" you disagree with?
My experience with frameworks has been that, once you go outside the stuff that comes with the framework, they start to hold you back more than they help you.

It's also a nightmare to go into someone else's poorly written framework code and try to maintain it, especially because frameworks have "magic" where functions are not explicitly invoked, so it's almost impossible to trace the control flow.

Every time I've been maintaining someone else's framework code, the project was a mess. I don't see how frameworks are so awesome if so many people use them incorrectly.

For example, at my last job, they were using angular.js. Every 30-60 minutes the website just randomly crashed. There were all sorts of weird "$digest in progress" errors and bizarre errors. I know they weren't using angular correctly, but if a group of average developers are using angular incorrectly, do you blame them or blame angular?
German professor turns down Indian applicant due to country's “rape problem”
Wasn't really trying to sell anything and I can't see the connection between micro services and factory factories, except that they were both once the next big thing. I'm just saying at least it's getting better for the Java folks.
One of my favorite articles of all time.

There is no doubt that people writing Java software loved abstractions.

One of my favorite examples: https://ptrthomas.files.wordpress.com/2006/06/jtrac-callstac...
Siracusa said something similar on Accidental Tech Podcast a while back, and it really struck me because it made me look back on every argument I've ever had in a different light. He said he always phrased disagreements in such a way as to leave the person he was disagreeing with out of it. In general, always voice disagreement as "the thing you said is wrong" rather than "you're wrong". The former is about the point of disagreement, the latter is about the person.

It's not even about being diplomatic or being less likely to hurt someone's feelings (although you get that for free), it's really just about clarity as to what's being discussed. The most confident, secure person in the world might still get defensive when confronted with "you're wrong", because there's still a whiff of it being about questioning that person's credibility, as opposed to the thing that you think they're wrong about.
They should have put the Bluetooth dongle in a fake memory expansion cartridge that wiggled loose over time, and have their iOS app restart when it loses connection with the keyboard. That would be masochism :-)
This is one way to get generics in Go.
It would certainly be interesting if facebook started to provide proxy access
I looked at the zend documentation, and it was basically an auto-generated list of function names. I looked through the specific Form class they were using, and it was useless, just a list of function names with no description of what the parameters meant.

The documentation for other frameworks I read was similar.

Actually, they have another project written in a custom framework, which is also a nightmare, but it's less bloated and I was able to figure out how it works by reading the source.
> if it's really required to write quality software

of course it isn't. if your program doesn't require dependency injection and you architect it for dependency injection, that isn't quality software.
Installing anti-homeless spikes is still a choice for punishment over viable positive alternatives such as planting a nice bush where you don't want people to lay down.
Uhhh, you blame them.
This looks interesting. I've just build Dropbox and box integration for Matterhorn.io, The next big one is Google Drive and OneDrive.

I've only had a quick glance over the site, its a little hard to navigate but the general idea looks great. I'd love to find out more, who's the best person to contact?

Edit --

Ok, so I signed up. I really hate it when products set my password, its incredibly annoying, please don't do it.
That PR referenced in their blog post is 404; the actual project code is here:

https://github.com/spark-jobserver/spark-jobserver#readme
Advice from Bruce Schneier's latest book:

Notice	Surveillance. This is the first	step. Lots of surveillance is hidden,	but not completely invisible. The cameras might be small, but you can still see most of them if you look. There are sites online that identify surveillance cameras. The more you know, the more you'll understand what's going on.
Not a word about Superfish in the review, not even to say "this doesn't have it?" https://en.wikipedia.org/wiki/Lenovo#Superfish_incident
I love lightweight frameworks that exist mainly to reduce boilerplate code and, for web development, mitigate cross-browser compatibility issues. ExpressJS and jQuery are good JavaScript examples.

I tend to avoid frameworks that attempt to push developers into coding "the framework's way" (cough cough AngularJS). Such frameworks are often great in the beginning, but once you pass the basic application stage, a deep understanding of the framework itself will become necessary and it will stop saving you time. Sometimes you have to adapt special ways of writing tests, debug nonsensical stack trace dumps, etc. Not to mention it increases the overhead of bringing new developers on the project.

tl;dr Don't use heavyweight frameworks unless you have a good reason.
So frameworks are bad because one framework you used was more bloated than the other? It's not just documentation - Googling "zend form prepopulate data" returns a ton of Stack Overflow answers.

I'm not saying every framework is amazing, I'm saying that using public, known frameworks means there is a lot more support available for you out there. Not least because these frameworks have had many eyes review them - the custom framework you used was less bloated this time, but there's literally zero guarantee of quality there.
Yep. Java may be faster for equivalent programs, but Java in practice sure as hell makes up for it with endless abstraction.
Block non-productive sites you waste time on in your hosts file on your work/dev machines.

http://www.digitaltrends.com/computing/how-to-block-a-websit...
CoreCLR on Linux
> dosage can only be increased so many times before they die of overdose.

Citation? In palliative care, dosages can become incredibly high. The bit of info I've read has not talked about a maximum dose, nor have I heard stories about reaching such a level. (There probably is such a dose, just as there is for water, but I'm not sure it's been much of a hindrance to actual patients.)

An addiction has no reason to be expensive. Without being rude, I think you're just making that up. Using GoodRX, I've found that methadone is under half a cent per mg. So for a one-gram-a-day morphine equivalent (120mg methadone) that's a grand total of $18 a month. As comparison, 30mg methadone could (would?) kill a non tolerant user. If that's the current pricing, under all the extra regulatory work and reduced production due to legal limits, we'd expect it to drop. And spending just $200 a month, or 10x of the current price for 1G MED a day, seems not that bad, really.

You go from saying a dangerous, toxic, element such as lithium is OK because it improves the patient's life... to opiate treatment is bad because of addiction. That's it?

The US and Europe alone use about 100 tons of oxycodone, annually. Where is that all going? Yeah yeah, diversion is a "big deal", but even if it's massive, like 50%, most of it is going to the intended target. I'm not sure how production tonnage converts to personal usage, but at 40mg/day, that's about 6 million users. Total annual US prescriptions for opiates is in the quarter billion range (divide by 12 to get a rough estimate of users?) Yet oxycodone only created 175K hospital visits in a year. So we're at a hospitalization rate of only ~3% ? I think that destroys the idea that most users suffer tremendous damage from it. So what about the other 97%? The guy that did your taxes. The person who wrote the backbend of the next app you use? The old friend that just sits around in bliss? We should tell them to sod off because, hey, not all y'all is productive enough, and I don't like your living in an escape?

That 97% could be misleading. Massive over a 3 year usage cycle it's a different 3%, so perhaps 10% of users end up with a hospital event.

I knew people that died from OD. Perhaps because they couldn't get things together, and opiates were too big a call. Or maybe because they bought random quality shit and had no way to properly dose, plus their tolerance wasn't a nice chart due to constant pressure and stigmatization of their usage forcing them into period "rehab". Scenarios that would mostly disappear with proper production and social acceptance.

I also know many more people that have been opiate addicts for presumably a long time. Otherwise fine citizens, you might thing. Most people aren't willing to talk about their usage. But keep your eyes opened in meetings; look for the people with pinned eyes. Opiate addicts are everywhere. (6 million+ oxy users alone would be 2% of the US population.)

1: http://www.drugabuse.gov/publications/drugfacts/drug-related...
Really, I hadn't seen them specifically say that they wouldn't email everyone (although if anyone had thought about it they'd realize it was a bad idea).

Yeah, we went with GWDG at the time primarily because it was one of the few good options for a NZ-based company, but it was always a bit strange and I always thought given the lack of maintenance it was likely to get killed. Switched to Stripe and much happier, although I do miss the awesome microtransaction pricing they had...
Yes. I usually install a browser addon like Leechblock (Firefox) or Blacklist (Chrome).

I succeeded in completely eliminating reading about sports at work. This was so effective that I don't really follow sports anymore at all. I've been less successful at eliminating HN and some other tech sites, although I'm pretty good about avoiding HN when I'm supposed to be working.
> If you are "senior" in only 5 then where do you expect to go from there?

Depends. After 5 years of being a senior developer, you might begin to think about being a junior architect or tech lead of some sort.

Now, I think I was a pretty senior developer after 5 years, but then I also had preprofessional experience going back another 5 years, and a few years of hobby experience before that... :P
We can all create conspiracies here, but that wouldn't fly over the fourth admenment.

However the US post office uses an automatic scanner system to read packages. I cannot imagine the NSA, with its insane desire for meta data hasn't tapped into it yet.
Why? If a group of average programmers use a tool incorrectly, is it the worker's fault or the tool's fault?

If a group of average people can't use angular correctly, then maybe angular isn't so great.
Here's the current status of .NET software development.

I think there is a broad agreement that unit testing is a very useful tool in developing quality software. Because of the inherent limitation of C#, you can't unit test easily if you don't use DI. This often leads to a situation where you have tons of interfaces + each interface is implemented exactly by one class. This is because product like Isolator is not free. Hyptothetically, if Isolator was provided by Microsoft for free, I am sure that we will see reduced usage of DI.

Don't get me wrong, I think there are other scenarios where DI is a great technique in designing components which are flexible. However, those scenarios are not that many. Using DI to make your software unit testable is an overkill IMHO.