Ask HN: What's your beef with PHP? - <AUTHOR> <comment> open-source-ux I don't have any beef with PHP, although I switched from learning PHP to Python.

For web development, no other language will get you producing dynamic websites and _deploying_ them as easily as PHP. Compare deployment of Python or Ruby web apps - messier and not simple.

What don't I like about PHP? The language itself. Its piecemeal, adhoc development is laid bare in its unattractive syntax (this is always subjective I know).

On the positive side, my impression is that the PHP community are open to criticism - they have to be given the amount of negative comments thrown their way.

This is in contrast to other language communities that have far too much zeal and sensitivity to criticism.

That criticism against PHP is also taken on board at times in the implementation of PHP's language features or best practices. I've been impressed by PHP's huge speed up in PHP 7. I wish other scripting languages would also address speed and memory usage with the same priority.

Finally, it's worth stating the obvious: if you're looking for a CMS, a message board, a blogging platform etc, PHP gives you enormous choice. And yes, some of these solutions do follow modern, secure coding practices. Look at the other popular scripting languages for web development and you'll find the variety of solutions far more spartan.

</comment><comment><USER2> I haven't done any PHP scripting for at least 6 years, but my beef was mostly with the community, not the language. If you do your best, you can write decent and clean code in PHP. But the community largely exists of people who don't have the slightest clue what they're doing and who are writing absolute garbage pieces of code. Usually when there's a data leak on a website, it's the result of insecure PHP scripts (again, the language has ways to prevent this, but the scripters just suck).

</comment><comment><USER3> More than anything else, it's standard library.

[https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad- design/#...](https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad- design/#standard-library)

<comment><USER4> Mmmmhhh most languages are, more than anything else, their own standard library ... Although there are languages with a very small standard library that are not "batteries included", but they are lower level so it's an apples to oranges comparison.

</comment></comment><comment><USER5> I've been writing PHP for over 10 years.

1) PHP is slow, uses too much memory. (I wrote the MicroMVC framework and IOSQL)

2) Makes concurrent (and especially parallel) computing hard (file locking and pcntl_fork())

3) PHP isn't well though-out (like Javascript) so you are always second- guessing the std lib because of odd/short-sighted design choices.

I moved to Go and lost nothing.

However, PHP is (like Javascript) improving and will probably eventually (like Javascript) get parallel computing right.

Where the users are the features are. That is why PHP, Java, and Javascript aren't going anywhere fast.

<comment><USER6> What other languages are you familiar with to compare it too? Because Javascript is in no way well thought out and it doesn't do parallel computing let alone do it right, it's bound to a single core.

<comment><USER7> I wonder: What in JS ist not well thought. I don't like programming JS, but compared to PHP it has many neat features and ways to get things done. It's just different from other languages.

Parallel works. You can even create a deadlock very easy. Also, Node.js can spawn new processes.

<comment><USER6> Honestly, this has been done to death and it's pretty well accepted that it's not a great, or even good language, so I wont go over it again. It was a language designed in a few days to handle some basic client interactivity and it's good it that, it's just not good at anything more complicated than that, even despite the astronomical amount of effort people have put into working around it's warts.

> Also, Node.js can spawn new processes.

And yet it handles incoming requests on a single process.

</comment></comment></comment></comment><comment><USER8> I don't have any, it's great, depending on your use case. I think it's because I learnt it growing up (age 14 onwards) that I always fall back to it as my 'natural' coding language.

If someone gives me a big file of text to parse through, even though I know Python, can use Perl and BASH, I'll likely still use PHP if it's a one-time thing (sometimes even if it isn't). Why? Because within 5 minutes, I can have a script that reads a file from anywhere, parses it line by line and does any number of interpretation. No worrying about casting strings to integers, no worries about general syntax or indenting (Ok, this is a benefit of Python, but if you just need to do something on the fly, PHP!).

IMO PHP is very easy to use, very easy to learn and can do almost anything - good and bad. Good because you can use it to solve tons of problems, bad because everyone learns it early on, or as their first language (like me), and therefore most people aren't great at it, the community gets worse.

</comment><comment><USER9> If you embrace what PHP is good at, which to me is fast, easy to understand code that is dispatched once per web request in a shared nothing state, PHP is great. When you have to deal with PEAA style PHP, things start to go off the rails in both speed and simplicity.

I happen to like PHP's standard lib: it's big and addresses a lot of needs in building web apps. But you don't really see tons of new high quality bindings or libraries being introduced at the rate that, say, Go is getting them.

If someone told me I had to build a product from scratch in PHP, I would probably start here: [https://github.com/exflickr/flamework/blob/master/docs/philo...](https://github.com/exflickr/flamework/blob/master/docs/philosophy.md)

<comment><USER10> > But you don't really see tons of new high quality bindings or libraries > being introduced at the rate that, say, Go is getting them.

While true, this is an apples to oranges comparison. Go libraries, bindings, and extensions are written in Go. PHP bindings and extensions are written in C.

Writing a language extension or library binding in PHP requires an understanding of PHP internals and the C language. Compared to writing a binding or library in Go, this is difficult. It requires the knowledge of 2 languages (instead of 1) and an understanding of how PHP works "under the hood".

However, I think that Zephyr shows promise. It's a high-level language designed for creating PHP extensions, without a direct understanding of PHP internals or C being required. [https://zephir-lang.com/](https://zephir- lang.com/) (I just wish it didn't limit you to OO design/implementation.)

</comment></comment><comment><USER11> I don't have any beef with PHP. It pays for my current living so I don't complain. PHP 7 has been a great improvement over the previous versions so that helps as well. At the end of the day, it is just another tool.

Best thing about PHP applications is that even my grandmother can deploy it. Yes, that can be bad or good depending on where you are looking from.

Add frameworks like Laravel and you can create some serious prototypes in no time. That's what I care about to get something out of the door.

</comment><comment><USER12> My beef with PHP is all the added traffic I get on my http server. Every day I get a list php directories get request from people looking to score on some low hanging miss configured lamp box. Then on the flip side the people that do have php files miss configure they get turn into DDoS boxes against me.

<comment><USER13> I've actually configured my webservers to start firewalling hosts that make requests for /admin.php, /wordpress/wp-admin/blah.php, and any other request which is destined for a PHP-file.

I don't use PHP, and these kind of bots are just too noisy to put up with.

</comment></comment><comment><USER14> I love PHP- it's a great get it done language. I think people just like to complain.

</comment><comment><USER15> The one thing that has most frustrated me is PHP's array syntax.

<comment><USER16> Compared to what?

<comment><USER15> Compared to almost any other language I've used - it's awkward, and unnecessarily verbose because it mixes in how one would define an associative array/hashmap/object as the only way to use an array. It does not distinguish a traditional list from an associative array.

<comment><USER4> > how one would define an associative array/hashmap/object as the only way to > use an array.

Well JS goes even further in relation to hashmap/object (e.g. you can iterate object properties as if the object was a relational array, because, well, in JS an object is an array). In PHP, on the other hand, you can't refer to $object['property']

Hovever I have to agree with you when it comes to the overlapping between relational arrays vs "simple" arrays, the fact that all arrays are actually relational introduces weirdness, for example sometimes when you replace an array element you end up with elements that are not in the order you expect them to be.

</comment></comment></comment></comment><comment><USER17> No problem with the language itself more of a problem with the people who use it and their compulsion to use it for things that don't need it.

For example it feels like we can't go a year without WordPress making the news for a security flaw.

</comment><comment><USER18> PHP is the bomb.</comment>


Irish bookmaker already paying out on Clinton win - <AUTHOR> http://www.usatoday.com/story/news/world/2016/10/19/irish-bookmaker-already-paying-out-clinton-win/92400784/ <comment><USER2> > Paddy Power says Clinton has an 85.7% — odds of 2/11 — chance of winning the > election, a figure that it believes amounts to a "done deal."

I agree that Trump winning would be a long shot. But what's the benefit of paying out early? 85.7% isn't the same as 99.9999%, so why don't they just wait?

<comment><USER3> I work in the gambling industry, and the amount of money bet on this market by Irish and UK customers (most of Paddy Power's userbase) would be a relatively very small amount. So they settle all bets on Clinton as a winner now and reap all the free publicity (which PP are experts at doing). Aside from that, the type of user betting on this market are not going to withdraw their winnings, it will go straight onto the next horse race or premiership game :)

</comment></comment><comment><USER4> I could see settling the bets at a discount if bettors decided to accept it, but Hillary could have an incapacitating stroke or some other health episode too severe to hide, that would knock her out of the race.</comment>


Top Tech Toys for Big Kids - <AUTHOR> http://reviews.cnet.com/holiday-gift-guide/tech-toys-for-big-kids/

<comment><USER2> The Raspberry Pi is what I want!</comment>


EFF promising intensified fight against bogus software patents - <AUTHOR> http://www.networkworld.com/community/blog/eff-promises-new-fight-against-software-patent-abuse

<comment><USER2> FTA: "Every piece of software released to the world without legal protections may leave open a door for someone else to attempt to patent the same technology (and may leave its creators more open to legal threats without a patent to wield defensively)."

Wait, what? No, every piece of software released to the world, with _or without_ patent protection becomes prior art. It slams the door shut on future attempts on _anyone's_ part to patent the same technology. Even more so when the software is released as FOSS.

On the face of it, this campaign is already sounding oddly misguided. The _only_ way to win this game is not to play, and I'd expect EFF of all orgs to understand that.

<comment><USER3> Prior art doesn't prohibit someone from patenting the idea ... I rather suspect not too many patent examiners peek inside source code or the interfaces of indie apps to check for prior art, and if a behemoth company is going to patent someone's prior art, it's not as if they're going to submit evidence that disproves their claim.

In short, even if it is prior art, it might still be patented, and some poor shmoe down the road is going to have to research, find, and successfully enter as evidence the prior art. They might just choose to settle instead.

Not playing can still suck.

<comment><USER2> The source code has nothing to do with the content of a patent. It _can_ be part of a patent, but it isn't necessary. The courts don't care how you implemented someone else's "idea," only that you did.</comment></comment></comment>


Go Daddy Files Patents for Enhanced Whois and DNS Records  - <AUTHOR> http://domainnamewire.com/2009/09/25/go-daddy-files-patents-for-enhanced-whois-and-dns-records/

<comment><USER2> They're asking for the wrath of St. Postel with this.

To co-opt a piece of a public internet standard that was arrived at through the work of lots of people is really beyond the pale.

Godaddy ought to be boycotted over this, simply take all of your business away from them referring to the filing of this patent as your reason for closing your account.

I'm pretty sure that if enough people do it they'll wonder if this is such a good idea.

This besides the obvious fact that they are even able to file this is utter nonsense, they ought to be rejected on the spot and fined for filing a ridiculous patent.

<comment><USER3> Yep. I have a bunch of domains with Godaddy; what are the good alternatives? (This is the sort of thing that's really hard to google for)

<comment><USER4> A lot of the large domain owners use Moniker or Fabulous for their domains. They both have good prices and good support. Plus they don't lead you through a mine field of extras just to buy a domain.

I personally have had good luck with Moniker. They also have a great API.

<comment><USER2> When moniker was acquired by oversee.net I was pretty skeptical, but they've been really good about it and so far no glitches because of the takeover.

As long as Monte is in the drivers seat there I'm pretty sure things will be working fine. His attention to detail and the fantastic customer service there are the reason why moniker became that big so fast.

</comment></comment></comment></comment><comment><USER5> I can't take a web site seriously when they have locally-hosted animated GIF ads.

</comment><comment><USER6> First, patents related to software must die, asap.

Second, there is so much prior art on this, if it gets approved we know the patent office is on the take.</comment>


2nd year Comp Sci student that just now figured out I have ADD - <AUTHOR> http://wporter.com/post/48345791421/2nd-year-comp-sci-student-that-just-now-figured-out-i <comment><USER3> I haven't been medicated for my pretty severe ADD in years (I was very uncomfortable with the personality changes/dampening of creativity/unknown health impact of meds, etc.), thinking I could summon the willpower and discipline to get through it.

I've been spiraling downward in a tailspin of _"unproductivity"_ \- to coin a state of being - for a while now, leaving a trail of half started startups and projects in my wake. I've got freelance deadlines that I've missed this week, but I'm sitting here with 30+ HN tabs open in my browser, and probably 10,000 more bookmarked that I'll never read.

I've been working on the "final 10%" of several projects at a snail's pace, for way longer than the first 90% took, and I constantly vacillate between thinking they're the next big thing or a complete waste of time, but I can't - or won't - finish them. More importantly, I'm _incapable_ of doing the smart thing and just choosing one to focus on.

If I'm honest with myself, I haven't been nearly as aggressive as I should have been in researching cognitive behavioral therapy techniques and other non-pharmaceutical coping techniques, or even pursuing some sort of therapy.

Am I kidding myself thinking I can somehow get past this without medication? Is there any other _REAL_ path forward?

<comment><USER4> Stop blaming ADD. Even if it is related to ADD, this situation could not possibly have been caused by ADD alone. You know that at the crux of it, poor planning was to blame. Poor time management followed, and you screwed yourself.

If you want to get out of this hole, you've got to get off HN now, (I use noprocrast). After that, do _1 project_ per night at a time. Yes. You will need to work in the dead of night, all notifications off. 1 project at a time, only. It is also incredibly important that your projects are broken down into microtasks so you can cross them off one at a time. I find often the easiest way to become late is to not understand how much work was left. Break it down. Think about 1 task at a time, ONLY. Don't think about B while you're doing A. Not even a tiny bit!

When you've made considerable progress on each project, submit the latest work, say what you've done, and then gather specific requirements and make it clear, that after you finish these next things that the project is "done" and by that I mean, you are at the end of your first iteration of development.

If you can't get those final requirements, and establish an agreed upon state that is "done" the client will drag out the project as far as you're willing to go. Hope it's not fixed price! That's just what people do. You need to put your foot down about what constitutes complete, have a mutual understanding of it, and execute those objectives.

If your client keeps asking for new stuff, put it on a separate list and tell him not until XYZ is done and we're agreed on this.

You can get out of this, but it's important to realize, you _won't_ get out of this using the same time or project management strategies that got you into it.

<comment><USER5> Spoken like someone who hasn't the slightest clue how mental illness and mental disorders work, or what it feels like to suffer from them.

"Just do X"! If only it were so easy, the world would be a much different place.

<comment><USER4> 1\. I never said the commenter above didn't have ADHD.

2\. There's nothing we can do to help him other than say "just do it" because frankly if he doesn't "just do it" pretty soon he's fucked.

3\. ADHD 1/3 scapegoat 1/3 misdiagnosed 1/3 ? maybe. Neurological evidence for disease? Yes. Vague diagnostic criteria for actual patients? Check.

<comment><USER5> I see you're an expert on ADD. You should write a book based on your expertise, you could make a lot of money and help a lot of people.

<comment><USER6> ADHD patient here.

I do agree with him. Most ADHD/ADD patients put too much focus on the disease, when the only thing that matters is to be willing to do something about it, asap!

</comment></comment></comment></comment></comment></comment><comment><USER7> A thing which I find works well for my ADD is to talk (out loud, yes) to myself when I'm doing something. I think people have a harder time getting distracted from conversations, and there's also a 'rubber duck debugging' effect in that your own thoughts become clearer.

Unfortunately this usually requires you to be in an empty room, which isn't always possible. And this is more of a micro thing, not a macro one.

</comment><comment><USER8> I went through this myself a couple of years ago. I had managed to make it all the way through school but once I entered professional life, I realized that people actually had conversations that I couldn't keep focused for. Using urgency to complete projects no longer worked with the time frames I was looking at.

The best thing in the world I ever did was go see a psychiatrist to get tested to see if I was ADD. After the test came back positive, he prescribed meds, and after finding one that worked for me, I was simply blown away.

I never knew that you could actually think about one thing at a time before. I never really understood what it was to have a conversation and not be thinking about a billion things. I never, ever, knew what it meant to focus on something. It's entirely changed my world.

Wish you well my friend. At least go get tested. If you decide to take meds or follow some other avenue, it's better to know what you're working with.

<comment><USER7> There's a stigma about the meds in a lot of places, but I still remember how much they helped me through middle school. I literally got math-related work done 10 times faster that way.

Unfortunately the stuff that worked for me (Adderall) is basically just meth, and I can't get a hold of it in Japan on account of it being illegal. I think it's not even very possible to get a hold of ADD-related meds outside of the US (France classifies it as a children's disorder, so after 18 tough luck).

<comment><USER9> Can we quit perpetuating this idea that prescription stimulant meds are "basically just meth"?

Different molecules, different delivery systems, different dosages, different therapeutic goals (euphoria not being one of them).

<comment><USER7> but adderall is meth

<comment><USER9> They are different drugs: <https://en.wikipedia.org/wiki/Adderall> <https://en.wikipedia.org/wiki/Methamphetamine>

</comment></comment></comment></comment></comment><comment><USER10> First, you are not alone. Many high achieving folks have ADD, and many discover it later in life. Very bright people can get through grade school without realizing they have ADD until they eventually hit their wall. It sounds like you are running into yours.

Understand that this does not mean there is anything wrong with who you are. You could decide to find other strengths or focus on other studies. You could also find an expert who can diagnosis whether you have ADD and help you consider treatment options. The cool thing about ADD is that there is medication that can make a dramatic difference. It's like flipping a switch and becoming that person who suddenly can finish those projects and achieve what you know you are already capable of.

You should find an expert to talk to, and you should look for resources at your university. You could check whether there is a student/academic assistance center. Even though your grades are good (you're by no means failing), there should be folks there with experience diagnosing issues such as ADD.

You could also simply check at the student health center - they should be able to refer you to a psychiatrist. Don't be hesitant to go just because it's a psychiatrist. ADD is nothing like more serious mental issues that we associate with psych. In fact you could say that ADD is just a variation of normal - <USER2> the first variation of normal that we have discovered how to hack with meds. Nevertheless, treatment can make a real difference in the quality of your studies, your relationships, and your future success. So it's worth exploring.

And as for your parents, don't let them talk you out of getting the resources you feel you need. It's always possible that one/both of them have it too without realizing it. Most adults these days are diagnosed as a result of their child(ren) being diagnosed first.

Good luck, and hope that wasn't too long and boring to read. :)

</comment><comment><USER11> Christ, I could have written this. Just found out last month. Not the best feeling in the world.

Advice: go talk to a counselor at your university. At the very least, they should be able to point you in the right direction studies-wise.

</comment><comment><USER12> Congratulations. Now you _know_ your brain just doesn't work like the typical brain. And that's a good thing. You can see things differently even if there are times when you can't see things the same way the typical person sees them (social cues, body language, but you can still learn to pick those up). Use ADD to your advantage. I'm at least twice your age, but had a similar experience at your age. I'm still trying to finish school but it didn't stop me from developing a career as a software engineer. I can personally attest that exercise and the "no sugar/low carb/paleo diet" mentioned by Dylan. Ambient and trance can also help at times. Lists, small goal, small breaks, help you practice focus. Medicine can help, but only in combination with behavioral therapy. Medicine has side effects, too. Many things will be harder for you to accomplish in a given amount of time while other times you'll be amazed that others are so slow. If your ADD is documented and you are being treated by a medical professional, you can get extra time for assignments, lecture notes in advance, and other accommodations like a private room for exams where you can read out loud along with extended time limits. ADD isn't a limiter to your personal success and happiness. It's a challenge to which you adjust.

</comment><comment><USER13> It could be food-related. Look into an elimination diet ... Also, look into innerchild / regression therapy. There's usually an underlying reason why our behaviours lead to procrastination. Good luck.

Edit: Oh, and yoga's good too. You can train the mind to be more focused. Everything takes practice to get good at it ... focus isn't any different - though with computers and multi-tasking, we sometimes think we're "focused" because we're working, but really we're not focused on any one thing.

<comment><USER8> I'll grant you that for the most part that's true, but for someone that actually has attention or hyperactivity disorders, telling them to "train the mind to be more focused" is equivalent to telling a depressed person to "train to be more happy". It's good advice, but positive willpower isn't always capable of battling the chemical/receptor imbalances that are the root cause of the issue.

<comment><USER14> But by doing yoga and other psychological therapy, your neurochemistry may be changed. That is how cognitive behavioural and mindfulness therapies work. I think in the end, your neurochemistry needs to be changed in order for the therapy to have an effect. But using drugs are not the only way to change your neurochemistry. In short, I don't think he is suggesting that the author of the article to use willpower. He simply suggests that maybe he can try some psychotherapy.

<comment><USER8> As I said, it's good advice. But the waters here are much more murky than that. That approach alone won't work for everyone, that's the only point I wanted to make.

<comment><USER15> You might be right, but it's possible considering all of the modern distractions and passive entertainment we have that it really is a matter of mental conditioning (or something like that).

</comment></comment></comment></comment></comment><comment><USER16> Not too familiar with ADD/ADHD but from some reading I've done it seems that this is prone to misdiagnosis VERY often so you should be cautious with just jumping on prescriptions...

Whether you actually have it or not, I think it's great that you are noticing these traits of yours. Now you can start looking for solutions! Find ways to motivate yourself (HN community is great), get organized, and if still needed then find the right medicine that fits with the rest of your life.

</comment><comment><USER17> Bottom Line: You have identified your problem. Your previous attempts at a solution have failed. Keep looking for solutions until you find something that works.

In my experience, adderall is extremely helpful. And in fact, I feel more like my normal self when I take it (after the first few days of feeling like I was on speed). A healthy diet and exercise is critical too, as is a balanced life in general.

Your brain is biological, just like the rest of your body. It can have various types and degrees of deviations from "normal", and I'm not sure there even is a "normal". So, definitely listen to people you love and respect, but always keep in mind that only you know what it's like to be you (to the extent you understand yourself). It's equally important to take responsibility for what you can, and to avoid blaming yourself for things incorrectly. You will be able to tell the difference more and more as you spend time observing and trying to truly understand yourself, without judgement or pretense.

There are challenges that cannot be overcome with sheer power of will, especially if the will is the very thing that is compromised. Sometimes brute force works, but sometimes a little creative hacking is necessary. ;)

Also, random things in my case which probably don't apply to you, but just in case, some factors to consider: allergies, proper glasses prescription, nasal obstruction (deviated septum). All those were things which I think exacerbated the condition, so it's helpful to rule those out. Or in the case of allergies, minimize the damage and identify the effects of various allergen seasons.

Good luck! You obviously have initiative, so I'm sure you will do just fine.

</comment><comment><USER18> I recommend that you avoid thinking of yourself as having some kind of disease. The term "mental illness" is a sneaky and ill-defined term meant to put mental behaviors on a par with physical ailments. But in fact, all mental behaviors are adaptations to specific environments, and some are more effective than others (some aren't effective at all).

To refute this, one would have to start by identifying someone who died of a mental illness. Such things don't happen.

Also, the causative agents for real illnesses can be viewed in a microscope, which means they are present or absent as a matter of empirical fact. Mental illness diagnoses are dispensed through the opinions of psychologists, and psychologists are famous for not agreeing about anything.

The only people who benefit from the stigma of a "mental illness" are psychologists, who pretend to be doctors (which they aren't) able to offer meaningful treatments (which they can't) for the mental illnesses they have created by voting rather than research. All the new mental illnesses going into the new DSM (about to be published) were included there by secret votes, not evidence.

Imagine if real scientists behaved like psychologists: "Is there life on Mars? Rockets are expensive — let's vote!"

<comment><USER19> If you want to take this stance, you need to be criticizing psychiatry (and a psychiatrist actually is a medical doctor).

<comment><USER18> > If you want to take this stance, you need to be criticizing psychiatry ...

When I talk to psychologists, they invariably say the problem is with psychiatrists. When I talk to psychiatrists, they invariably say the problem is with psychologists. But if human psychology were a science, this lame dodge would not exist, because both psychology and psychiatry would be united by a single theoretical framework, like the one that unites cosmology and particle physics (i.e. the Standard Model).

Particle physicists attend cosmology conferences, and cosmologists attend particle physics conferences, for the reason that both fields have the same theoretical framework and because discoveries in either field affect the other. And because physics is a science.

Psychiatrists don't attend clinical psychology conferences, and clinical psychologists don't attend psychiatry conferences, for the reason that there is no theoretical framework that unites psychiatry and psychology, and that, in turn, is because psychology is not a science.

> (and a psychiatrist actually is a medical doctor)

Yes, but a psychiatrist's medical degree is in general medicine, not psychiatry. _There is no mental doctor_ , there are only physical doctors. The existence of a medical degree program in advance of psychiatric training is just a way to confer an unearned status to psychiatry.

When you call a psychiatrist "doctor", you are acknowledging his medical training, not his psychiatric training. If psychiatry were a science, of course, this would all be different.

Any questions?

<comment><USER19> I suppose the first one would be how many actual conversations inform your first paragraph?

<comment><USER18> Hundreds, over decades. Reference: <http://arachnoid.com/building_science>

<comment><USER19> It's sloppy to label that a reference in that context. It does nothing to establish that you have had hundreds of such conversations. (You could just say you have already written your thoughts about it there, and that page certainly indicates that you have thought about it quite a lot, even if it does not directly document any conversations.)

Anyway, if you are going to take the hard line that those fields aren't doing people any good, you might as well make it clear that you are lumping them together (take the hard line meaning loudly advocate for that position on comment boards and such).

</comment></comment></comment></comment></comment></comment><comment><USER20> As someone who also was recently diagnosed I highly recommend seeking out a counselor and speaking with your doctor. After getting treatment for ADD I am much happier and productive at school and work. In general, I'm less stressed as well.

A therapist almost diagnosed me a couple years ago but I was biased against the idea of accepting that I had ADD. Of course, now I realize how much wasted time, money, and effort I might have saved if I had been willing to seek treatment the first time a psychologist suggested it to me. Counseling and medication have all been very helpful.

It's tough because it isn't well understood and the public has many wrong and negative impressions of ADD/ADHD. One of the toughest is of course that many people don't think it is real. However, personally, after a year of treatment looking at my life before and after being treated for ADD, it is clear that treatment worked for me. That really dispels that notion for me. If it walks like a duck and quacks like duck... My university also had a lot of great resources to help learn about ADD so check in with them as well.

</comment><comment><USER14> I usually don't have a concentration problem. I plan things early and get things done before the deadline. I am also generally very persistent. These traits have brought me a long way. But I have my own problems. And my own problems have to do with anxiety and depression.. And things have gone really bad before.. And even now, it is still not that easy. The point I want to make is that everyone has weaknesses. In recognizing our own weaknesses, we could sympathize with others' weaknesses even though they are different from yours. Also most importantly we should not let our own weaknesses stop us from achieving our dreams..Weaknesses are just something we have to overcome in life. Seeking help, from professionals or from friends, is a way of finding out how we could overcome weaknesses. In short I think the most important thing is to recognize one's weaknesses and be motivated in trying to find ways to overcome them.

</comment><comment><USER21> Just like some others here, I feel like I could have written this post myself. I was diagnosed w/ ADD at five and have only recently sought treatment (at age 34). I resisted the idea of taking meds for years but now I'm kicking myself for waiting so long to address the issue. My entire life, I've been limited to intellectual disciplines that I could assimilate w/in 48 hours or just BS my way through (liberal arts). If I had been able to read more than two pages w/o losing focus, things may have been different. Now I'm receiving treatment and for the first time in my life, I think that I might be able correct the problem (or at least mitigate it). For me, that means accepting that I can't do it without help.

My advice is to talk to more than one mental health professional. Try to keep an open mind about the different methods and combinations of methods used to treat ADD. Whatever you decide, do not wait to address the issue.

</comment><comment><USER22> Exact same situation. I'm switching majors.

Edit: Another thought: Computer Science is boring as _hell_. Even the tiniest bit of ADD makes it impossible. Even a person without ADD will probably show some symptoms of it. Rather than figuring out ways to just "get through it", I think avoiding this situation altogether is a better solution.

<comment><USER14> Which major are you switching to ?

<comment><USER22> Probably business. Something exciting. Sitting at a computer or solving math problems all day is a nightmare, even though I've been doing it forever. These things are usually a "sudden realization".

<comment><USER23> Software engineers employ math sometimes, but the real world is nowhere near like solving problem sets and writing proofs.

You use this theoretical platform to empower your work and improve it.

</comment></comment></comment></comment><comment><USER24> I'm in an extremely similar situation to you. Here's my advice: if you're looking to get put on a medication (don't feel bad about feeling like you need it), start getting help now. I'm saying this because getting treatment for ADD is a LONG process. Once you're locked into the medical system, you're good, but it can be a hell of a time getting there.

1) If you're away from home and don't have a primary care doctor, get one. Like, right now. Depending on where you live, wait times for accepting new patients can vary between 1-3 months. They'll typically set up an introductory physical. Once you're there, explain to them that you think you have ADHD and want to discuss treatment options.

From there, the meeting can go one of two ways. The way you want it to go is for the doc/NP to start you on a trial medication.

On the other hand (and this happened to me), you may find that your primary care physician is either 1) entirely against ADHD medications and/or 2) won't prescribe them, instead requiring you to go to a psychiatrist. If this is the case, then you must start the 1-3 month waiting period all over again trying to get in with a psychiatrist. A shortcut here might just be to go directly to the psychiatrist, but depending on your insurance, that may not be possible.

Tips:

Don't bother getting help through your university. They get too many kids coming through there looking for easy Adderall and Vicodin, to the point where they treat everyone like drug addicts. Getting that kind of treatment from others can be really off-putting and make you feel bad about having ADHD. That's the last thing you need.

If you can't get meds through your primary care, make sure you see a _psychiatrist_ , not a psychologist. If you call a mental health center that has a mix of psychiatrists, psychologists, and counsellors, make sure you _know_ you're getting set up with a psychiatrist. You can still get diagnosed with ADHD by a psychologist, but they don't prescribe medication, so you'll have to wait another 1-3 months to meet with someone who can _after_ you get diagnosed.

</comment><comment><USER25> With one month to go in the last year of my computer science degree I was diagnosed with ADD.

The psychiatrist gave me some stunning advice: Ritalin or medication will not do your work for you. In my last month of university I was enabled with the ability to start working on projects well before the 48-hour cram period that I had come to know.

I had spent most of my schooling as a child to be made out as an idiot. As I result I'm now awfully quick to recognise when someone is not giving me their respect.

ADD is supposed to be picked up through your younger years. However when I grew up, it was the naughty children that had ADD/ADHD... they were the ones that caught their teachers attention.

Someone like me would never be correctly diagnosed, I has happy internalizing whatever it was that I was thinking about.

</comment><comment><USER9> In addition to all the other advice you get, consider this:

It's a not a minor thing by any means, but it is at least a relatively common thing. You're not the first person to encounter this.

Unless you're a literature scholar, no one will look down on you for not having read War and Peace cover-to-cover.

You don't have to figure it all out right away. You have the rest of your life to figure out how to operate your head. Thinking about thinking is fun, but too much at once can be like eating too much candy.

Keep up your expectations for self-discipline, it's valuable and has gotten you this far. That's enough for most people, but you're different. So let yourself off the hook a bit judgmentally.

A lot of folks end up having fun with it.

</comment><comment><USER26> Seriously, there's nothing wrong with seeing a psychologist and/or psychiatrist. There are many possible scenarios, including that something other than ADD is causing your symptoms, or even that there's nothing "wrong" with you. I think there are many good mental health professionals who focus on providing a minimal viable treatment for patients. Simply getting diagnosed with something doesn't mean you need to be medicated, and being diagnosed with something isn't even a necessary condition for a professional to help you find a way to help yourself succeed.

</comment><comment><USER27> Thank you for sharing this, I am in a similar situation and often think this, however always fall back to the "I'm just being lazy train of thought".

I didn't actually make it through the exams that would allow me to study Computer Science, after studying hard I just couldn't concentrate when it came to the exam, I had plenty of time and knew it was important however couldn't focus. (I was like this throughout most of my education, good in class - failed the exams)

Perhaps this is just more excuses in a modern world full of distractions, either way I think I'll seek some professional advice.

</comment><comment><USER28> Just as a heads up more serious mental illnesses have symptoms similar to ADD in there very early stages. Instead of self diagnosing with ADD do 2 things 1. get a real psychiatrist ( sorry to say but this person will probably not give you adderall, dex or Ritalin on your first visit). Get a nuero psychological exam done by a nuero scientist ( a real psychiatrist will be-able to connect you with one assuming you need one) Lots of people who think they had ADD in college go on to find out they have more serious conditions.

<comment><USER29> Out of curiosity, what are the more serious conditions that have similar symptoms to ADD in the beginning?

</comment></comment><comment><USER30> Things that may or may not help:

\- exercise

\- no sugar/low carb/paleo diet

\- meditation

\- ambient music / white noise

\- small goals

\- adderall

\- modafinal

\- cannabis

\- seinfeld's "don't break the chain" method

\- dont fight it, monetize it

good luck bro

<comment><USER31> Cannabis certainly didn't help for me (though of course it's hard to isolate its effects amongst everything else). It made me more interested in doing things at first, but my mind would race much more, and I'd find it harder to actually do those things.

I quit a while back and have surprisingly had little urge to do it any more. While I greatly value the difference in perspective it can offer, I was just using it way too often for too long, without even really enjoying it a lot of the time.

</comment></comment><comment><AUTHOR> Thank you so much for the overwelming response from the HN community. I will now spend the night going over all your responses. I'm going to book a counselling session through my university and hopefully they can give me some advice as to where to go from here.

Thanks so much

<comment><USER8> Good to hear. When you talk to the counselor, they may give you some ideas on coping strategies - making lists, using calendars to remember all your appointments, etc. You most likely do them already to have gotten this far in your academic career, but if you don't make sure to put effort into making them part of your routine (whether you decide to go the meds route or not).

</comment></comment><comment><USER32> Wow - the hold it till the last minute thing rings incredibly true (to the point it has lost me jobs).

What is diagnosis like - is it rather hit and miss or are there clear physical signs? Off to read I guess.

<comment><USER8> As in all things, it's not so much of a "yes/no" diagnosis, but a spectrum. But the range they can give you in the spectra (ADD/ADHD) seem to be pretty tight.

From my experience, they asked me about past behaviour, current behaviour, and some questions to probe my ability to keep track of the conversation. It was the questions about my past and current that really shocked me. They were asking if I did specific things that I just thought was "me being weird' but are actually /extremely/ typical of people forming coping mechanisms for different symptoms.

</comment></comment><comment><USER33> wow! For once I thought "did I just write this?". This is just so me, I'm in my 2nd year, CS and 20. Guess what, I have the same problem. I got to thank you for posting this.

</comment><comment><USER34> I found out that my case is more severe than you... But the comments here don't seem to come to any conclusion... Maybe I will find treatment as well..

<comment><USER8> I can simplify this entire thread for you. Everyone who has struggled with this says "see a specialist, get diagnosed, take action". That action can be a range of things, but first and foremost, talk to a specialist.

</comment></comment><comment><USER35> I can definitely relate to what you said, and I think sharing my journey through academia may at the very least give you some ideas in how to approach yours.

 _TL;DR at bottom_

Lots of the usual helpful advice has been given to you already (meditation, medication, exercise, diet, lifestyle), and I don't want to discount it by any means as it's all extremely helpful to try to achieve some kind of life balance through pursuit of better habits which can definitely help you become more focused. Instead I'm going to tell you what I've learned, as I was in a similar situation 9 years ago, though whether my lot has been improved much through experience is probably open to debate.

I was diagnosed with ADD when I was 8, though I've come to feel that the broad range of symptoms that the label is applied is less of a binary trait and more of a spectrum of behavioral characteristics that everyone can relate to, some more than others. If you feel like you have it, you probably do, though getting the official seal of "ADD" is probably only useful in that it gives you a venue to legally obtain medication to help mitigate it, as I did; working my way through the pharmacopoeia until I eventually settled into a grudging partnership with Adderall, which I took throughout high school. And it WAS very useful for extended periods of focus and crunching before tests and exams.

The one catch: I absolutely hated it. It made me feel disconnected, gave me a serious case of cottonmouth, gave me some serious bad breath, and made it nearly impossible to maintain a healthy sleep habit and diet. It's not something I would recommend except as an absolute last resort.

College can be a cruel first test of one's ability to balance their commitments. Personally I found the barrage of new things I had to deal with on my own for the first time overwhelming, and didn't last long at my first institution (UIUC). At the same time, I can say that many of my obstacles were things I chose. Making friends, going to parties, getting involved with student groups, and social activities were all things that I chose over applying myself towards my coursework. And here's the thing: _I learned a lot!_ But not about the things I was being tested on.

I don't want to ramble on with obsessive detail, but I will say that I finally graduated 9 1/2 years after enrolling in 2003, though much of that time was spent not in school. Here's what would have saved my parents and I a lot of money: As soon as my interest waned, I should have taken time off. I didn't because of family pressure. There's a poignant quote somewhere about not playing if your head's not in the game, I'm sure, and I wish I had taken heed.

The thing is, all the time spent partying, travelling, working crappy minimum wage jobs, and living outside of the the very small world that concerns itself with minute improvements to the travelling salesman problem, and whether P = NP, gave me a perspective that has finally motivated me to pursue a self- driven education on computer-science-related topics that I never had until _my very last semester_ of college (which was Fall 2012). Do I regret it? Sure, there are loads of things I'd do differently, but through the whole process I've developed extracurricular skills I value and am generally much happier and fulfilled person than I would have been if I had graduated in 2008.

So what I'm getting at in what I've realized is an extremely roundabout way, is that if you don't feel like you're really ready to dive into what you're learning headfirst, if you don't feel COMPELLED to... then don't. Take some time off and do something else that you want. Consider another major or career path. Learn to play an instrument. Heck, join a circus troupe. If you think your CS curriculum is tough now, just wait until your junior and senior years. That's when the difficulty really starts to adopt a tune that has the palatability of nails-on-a-chalkboard.

Because of pressure from my parents mainly, I kept going back when I _knew with all the fabric of my essence that I wasn't ready_ and trying to half-ass my way through my classes. And I kept getting chewed up and spat out so to speak by the difficulty of the material. Seriously, I ended up failing core computer science classes repeatedly because my head wasn't in the game, because I didn't understand why the concepts I was learning were important, or applicable to anything I was interested in doing at the time, and because I truly just wasn't ready. It's like trying to bike up a steep hill without enough forward momentum. You need to be in high gear and ready to bring it.

So what finally got me interested in learning the material? I've always been fairly certain that I want to build things with code. I considered everything from music to writing to psychology in throes of self-doubt, but what it came down to in the end was that nothing excites me the way computer technology does, which fortuitously enough happened to be my intended major from the get- go. But I had to learn a lot about everything else the other academic disciplines, and life in general, had to offer before I was comfortable making that decision.

TL;DR, as promised:

-Unless you want to medicate yourself (which may be unhealthy in the long run), you may have to put higher ed on hold until you're feeling it (I should have).

-The degree isn't as important as the knowledge. Motivate yourself to learn things that you're interested in for now. As your base of knowledge grows, you may find that more and more of your interests overlap with a computer science curriculum. In that case, go for the degree again. If not, consider majoring in or studying something else.

-Consider taking some time off from any kind of classical academic learning and instead use this time for other personal and emotional growth and self-discovery. Work and support yourself, if you're not already. Go on an enormous road trip. Spend some time volunteering for a cause that resonates with you.

-If you do decide to continue with school full-time, then do whatever you can to make it your only commitment. Tell the band they have to find a new drummer. Tell your best friend to find a new wingman. _Move in with your parents if possible or get whatever financial aid you can so that you don't have to work while you're in school_. Seriously, with this last one. It sounds lame, but if it may be the only thing that can get you through your junior and senior years of CS.

</comment><comment><USER36> You are looking for an excuse. Whether you have ADD or not, you are wuss-ing out.

</comment><comment><USER37> Young people nowadays have so many things to cause distraction. When I was younger, we didn't have cellphones and the numerous electronic related items that cause you to lose focus. Try eliminating everything but the necessities, and then focusing on one thing at a time. Even if you get distracted, set a goal of going back to it even if it is for a very short amount of time. Just like a tree, keep chipping away at it, and eventually you will make it fall. You can go for medication, however, they can cause dependency, and can cause more issues in the long run.

<comment><USER24> The problem here is that you're basically required to be connected at all times in any post-secondary environment, unless you're working for a company that has made it a core value to limit connectivity.

I have professors now that e-mail the class at 1:30am on a Friday creating new assignments due the following Monday. They all say the same thing: this is the world we live in now, get used to it. Crises happen at work around the clock, and the expectation now for pretty much everyone in the working world is that you have at least _some_ way to be reached 24/7.</comment></comment>


Freely available programming books - <AUTHOR> http://stackoverflow.com/a/392926/127880 <comment><USER2> "This question exists because it has historical significance, but it is not considered a good, on-topic question for this site"

This is sad.

We need to set stack exchange free. The community failed in creating a free and open environment for asking and answering questions: A place where information may be categorized but never restricted even if it's bad. To be bad it must exist first, if you restrict the existence of crap, it won't be crap anymore, because it won't exist.

Stack exchange is a walled garden run by members blindly following a doctrine put in place to increase revenue in the first place.

<comment><USER3> I agree with many of your points. Some of the StackExchange sites have degenerated into being virtually unusable unless you align yourself with the small group of people who viciously down-vote and close otherwise useful and relevant questions. The idea is/was great, but in some corners it seems to be starting to derail.

<comment><USER4> Yes, you have to agree with the groupthink or you are basically an outcast. That said, I think it is still very useful.

I mean on some level I think it's sort of stupid. The original idea always centered around SO being a blog for programmers that don't really blog; at least that was what was constantly talked about. However, any question or answer that contains any semblance of personality is struck down or edited to an extreme. It's really anal retention run amok. But it's still useful. :)

<comment><USER5> > _The original idea always centered around SO being a blog for programmers > that don't really blog; at least that was what was constantly talked about._

I used to listen to the early podcasts and I never got this impression. As far as I can tell SO has always been run much the same way - aimed at getting the top google hit for direct questions like "how do I make my button transparent." For the most part they are succeeding. Questions like "list of freely available programming books" have always been outliers.

Now that they are not allowed at all, maybe the old ones should be hidden instead of being shown as "locked."

StackExchange is an SEO company, not your blog hosting company. Just because you find a topic interesting does not mean it is their job to host your discussion/poll/list-of-lists etc. for it.

<comment><USER4> No, go back and listen. The blog thing was always there. It was a part of Atwoods general opinion that people are better off if they are totally in the public.

</comment></comment></comment></comment></comment><comment><USER6> Many of the best questions on Stack Overflow end up "closed as not constructive." I get that it keeps the site on-topic, but it's a shame when a really productive and amazing discussion gets shut down arbitrarily.

<comment><USER7> The problem is that the Q&A format is a very bad to ask for list of things. A "wiki" would be a much better format to have list of things that everyone can contribute to. Q&A is also a very bad format for discussion. Traditional forum, Reddit or Quora are much better choice for discussion. It's a simple mater of using the best tools for the best job.

<comment><USER8> It occurs to me--I don't think there's any real "social site" focused on making lists. The closest things we have are social bookmarking tools--but those have a ranking algorithm that highly weights _novelty_ , causing the front page to resemble a stream of ephemeral content mixed with periodic reposts of evergreen content.

\---

How could we improve on this?

[Anyone who wants to do the following is welcome to; I've too many startups on the go already.]

Imagine something like Reddit--with each list being a "subreddit"--but:

A. there's no time-weighting in the front-page algorithm (though there is a "new" page); and

B. there are robust mechanisms in place for preventing duplicate entries from being created, and merging duplicates (along with their votes and comments) into the canonical versions.

Additionally, since the lists created will be far more static, you might want to give people greater influence over the ranking system--using <http://en.wikipedia.org/wiki/Cardinal_voting_systems>, for example.

<comment><USER9> Letter grades from A - F would be a good idea. Their meaning and use has been ingrained since childhood.

<comment><USER10> > Letter grades from A - F would be a good idea. Their meaning and use has > been ingrained since childhood.

In many countries A - F grading system is not commonly used. For example in the country where I was born they use 1 - 5 grading system and A - F means nothing. I think rating with stars is much more widespread and would be wiser choice for any project with global ambitions.

</comment></comment></comment></comment></comment><comment><USER11> Nice work ralph

</comment><comment><USER12> Nice! Thanks for sharing!</comment>


Tit-For-Tat Office Hours with a Seed-Stage VC - <AUTHOR> https://codingvc.com/tit-for-tat-office-hours-with-a-seed-stage-vc/ <comment><USER2> Glad to see Leo doing this, his fund was an investor in my company so I've gotten to experience a few rounds of Leo office hours, although we didn't call them that at the time. He was very helpful and smart in my experience.

On another note the usage of Tit-For-Tat seems a bit weird in this context since I think it's generally reserved for retaliatory exchanges rather then beneficial ones.

<comment><AUTHOR> Hey Joe! Oops, my bad on the word choice. I read a book on social altruism a while ago which talked about tit-for-tat in the context of game theory (i.e. why people do nice things for strangers). I didn't realize the term has a mostly negative context.

<comment><USER3> I think the parent comment is mistaken. I've always heard this used as referring to exchanges of roughly equivalent things- whereas, "an eye for an eye" leans negative, "tit for tat" is neither negative or positive. To me it simply suggests the idea of a balanced exchange.

EDIT: The dictionary, and the historical roots of the term, seem to agree with the parent though. Maybe I'm just an optimist and never noticed the underlying connotation of violence.

</comment></comment></comment><comment><AUTHOR> This is an experiment I've been wanting to run for a while. If anyone has questions or suggestions, I'd love to hear them.

<comment><USER4> Sounds like a great idea and wish you the best of luck. I'd love to hear your thoughts after the sessions. The restriction on "no pitches" makes sense in that context since it's a pay-it-forward/advice style forum.

How do you think a similar experiment could be conducted that tries to solve one of the main problems a founder has with raising capital: getting a warm intro? Advice on a pitch is only helpful if there's someone to listen to the pitch! Something like office hours as "open auditions" for pitches?

<comment><AUTHOR> It varies investor to investor. For reaching investors who only take warm intros, it's hard for me to help. There are other investors, like me, who reply to cold emails when they're personalized/well-targeted. Founders don't need any kind of audition to talk to the second investor group... they just need to send a relevant email (i.e. not "Dear Sir or Madam, here's a form letter about my company that I'm bcc'ing to 50 investors..")

</comment></comment></comment><comment><USER5> Had a chance to have a 1:1 with Leo a few years back. We chatted mostly about technical topics around building analytics platforms in-house with limited resources. He offered really good advice and was extremely generous with his time. Even if you just need a sounding board, I recommend that you take him up on this offer.

</comment><comment><USER6> I've enjoyed your writing and so yeah, I'll do this.

However I do have one question. Why Caltech? Going to Caltech for computer science seems like becoming a Navy SEAL in order to work as an aerobics instructor. I suppose you could do that but it does seems like overkill.

<comment><AUTHOR> I originally decided to go to Caltech because I loved math and science and thought I wanted to be a math major. I ended up "pivoting" to CS pretty quickly. I never had any plans of entering venture capital -- it just happened by circumstance.

</comment></comment><comment><USER7> I have been thinking about doing office hours for a while. The proper hacker spirit would be to do it at like 10pm at Happy Donuts in Palo Alto.

</comment><comment><USER8> Really cool to see Leo doing this. If he ever moves to an online version of this, I'll be the first to sign up. Huge fan of his blog.

</comment><comment><USER9> > * Founders assume VCs don't work during the holidays, so they don't try > setting up pitch meetings. As a result, VCs don't have any work to do and > end up going on vacation. =\

This is interesting. I wonder if founders who ignore this assumption would have better success raising money. At the very least, they'll have more attention from the VC during their meetings.

<comment><AUTHOR> It's probably a wash. For the VCs that aren't on vacation, you likely have a higher chance of getting a meeting since their schedules are emptier. But the decision-making bar generally won't move up or down much regardless of how much free time investors have.

</comment></comment><comment><USER10> >> "If this experiment is successful, I'm open to online office hours in the future."

Agree that in person is better for a number of reasons, but is there any reason not to allow the slots to be filled by online/voice meeting if you can't fill the slots with in person meetings?

<comment><AUTHOR> My two reasons: 1) I don't have an office near where I live, so I plan to have the meetings at a local cafe (not ideal for online/phone meetings). 2) If this works well I'm totally open to online in the future.

</comment></comment><comment><USER11> Hey Leo, is this best suited for 1 on 1 or a team (say 2) of cofounders?

<comment><AUTHOR> 1:1 or 1:2 would both be fine. I think this format is best suited for one startup at a time though -- I suspect 20 minutes should be enough to have an interesting conversation about 1-2 things, but probably not 1-2 things about each of 2 different companies.</comment></comment>


"Cultural fit" is bullshit - <AUTHOR> http://asserttrue.blogspot.com/2015/06/cultural-fit-is-bullshit.html <comment><USER2> Probably going to get down-voted to hell for this on a place like HN, but here comes reality.

The legal and idealistic views of how people should act like have nothing to do with how they (we) actually act and behave. Humans are animals. We want to be around and work with people we like, who happen to be people that are most similar to us. Cultural fit is more than a thing, it's an instinct. You can reason about how it might be wrong but you can't shut it down. When are people most productive? When they feel part of an "inner circle", a company "us" vs "them" (competition) mentality. Teams with the strongest sense of unity tend to be among the most productive and group cohesion depends on the human factor. You can inspire cohesion by telling people how they should love and get along with everyone and having non-stop team building activities, which works - kind of. Or you can put together a group of people that will naturally form strong bonds and work well together.

Interestingly, only bigger corporations reap the best of both worlds: satisfying the trendy PC urges while still having optimally (naturally) functioning teams by forming many offices / silos of "identity groups". For people who think this is rubbish or work in a mash-up of an office, you will notice that people naturally gravitate towards those who are most similar to them and spend their after-hours / lunch break with them. Not saying it's right, but this is how things work. More importantly, it's rubbish that we are required by law to do the opposite. If you start a company with a couple of guys you grew up with and it works great, all of you are pulling 12 hour days because you genuinely enjoy being there, have open conflict in the office so you can get it out of the way and move on, etc.

The next thing you know this product you and your friends built is racking in 5 digits a month, so you hire a few more people - usually friends of friends - to help out. A year or two later, you're up to 6 digits and you need to hire more people, but now you are required by law to hire one of every minority and center out the gender ratio 50/50\. For all the talk of race and gender "blindness" / "equality", mandates to have certain numbers and percentages of each are extremely hypocritical. The real question is are these people really racist / sexist / [trendy label here] or do they just want to be able to work with people they enjoy being around? In the end, "Cultural fit" is the last bastion of maybe having some wiggle room to hire people you actually want to hire into a company you built.

<comment><USER3> Can you link to a study where any of this has been empirically proven?

<comment><USER4> I can : [http://nreilly.asp.radford.edu/kristof- brown%20et%20al.pdf](http://nreilly.asp.radford.edu/kristof- brown%20et%20al.pdf)

</comment></comment></comment><comment><USER5> >>> Many HR professionals know the unstructured interview has little value for predicting employee performance, yet persist in using this discredited technique. Why? Two reasons are commonly given.

And there's the third, which is 'no one ever got fired for buying IBM'.

Yes, in the HN community it's widely accepted that the typical approach is suboptimal. But HN is a niche.

Outside this niche, many people still think it's a good approach as they probably haven't witnessed any different. Or they have no substantial incentives to try new approaches because they might get loads of blame if a bad hire is made (it's your fault because you tried these fancy interviewing thigs!).

Therefore, if the approach will ever change widely, outside our niche), a decade probably won't be enough.

</comment><comment><USER6> For dry academia, Lauren A. Rivera's papers are pretty entertaining reads:

[http://www.asanet.org/journals/ASR/Dec12ASRFeature.pdf](http://www.asanet.org/journals/ASR/Dec12ASRFeature.pdf) [http://ann.sagepub.com/content/639/1/71.abstract](http://ann.sagepub.com/content/639/1/71.abstract) [http://www.sciencedirect.com/science/article/pii/S0276562410...](http://www.sciencedirect.com/science/article/pii/S027656241000065X)

It's pretty astounding that the people advising the largest companies in the world make their own hiring decisions based on whether they think the candidate is a "tool" (their words) or not.

</comment><comment><USER7> Cultural fit is a thinly veiled excuse to not hire perfectly qualified people usually because of some (usually illegal) prejudice that can't be expressed another way. It's a way to skirt the law and a simple reason to turn down applicants that can't be questioned.

It also seems to refer to expected traits of not only applicants but current employees that cannot be mandated by contract explicitly. I have seen it argued that not working weekends went against the culture of a company and therefore there was a bad cultural fit. What a load of B.S. It seems these cultural values into which one must fit are always negative ones from the point of view of the employee. Free work. Limited, narrow thinking. Even pleasing and worshipping the boss. I have heard of very few companies that value vacation as their cultural values and would turn away people who overwork themselves into burnout.

Either way, it's something toxic that companies would be much better without.</comment>


A 3rd party is needed consisting of tech,professors, scientist and philosophers - <AUTHOR>

They need to infiltrate all levels of government to fully change the system from within. I think its the only way to fix the system. <comment><USER2> That would put all the clever people in a minority party, where they are the opponents to the politicians and the media. Best to guarantee scientists a place in all governments (like the Surgeon General) without making it a political position.</comment>


Quantum physics proves that death is an illusion - <AUTHOR> http://csglobe.com/quantum-physics-proves-death-illusion/

<comment><USER2> You have to worry about a notionally scientific article that cites the Daily Mail as its only reference.

See [http://en.wikipedia.org/wiki/Biocentric_universe](http://en.wikipedia.org/wiki/Biocentric_universe) for a less breathlessly uncritical overview.</comment>


QUIC as a solution to protocol ossification - <AUTHOR> https://lwn.net/Articles/745590/ <comment><USER2> Honestly, I am kind of disappointed at QUIC.

It could have been much more...

* there is no support for non-reliable streams

* I am not keen on the variability and non-alignment of the whole header (which can go from 0 to 60+ bytes).

* it points too much towards just reducing the RTT for the initial connection (0RTT is a bad idea, especially if your application now needs to handle the special case of the connection being 0RTT or not).

* There is no support for datagrams, just datastreams.

* Perfect forward secrecy is not granted on the initial handshake (you need to explicitly do a second key exchange for that)

* Forward error correction is actually cool but just using XOR is too limited.

* The proof of ownership of the connection is one incredible hack

And these are just the things I remember from looking at it a couple of years ago. Still, it's a nice improvement over older protocols.

To those that are going to comment something like "Well, then do your own": that's exactly what I'm doing although it's going slowly as I don't have Google's budget.

<comment><USER3> Regarding non-reliable streams: There is [https://tools.ietf.org/html/draft- tiesel-quic-unreliable-str...](https://tools.ietf.org/html/draft-tiesel-quic- unreliable-streams-01), while it won't be part of the initial standard, it's likely that the working group makes sure that it can be added later.

<comment><USER2> did not see that, thanks for the link

</comment></comment></comment><comment><USER4> One of the things that I don't like about TCP is that it really goes out of its way to emulate a stream of data over a wire. This then leads to things like Nagle's algorithm that deliberately slow it down.

This is problematic when doing things like HTTP, or any of the infinite RPC schemes that come into popularity every few years. (REST, Thrift, Protocol Buffers, ect.) As a programmer, we're trying to send a request of known length and get a response where the server knows the length. As TCP makes this looks like a wire stream, it means that the protocol implementer needs to disable Nagle and implement logic that figures out where the requests begin and end; even though most likely these boundaries are the packet boundaries.

Think of it this way: An HTTP GET request may fit into one or two IP packets; but the nature of TCP streams means that the server's HTTP API needs to find the \n\n to know when the request headers end. Instead, the stream API itself should just be able to say, "here's a packet of 300 bytes!" Furthermore, if the client didn't disable Nagle, its TCP library will deliberately delay sending the header for 200 ms.

The reality of the TCP API is that it's great for long streams of data. It just isn't optimized for half of its use case.

<comment><USER5> It's a common misconception that Nagle's causes the delay problem. The problem is tcp delayed acks. Nagle's can improve network efficiency (and latency as a result) on slow links. On fast links it shouldn't have much impact at all.

The rest of what you said doesn't make much sense to me. Searching for \n\n is a property of HTTP, it's nothing to do with TCP. TCP is meant as a generic connection oriented protocol that uses packet switching, and it's largely optimized for that.

The main benefit of QUIC it seems is that it hides itself in UDP so middleboxes don't tamper with it. It isn't really a fault of TCP itself that middleboxes mess it up so much.

</comment></comment><comment><USER6> I think we definitely need more standalone libraries for both servers and clients to really see QUIC's adoption flying. Nowadays it's either a Go library some people have written or scavenging Chromium sources for libquic - which is way less than ideal.

<comment><USER7> The protocol is quite complex, unfortunately, and also in flux, which deters a lot of companies from adopting it in their supported solutions.

There is also the issue of HTTP/2 ... just because the major open source servers have implementations for it, it doesn't mean that it has been assimilated to its full capabilities in hundreds of other stacks. For many organizations, it's hard to sell internally the adoption of yet another protocol in such a short timeframe.

<comment><USER8> You're also using a protocol that changes at every version of Chrome, making you only compatible with the last version of Chrome if you're keeping up to date, or with multiple versions if you're willing to do that to your code.

Chrome is also only talking QUIC to Google websites, not sure how you would go about making it work with other websites (ask the G maybe?)

<comment><USER9> Wait until the IETF-version is finished and build on that? (it's a bit confusing it is named the same, since it is not just a version of Google's)

<comment><USER8> it'll either NOT happen, or if it does it will probably be in ages.

<comment><USER10> I don't think that's true. There's a lot of momentum in the space, and several large vendors have IETF-quic implementations that are pretty interoperable already.

</comment></comment></comment></comment></comment></comment><comment><USER11> David Benjamin has proposed the GREASE proposal for TLS. Basically, random values of future flags are thrown around so that servers (not middleboxes) have no choice but to process them. I think it is a good idea, but there are still occasionally niggles such as certain machines processing different meanings for specific flags, causing them to not be able to speak TLS 1.3.

<comment><USER12> Cloudflare had an interesting blog post[1] a month ago about TLS 1.3. It talks extensively about ossification and the GREASE proposal.

[1] [https://blog.cloudflare.com/why-tls-1-3-isnt-in-browsers- yet...](https://blog.cloudflare.com/why-tls-1-3-isnt-in-browsers-yet/)

Previous HN discussion of the post: [https://news.ycombinator.com/item?id=16010930](https://news.ycombinator.com/item?id=16010930)

<comment><USER13> CloudFlare's Filippo Valsorda also dives into the nitty gritty of their TLS 1.3 implementation here:

TLS 1.3 - CloudFlare London Tech Talk

[https://vimeo.com/177333631](https://vimeo.com/177333631)

And his experimental golang crypto/tls pkg:

[https://github.com/cloudflare/tls-tris](https://github.com/cloudflare/tls- tris)

</comment></comment></comment><comment><USER14> > _The first byte of the clear data was a flags field which, he said, was > promptly ossified by a middlebox vendor, leading to packets being dropped > when a new flag was set.

That was a classic example of why changing network protocols is hard and what needs to be done to improve the situation. Middleboxes are the control points for the Internet as we know it now. The only defense against ossification of network protocols by middleboxes, he said at the conclusion of the talk, is encryption._

So apparently we're now at a point where _any_ middlebox trying to make any use of a protocol higher than IP counts as "ossification"? No matter if the middlebox is well-behaved or not.

And the only solution naturally is to make any stack parts higher than IP completely unusable by middleboxes by encrypting them. I guess this is make sense if you already fully control both clients and servers and get annoyed by middleboxes restricting your freedom to change the protocol on a whim.

However, this seems like a major change in the vision of the internet to me. So has the internet community at large now agreed that we want to get rid of middleboxes completely? What about middleboxes I want to employ myself, e.g. to watch my own traffic?

<comment><USER15> > However, this seems like a major change in the vision of the internet to me.

The vision of the Internet is that the network does little more than moving packets from point A to point B, with all the intelligence being in the endpoints. That way, the core network doesn't have to be upgraded for every little change in the protocols; protocol evolution happens on the edges of the network. Please read the classic "World of Ends" ([http://www.worldofends.com/](http://www.worldofends.com/)), and the technical article it links to, "End-to-end arguments in system design" ([http://www.reed.com/dpr/locus/Papers/EndtoEnd.html](http://www.reed.com/dpr/locus/Papers/EndtoEnd.html)).

<comment><USER16> Is it middle boxes that do TTL-- as in ping?

</comment></comment></comment><comment><USER17> Coincidentally came across this while looking up a board game: "The hidden costs of QUIC and TOU" [https://www.snellman.net/blog/archive/2016-12-01-quic- tou/](https://www.snellman.net/blog/archive/2016-12-01-quic-tou/)

<comment><USER18> While I still stand behind what was written in that post re: the non-endpoints needing the ability to troubleshoot networks, it might not be totally up to date.

A caricature of the stakeholders in QUIC standardization would split them in three groups:

\- The privacy cabal thinks that every single bit of unencrypted data is unacceptable, since with enough statistical evidence over enough data paths it could be used to deduce some bit of totally irrelevant information about a user.

\- The operator cabal believes that any bit of encrypted metadata (but not payload data) is unacceptable, since there could be some valid operational reason to access it.

\- The ossification cabal believes that any bit of unencrypted data is unacceptable, since somebody in the operator cabal would end up misusing it, and accidentally fix the protocol in place.

Now, obviously actual humans are more nuanced than that. Still, at the time that was written, it appeared that there was absolutely no chance of getting any manageability metadata at all. These are not positions conducive to compromise. (And the lack of that kind of data leads to horrible things like using the TCP traffic going to client X to infer measurements on the QUIC traffic going to the same client).

But at the moment it feels like it might be possible (but nowhere near guaranteed) for the standardization to export some minimal amount of transport layer data. See for example the spin-bit proposal [0], where just 1-2 bits of incredibly non-sensitive data would already go a long way. Give me a single spin-bit and say 3 low-order bits of the packet number, and I'd be happy.

[0] [https://tools.ietf.org/html/draft-trammell-quic- spin-01](https://tools.ietf.org/html/draft-trammell-quic-spin-01)

</comment></comment><comment><USER19> I have a question about an older UDP-based protocol. I was wondering for a long time whether UDT is worth it and in which scenarios. Has somebody tried it or is it kind of outdated?

<comment><USER20> UDT solves problems tcp has with congestion especially at 10Gbit+, this gives it a much higher throughput that tcp and pretty much anything else at 10Gbit+. I don't think it did much to fix latency issues which I think quick is more focused on.

If you are interested in low latency protocols you should check out minimaLT[1] better performance than QUIC but the connections are portable across ip's so its better for mobiles, and can tunnel multiple connections together. DJB helped out with design so you know its super secure.

[1] [https://cr.yp.to/tcpip/minimalt-20130522.pdf](https://cr.yp.to/tcpip/minimalt-20130522.pdf)

</comment></comment><comment><USER21> For those of you using Go, it's been an absolute pleasure to use [https://github.com/lucas-clemente/quic-go](https://github.com/lucas- clemente/quic-go).

FWIW.

</comment><comment><USER22> I failed to find anything a few times in the last years, so maybe it does not yet exist, but maybe someone here has any pointers.

How can linux' iptables/netfilter match quic packages. Because quic is no ip protocol (but on top of udp) `-p quic` will not be implemented. Will one has to write a quic helper, so that one could match using `-m helper --helper quic`? I tend to think so, but I failed to find such a helper.

Is there some difficulty I fail to see? Or is nobody interested (because nobody uses linux as a router)?

<comment><USER23> It should in principle be possible to classify brand new Quic connections, since a tiny handful of its fields are cleartext during the initial handshake (flags and version, in both client/server directions)

As for classifying existing Quic connections, it might get a little messier. There are still some cleartext fields but it might require observing multiple packets in the flow before making a guess the traffic is likely to be Quic.

Meanwhile an explicit design goal of Quic is to avoid interference from middleboxes, so it would be no surprise if a perfect iptables Quic match is or remains impossible.

<comment><USER22> I don't want to mess with the content in any way, I do want to send connections over more than one WAN, depending on utilization. That works great with https?-connections on tcp. It would be great to be able to do the same with quic connections.

<comment><USER15> > I do want to send connections over more than one WAN

QUIC has something which can help with that (from [https://tools.ietf.org/html/draft-ietf-quic- transport-09](https://tools.ietf.org/html/draft-ietf-quic-transport-09)):

"QUIC connections are identified by a Connection ID, a 64-bit unsigned number randomly generated by the server. QUIC's consistent connection ID allows connections to survive changes to the client's IP and port, such as those caused by NAT rebindings or by the client changing network connectivity to a new address."

If that's not enough for your use cases, now is a good opportunity to mention them and suggest enhancements, since the IETF standard is still under development.

<comment><USER22> I don't think this will work for randomly sending over one or the other connection, but I will just have to test to be sure.

</comment></comment></comment></comment></comment><comment><USER17> How do QUIC features and capabilities overlap with those of HTTP/2? For example would using them both defeat the purpose of using one in the area of encryption or transfer speed?

<comment><USER8> You SHOULD use both of them at the same time. HTTP/2 intertwines your data by using different streams, except all of that is on top of TCP and one stream blocking (because a packet was dropped for example) will block the other streams. This is called head-of-line blocking and you basically can't do much to fix this in TCP unless you create multiple TCP connections for your different resources. But this has a bunch of other issues, you will need to figure out congestion control for each separate TCP connection even if they're connecting to the same service :/

QUIC also has multiple streams, but it doesn't have this head of line problem and other streams will continue to work fine if one stream blocks. So QUIC was made for HTTP/2, where your HTTP/2 streams are basically replaced by QUIC streams which are not affected by loss of packets at all.

If you want to see how loss of packets affect an HTTP/2 connection over TCP, it's pretty bad. In general if you're on a lossy connection you should just use HTTP/1\. Check this awesome talk: [https://www.youtube.com/watch?v=0yzJAKknE_k](https://www.youtube.com/watch?v=0yzJAKknE_k)

<comment><USER24> I looked for this some time ago, but IIRC there's no third party implementation that does that. e.g integrating quic-go and grpc-go

</comment></comment></comment><comment><USER25> _"One key feature of QUIC is that the transport headers — buried inside the UDP packets — are encrypted"_

I'm not sure I completely understand this, but does that mean you get net neutrality for free if you use this?

<comment><USER26> Not for any useful definition of net neutrality; IP addresses are still visible for ISPs to discriminate on.

</comment></comment><comment><USER27> Makes me wonder whatefver happened to PGM Reliable Transport Protocol Specification

\- [https://tools.ietf.org/html/rfc3208](https://tools.ietf.org/html/rfc3208)

Not an entirely dissimilar concept. LBM/29West being its successor.

</comment><comment><USER28> Instead of making order guaranteed on UDP, allow removal (delay) of guarantee from TCP:

[https://www.ietf.org/id/draft-add-ackfreq-to- tcp-00.txt](https://www.ietf.org/id/draft-add-ackfreq-to-tcp-00.txt)

</comment><comment><USER29> For cases where the payload is small (<100kb), Caffeine ([http://www.caffei.net/](http://www.caffei.net/)) is a good solution (TCP based)

</comment><comment><USER30> I wonder what is the real difference between QUIC vs SCTP-over-UDP?

<comment><USER3> Lower connection establishment latency: SCTP over UDP using DTLS requires 4 roundtrips (that's worse than standard TCP) while QUIC (which includes DTLS like encryption) only requires 1 roundtrip for the first connection and 0 RT for subsequent connections, when it cached some information.

<comment><USER30> Thanks, I found this: [https://docs.google.com/document/d/1RNHkx_VvKWyWg6Lr8SZ- saqs...](https://docs.google.com/document/d/1RNHkx_VvKWyWg6Lr8SZ-saqsQx7rFV- ev2jRFUoVD34/mobilebasic#h.nvk2biis6bpk)

"One of the major and believably achievable goals of QUIC, is to predominantly have zero RTT connection (re)establishment, as was mentioned in goal 3a above. It is highly doubtful that SCTP over DTLS can come close to achieving that goal."

\----

I actually think the "zero round-trip-time" claim is a bit too strong. It's only 0RTT if you've communicated before, so in a way it's not a new connection. There's a privacy implication here -- you should wipe that state between communications to be more anonymous -- and also you only get "predominantely 0RTT" with an increasingly centralized web.

</comment></comment></comment><comment><USER31> The title really should be "UDP as a solution to protocol ossification". QUIC makes the point that you can develop a new transport-ish layer over UDP. Developing a new protocol on raw IP packets apparently gets blocked by firewall boxes around the world.

<comment><USER32> My take-away from the article is actually "encryption as a solution to protocol ossification". If some data (headers, etc.) is available as clear- text, there _will_ be routers that act on it and possibly misbehave or block traffic when they encounter new patterns.

So the article suggests that making it impossible for routers to inspect any protocol-specific information (via encryption) helps with this problem. Routers can't act on fields they can't read.

<comment><USER33> But then you have the whole industry of "security appliances" against you, which do want to have a look, and which do want to MITM everything - ironically arguing that this makes everything safer, depite becoming themselves a huge attack surface.

<comment><USER31> Ya but they're wrong.

<comment><USER16> They're interested in business security at least, security of their own business I mean.

</comment></comment></comment></comment></comment><comment><USER34> Heads up to the lazy folks: the article is much shorter than the scroll bar suggests.</comment>


Learn About Google Glass And The Mirror API On YouTube - <AUTHOR> http://techcrunch.com/2013/04/04/couldnt-make-it-to-sxsw-now-you-can-learn-about-google-glass-and-the-mirror-api-on-youtube/ <comment><USER2> It's a real bummer to hear that the planned API doesn't talk directly to the hardware. It makes sense from a speed/service perspective, but a product that only works through Google services is hardly worth purchasing.

What if Google changes the game? Drops support? Creates a walled-app garden, etc.

If Glass is to take off, especially in a "Googley" fashion, it probably needs to be at least as open as Android.</comment>


Plagiarizing and Paraphrasing Code from an Online Class for Content Marketing - <AUTHOR> http://minimaxir.com/2015/09/code-of-plagiarism/ <comment><USER2> > _But the willful and unnecessary paraphrasing of code, replacing all the > CamelCase variables with underscored variables, and code which is worse than > the original, is hard to overlook. "I recommend you for example this edX > course" does not give sufficient credit to the teachers and staff of > CS100.1x._

Anyone here have access to one of those code-plagiarizing detection systems used at CS schools? How would it fare on this kind of obfuscation?

I know that a plagiarized program that tries to just futz variable names is probably computationally easy to detect. And even extremely computationally exhaustive comparisons would be feasible, because the average college only has to deal with a few hundred to a thousand students a semester.

But would the algorithm even have to be more sophisticated than doing just a plain diff and applying some heuristic, even just the ratio of identical lines to total lines? My perception of students who would cheat in a 101CS class is that they are so incompetent that they don't even know how to change a variable name in a program without breaking the code...nevermind rearranging the order of a loop operation. Any student who could confidently obfuscate their plagiarism of 101-level program assignment is probably smart enough to just do the program themselves.

<comment><USER3> At the Royal Institute of Technology (KTH), Stockholm a tool was developed called KATTIS ([https://kth.kattis.com/](https://kth.kattis.com/)) that not only check submitted code for plagiarism but also verifies it with test input/output as well as measuring execution time/memory usage.

There is a paper with more details "Five Years with Kattis - Using an Automated Assessment System in Teaching", [https://www.csc.kth.se/~gkreitz/kattis- fie11/](https://www.csc.kth.se/~gkreitz/kattis-fie11/)

The system is still developed and there is now an open version of it with a huge problem archive (competitive programming style) used by several universities: [https://open.kattis.com/](https://open.kattis.com/)

Trivia: KATTIS was originally very much developed by KTH's successful competitive programming team "Three-headed monkey", consisting of some PhD students ([https://www.csc.kth.se/~gkreitz/](https://www.csc.kth.se/~gkreitz/)) that did their thesis on stuff like streaming and encryption which in turn resulted in the company... Spotify.

</comment></comment><comment><USER4> > And more underscore variables?

Variable names and function names are supposed to use underscores and not Camel Case in Python. I wish people who are writing tutorials teaching people Python would at least glance at PEP-8.

</comment><comment><USER5> I can't seem to get the page to load even though

        --- minimaxir.com ping statistics ---
        7 packets transmitted, 7 received, 0% packet loss, time 6223ms
        rtt min/avg/max/mdev = 443.694/691.180/969.051/196.041 ms

<comment><AUTHOR> It should work fine after a reload or two.

I've been attempting to debug connection issues for a long time to no success. Somehow, _curl_ works, but not _dig_ , which baffles me.

I _think_ it's because of the interaction between CloudFlare and GitHub Pages. If anyone has a solution, let me know.

</comment></comment><comment><USER6> I did the first of the Spark courses too. I'd second the recommendation, though I did it without knowing Python and I got through OK.

Is it possible that the author wrote this without mentioning the course to avoid giving away the answers to the course?

</comment><comment><USER7> Alternate theory, there was never an obfuscation attempt. They simply ran it through a code formatter. Still, it's unattributed, so I am not sure it matters.</comment>