Intellectual Humility - <AUTHOR> https://www.shanesnow.com/articles/intellectual-humility <comment><USER3> I found that as a father teaching my children to confidently, and respectfully, challenge me has brought a tremendous amount of peace to the family.

Sometimes you are wrong and you really need help to overcome the emotional baggage that blocks you from admitting it.

Having people in your life that are strong enough to deal with the discomfort of confrontation with the singular goal of peace is more valuable than your pride.

But it also allows the same interaction to be reciprocated when others are wrong in the family and it's a self supporting system to overcome arrogance, angst and many other negative events and emotions.

<comment><USER4> > Sometimes you are wrong and you really need help to overcome the emotional > baggage that blocks you from admitting it.

Teaching my children that it's okay (and indeed desirable) to admit when you were wrong, and if need be, to make amends, by direct example, is one of the best things I do as a parent, I think.

But I'm also upfront with the reasoning around it - 1) I consider it a moral imperative of a good member of a society and 2) being willing to acknowledge and own my mistakes has been a major factor in my success in life - <USER2> in IT where there's a lot of intellectual pride, it can really take people by surprise.

And likewise, I have to model the behaviour I want them to show in their actions within my family. And I'll admit my heart swelled with love and pride when my 15 year old son who had a rather big row with his step-Mum wherein both said things that were hurtful to the other out of anger, initiated a conversation soon after to apologise for what he said, and she apologised what she said, and they both agreed to work harder. I know how much guts that took him, and I think it surprised my partner - she was going to take that initiative later that day when there were less younger siblings interrupting, but it was obviously weighing on his mind.

I like to think that my teaching and example were reflected in his bravery in initiating what is a hard conversation for grown adults, let alone teenaged boys.

<comment><USER3> That is a great story, and I agree that it seems your son following your example. I have never seen a child successfully change a behavior that the parent refuses to change first, unless they have some kind of personal epiphany, which I've only really seen from teens or young adults that have just left home.

I have had the same experience in IT, it's brutal to have false accusations of system failures so causally thrown my way. (It's what got me to put GIT on all template editors) But it's also good experience to have so I don't repeat to back towards others because it feels so debilitating.

I appreciate the "desirable" part of your statement, as it certainly is better to give up on a false premise quickly than to try and defend it only to have fail on you later.

</comment></comment></comment><comment><USER5> _> On the other hand, philosophers agree_

That's hilarious. I've never noticed philosophers agreeing about anything.

One thing I would question is the necessity of having viewpoints _at all_ about things which aren't connected to some problem in my life. I don't need to take a position about whether triangles are better than octagons, for instance, unless I'm trying to build something out of octagons. Sometimes opinions are necessary, e.g. a physician must make a diagnosis, but on the whole progress depends upon solving problems and not upon debating them. Furthermore, the best way to persuade others you have solved a problem is to ignore them and use your solution to make further progress.

<comment><USER6> > the best way to persuade others you have solved a problem is to ignore them > and use your solution to make further progress.

While I don't generaly recommend doing this with superiors at work, it got me a promotion once.

I was a middle level developer and was tasked with building the authentication layer of our monolithic application.

Our team lead insisted that I created a microservice for that for "futureproofness sake". I argued that keeping the code inside our monolith would have many benefits like shaving dev time and being simpler to mantain.

By chance the CTO was nearby, got interested in our discussion, and gave me the choice as long as I could deliver the promisses and demonstrate the benefits.

I went home and wrote the authentication layer in a sleepless night. It was finished next day, included some tests and the code was trivial to understand.

A month later my team lead was downgraded and transfered to another team (he left the company not long after) and I was promoted to team lead senior dev.

Be careful when pulling stuff like this because often your superior has more experience and does know better.

In my case the team lead was a bit too much hype driven and it resulted in his downfall.

<comment><USER7> I love that. It seems to me that people around me can be so tunnel visioned and obsessed with micro services which in the end just creates so much complexity and it will be just much more difficult to maintain and debug in the future.

</comment></comment></comment><comment><USER8> Beware dark pattern: the humility "test" asks for your email at the end rather than give you a score - sad.

<comment><USER9> It does mention that before you start - I backed out right away.

Someone who knows about psychology: Is this article anything more than advertising for his "academy"?

<comment><USER10> I can't bear reading it, just the "pre-roll" paragraphs read like a Tim Robbins motivational speech where each paragraph is a soundbite that is supposed to be profound or move you.

Or to say it with a 4chan meme: [https://i.imgur.com/94LyLm1.png](https://i.imgur.com/94LyLm1.png)

</comment></comment></comment><comment><USER11> I have the impression that most 'smart' people (at least, college-smart) have lived most of their lives thinking (quite rightfully) that they're the smartest person in any given room.

Such mentality may work quite well for the first 25-30 years of their lives. But then they'll be put to work with other people just as smart as them, and they'll be unable to collaborate constructively.

Some people are able to realise this breakthrough moment in their careers, and improve on their own. For the rest, I wish college had prepared them more specifically for intellectual humility.

<comment><USER12> Smart people collaborate. Scientists collaborate. Flat earthers don't.

<comment><USER7> What? Some flat earthers do collaborate with each other. Some scientists do not collaborate. Collaboration is one aspect of being smart. It is definitely not a full indicator of intelligence.

</comment></comment></comment><comment><USER13> Isn't "Intellectual Humility: The Ultimate Guide" a bit oxymoronic?

<comment><USER14> If the author has a sense of humor anything like mine, yes but it is worth it.

</comment></comment><comment><USER15> On the topic of Intellectual Humility...

> In his entertaining and provocative keynote presentations, Shane Snow > shatters common wisdom through gripping stories and surprising research on > innovation and human behavior. The BBC says that his ideas, "could change > your life," and Maxim adds, "Snow is not telling you how to succeed; he's > daring you to do it."

</comment><comment><USER16> I work for a company where intellectual humility is a core value. It is expected of all of us to be curious and also accepting of being wrong sometimes. I'm in tech, and compared to other places I've worked, there are significantly fewer of the stereotypical pretentious nerd types that are tough to get along with.

Strong opinions, loosely held, is a mantra I use.

<comment><USER17> How does one go about finding such companies?

<comment><USER4> Hmm, good question. I think I work for such a company, I guess an easy tell would be during an interview coding exercise, if they explicitly invite you to use a search engine or API documentation etc.

In a company where people take excessive pride in their intellect, I find that it often manifests in the "What, you don't know this exact thing I don't know?!" attitude you can find in some interviewers (to quote the infamous tweet: "Google: 90% of our engineers use the software you wrote (Homebrew), but you can't invert a binary tree on a whiteboard so fuck off.")

Likewise, if they want you to write actual code, their culture of intellectual humility will manifest in asking beforehand if you have a preferred tool and making it available, or inviting you to bring your laptop etc. instead of forcing you to write code on a whiteboard (bonus points if they point out every semi-colon you missed), or in their arbitrary editor of choice, complete with customised key-bindings that combine the "best" of Emacs AND Vim.

<comment><USER16> I think this is a good start for sure. I had a take home assignment. Also, a lot of the interviewing was personality based, so that was a good sign too.

</comment></comment></comment></comment><comment><USER18> Too much of this is a simple retelling of haidt's book and Malcolm. Read the original sources and skip the self-promoting dross of the 'intellectually humble'.</comment>


Does wearing glasses weaken your eyesight? (2014) - <AUTHOR> http://www.bbc.com/future/story/20140513-do-glasses-weaken-your-eyesight <comment><USER2> > if they don't have the right glasses they can develop so-called "lazy-eye" > or amblyopia because they've never had a sharp image on their retina

I am not a doctor but this sounds strange to me. (I had amblyopia so I have read a little bit about it.)

One eye's vision needs to be _significantly_ different from another, to the extent brain "decides" it cannot merge images and goes mono-ocular.

This trivially happens with e.g. strabismus, when eyes look at different directions. But with poor eyesight corrected with sub-optimal lenses, it would require that only one eye sees significantly blurry image while another eye sees sharp enough (otherwise person would squint or tilt glasses, adjusting for _both_ eyes - so, no reason for amblyopia to develop).

It is not unusual that a person may have different eyesight with their left and right eye (IIRC that's called anisometropia), but I think it must be quite unusual to have glasses that fail to account for this. Even if glasses are sub-optimal, the difference should be consistent, shouldn't it?

<comment><USER3> You mention you had amblyopia, I'm curious how you got rid of it?

I've had strabismus (i.e. diplopia / double vision) for as long as I can remember. It's pretty minor and I didn't even wear glasses until my 20s but it's such a PITA having to wear 2 different pairs of glasses.

I understand there's a surgery that corrects strabismus where they adjust the eye muscles, just wondering if you or any other HN folks have tried the surgery. The idea of eye surgery is slightly terrifying but would make coding (especially late at night) a lot more comfortable.

<comment><USER2> > You mention you had amblyopia, I'm curious how you got rid of it?

I had surgery.

In my particular case (large-angle strabismus) this was the only sensible option - no amount of therapy would've helped in my case.

If you'd consider a surgery, I'd suggest to talk to at least two different independent doctors (the best you can find and afford) and ask for their opinions on what your possible options are. I basically got a consistent firm "no, not for your condition" and that was it. However, I've heard that for small angles there are ways to fix things with therapy.

Of course, it's somewhat scary but, thankfully, everything went well. The surgery itself proved to be no big deal - sedatives did magic. I was quite nervous, but a few pills I was given had really fixed that. However, there is always a chance of mistake or something not going well, so, of course, one must be wary.

Actually, I had two surgeries. First one was a little bit off and while it corrected most of the problem, a very small angle was still left. I've went through some therapy but, unfortunately, despite my doctor's expectations the muscle had failed to stretch sufficiently.

However, that therapy had semi-fixed the amblyopia - after some exercises with synoptophore I was able to mentally force myself to see with both eyes (with double vision, of course, since alignment was still off). So, after the second surgely, right after the anesthesia paralysis wore off I got my binocular vision back. And I'd say, in my opinion that was really worth it.

<comment><USER3> Thank you for the detailed reply!

</comment></comment></comment></comment><comment><USER4> What an absurd article. It makes a totally unsubstantiated statement near the beginning:

"Whether or not you choose to wear your reading glasses will make no difference to your eyesight in the long run..."

Then goes on to conclude:

"But, returning to adults, what I find curious is the lack of studies that have been carried out in this area."

<comment><USER5> It substantiated that statement by talking about age-related longsightedness as coming from the stiffening of your eye, not from any impact given by reading glasses. You get older, your eyes age along with the rest of you.

</comment></comment><comment><USER6> Everyone in my family said to me as a teen why aren't you wearing your glasses? You know your eyesight will get worse.

Ten years later as a 27 year old I went to the opticians and they had got worse by .25 which my optician told me is so nelgigible that people drop by that in six months.

I know this is hardly a scientific study but I do get suspicious sometimes the advice to wear glasses is coming from the opticians industry rather than hard facts, a bit like how dentists work

<comment><USER7> I'm pretty sure eyesight, if already bad, degrades the quickest in your younger years and flattens when you get older. That's how it happened when I was growing up, and the doctors assured me that I wasn't going to go blind as my experience was "normal."

I haven't had a significant change in eyesight for a while now. What's fascinating is how each doctor has a different interpretation of what a proper prescription is. Some like to give too strong, some too weak.

I switched doctors a while ago, due to a move. The new doctor told me my prescription and I was a little surprised by the difference. I asked her why such a change and she showed me what the world would look like if I was using the prior prescription and it was like seeing a massive blur.

She said she had no idea how I was able to see at all. I was using that prescription for one year, and I didn't have any problems seeing anything before.

(I wear contacts and I sort of need to know my prescription so I know what box goes to what eye as my left and right are different. When I wore glasses, I had no clue what it was)

<comment><USER8> I think you just get used to the glasses you have. For example my current pair of glasses are a high index lens, and adjusting to them took two or three days of being slightly dizzy when walking around.

</comment></comment></comment><comment><USER9> Knew a co-worker who'd worn glasses her whole life said her eye sight got better after she turned 50.

The optometrist told her the muscles around your eye weaken and don't squeeze your eyeball as well, thus changing the focal point.

<comment><USER10> Someone around that age at my workplace had a moment like that too, in fact he went from near sighted to far sighted and had to get new glasses.

<comment><AUTHOR> This HN comment has a good diagram about myopia vs presbyopia: [https://news.ycombinator.com/item?id=16196062](https://news.ycombinator.com/item?id=16196062)

<comment><USER11> That diagram is pretty cool :D

It explains the terms in a visual way with 5 ascii lines (probably a little exaggerating and not 100% correct, but easy to grasp).

</comment></comment></comment></comment><comment><AUTHOR> Previous thread (140 comments) on vision therapy to reduce the need for reading glasses for presbyopia, which starts in late 40s for most adults: [https://news.ycombinator.com/item?id=16194580](https://news.ycombinator.com/item?id=16194580)

</comment><comment><USER12> > Why then do so many people become convinced, anecdotally, that glasses have > made their eyesight worse?

It's so surprising to me that people never consider their in experience and wondering. The first time wearing the correct prescription is amazingly clear. The first time taking them off makes vision much worse than before trying the glasses. Of course it's natural to question if the latter is 'being caused'. That of course is only a feeling or hypothesis, so the more results like this we have the better.

</comment><comment> bjelkeman-again I am pretty near-sighted. I started practicing martial arts ten years ago. When I practice I don't wear glasses. Several hours a week, where I would have worn glasses all the time previously. After a few years I noted that I felt I could see better without glasses than I used to. But my optician says otherwise. It feels like my brain ha gotten better/more comfortable (?) at interpreting what it sees, even if I don't objectively see better. Not sure what is happening, but I am not complaining.

<comment><AUTHOR> Vision therapy is only endorsed by mainstream optometry and insurance companies when glasses don't work, but it has helped some people. You may want to learn more about the approach you've accidentally discovered.

Neuroplasticity: [http://www.allaboutvision.com/parents/vision_therapy.htm](http://www.allaboutvision.com/parents/vision_therapy.htm)

Undercorrection: [https://gettingstronger.org/2016/03/faq-for-vision- improveme...](https://gettingstronger.org/2016/03/faq-for-vision-improvement- by-hormetism/)

</comment></comment><comment><USER13> I've always had 20/15 vision in both eyes, so I've always wondered why there are so many people in the world with bad vision. Actually I can usually bring the word into focus using someone else's glasses- unless they are the super thick coke bottle ones, or they have a really bad astigmatism, in which case I can bring either the horizontal or the vertical into focus but not both. I wish I knew what I did right, or wrong!

</comment><comment><USER14> today there is a pandemic of myopia . if we go to some graduate class of some university probably more than 50 percent are myopic , though some are wearing contacts or done laser . if we talk in terms of evolution or genetics , clearly these people would not have been able to function before the invention of specs , and that was may be a few centuries back . So it is not genetics but something in our environment . That that something is too much near-work for kids before around 20 years without any opportunity for the eyes to relax . We are all born with somewhat a smaller size eyeball . The body gets some feedback from the degree of accommodation from which it elongates just the right amount . I believe if kids wear weaker prescription , reduce near-work , incorporate some good habits like reading from an arms length and taking frequent breaks then myopia can be avoided or reduced . Myopia has a risk of retinal detachment , which can be fixed by laser if done within a few days . For high myopics doing strenuous work like lifting weights or running may be a risk factor .I believe wearing weaker glasses has many disadvantages , but it may reduce the progression of myopia for those kids who are prone to it.

</comment><comment><AUTHOR> _disclaimer: not medical advice, please consult opthalmologist_

There is a genetic component to myopia, i.e. two people can have similar closeup/distance/light exposure as children, yet only one develops myopia. If you are genetically (nature) susceptible to myopia, then lifestyle (nurture) plays a role in development and progression of myopia. Lifestyle factors include:

      % of closeup vs distance vision
      reducing uninterrupted closeup time
      increasing viewing distance
      light quality/intensity: >10K lux natural vs artificial
      self-awareness of eye strain signals
      outside distance vision (especially with motion)
      sports with fast-moving objects, e.g. ping pong
      use of full peripheral vision

Good vision depends on the visual cortex of the brain which processes signals from the physical eye. Software and hardware. There is a complex feedback loop between the brain's ability to correct small errors vs. eye muscles accomodating to change focus and direction. The most advanced work in this area is vision therapy for veterans with TBI (Traumatic Brain Injury).

Neuroplasticity means that the brain/software can be upgraded with vision therapy. This is most effective with children where both the brain and eye are still developing, but it also works with adults. However, it is much more expensive than eyeglass correction and thus requires special insurance coverage for behavioral opthalmology. It may be covered by national healthcare.

[https://aoa.org/patients-and-public/resources-for- teachers/a...](https://aoa.org/patients-and-public/resources-for- teachers/a-look-at-reading-and-vision) says: _" Reading requires the integration of a number of vision skills: visual acuity, visual fixation, accommodation, binocular fusion, convergence, field of vision, and form perception. The typical school eye chart test only evaluates distance visual acuity."_ This means a child can pass the "eye exam" (visual acuity) test and still have vision difficulty, causing an incorrect diagnosis of learning disability. Wendy Beth Rosen wrote the only book on this topic: [https://www.wendybethrosen.com](https://www.wendybethrosen.com) & [https://youtube.com/watch?v=d-FvbUnxGKM](https://youtube.com/watch?v=d-FvbUnxGKM).

</comment><comment><USER15> All I know on this is that I was near sighted from the 3rd grade on. My vision steadily got worse when I was wearing glasses. When I switched to contacts, it stayed at the same level. Had to go without the contacts for a year and it got worse again.

Finally got lasik and it's been perfect for 10+ years.

Anecdotal I know, but still...

<comment><USER16> My eyesight was perfect for 10+ years after Lasik as well. In the last two years...had to return to glasses :-(

<comment><AUTHOR> How much time do you spend on the computer each day? Are you wearing your full-strength distance glasses when using the computer?

</comment></comment></comment><comment><USER17> Of course it does. Go to endmyopia.org. I have improved my eyesight easily in only a few months. I know I'll end up not needing glasses because I've understood how it works. Optometrist just want to sell you glasses and don't want to tell you how to fix your vision.

</comment><comment><USER18> insufficient light intensity does that

<comment><USER19> Myopia, at least for children, could be the result of lack of exposure to sufficient light during the growing phase ([https://www.youtube.com/watch?v=DjdkbcOx05A](https://www.youtube.com/watch?v=DjdkbcOx05A)).In the research, chicks with exposure to 10000+ lux had prevented myopia, while the other chicks which didn't get exposed to enough light developed myopia. The overall recommendation from the study was for children to get at least 3 hours of outdoor activity, even during school. The research showed no correlation of myopia and close work (reading, computer screen) or physical activity (exercise, play). Rather, myopia rate was lower among children who had spent more time outdoor, and also had more exposure to brightness of light.

I can testify that it seems true, at least for me, because I'm the only one in the family that has severe myopia, and the only difference between me and my family member is that I didn't go outside that much and stayed mostly indoor. Later in life, I had LASIK, but wearing glasses was awful.

<comment><USER20> In contrast to your anecdote, my brother went outside far more often than I did growing up, and his nearsightedness is both much worse and getting worse more quickly than mine (mine has changed between .25 and .5 over the last 10 years, his has changed by something like 2 in the last 5).

</comment></comment></comment><comment><USER21> > There are, of course, two very different reasons why people wear glasses

Actually, three. Probably more. I wear glasses for astigmatism.

</comment><comment><USER22> I've worn glasses for 40+ years. I've never worn contacts. My eyesight hasn't changed in over 20 years.

</comment><comment><USER23> TLDR; no. Betteridge's law at work

<comment><USER24> you missed a dot after "no"

<comment><USER23> Thanks. I inserted a line break but HN handles them weirdly.

<comment><USER25> Whitespace gets mostly passed straight to the browser, meaning newlines, tabs, and consecutive spaces get rendered as a single space. The exceptions are: two consecutive newlines start a new paragraph, and two spaces at the start of a line denote a preformatted ("code") block.

<comment><USER26> That explains some things. I always thought it was just some badly designed attempt to prevent comment spam where someone just posts a whole bunch of newlines.

</comment></comment></comment></comment></comment><comment><USER14> yes

</comment><comment><USER27> TL;DR - They don't know.

</comment><comment><USER18> no mention of plus lens therapy</comment>


Google Logo on Search Page - Gandhi's Birthday - <AUTHOR> http://www.google.com.au/

<comment><USER2> That is truly a nice tribute. For those who aren't very familiar with the topic, the background is made up of 'Khadi', a handspun fabric that holds great symbolism for Gandhi's ideals and his ahimsa (non-violence) movement. And the letters are done in Indigo (color dye), one of India's most prominent exports during the colonial era.

</comment><comment><USER3> Somehow I feel that to turn the G of google into the head of Gandhi is somewhat disrespectful (but I can't tell you why), but it's nice of them to commemorate him.

<comment><USER4> Reminds me of Apple's Think Different ad: <http://www.youtube.com/watch?v=dX9GTUMh490></comment></comment>


The by far most detailed Coronavirus map out there - <AUTHOR> https://ncov2019.live/map <comment><USER2> Definitely. And this other one has more stats but not as much detail:

[http://arcgis.com/apps/opsdashboard/index.html#/bda7594740fd...](http://arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6)

<comment><USER3> If you click on the red dots on the map it gives you the specifics of that location.

</comment></comment><comment><USER3> I've been using this one:

[https://gisanddata.maps.arcgis.com/apps/opsdashboard/index.h...](https://gisanddata.maps.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6)

</comment><comment><USER4> The information that seems to be lacking on a number of these resources is rate of change. While cumulative numbers are useful, rate of change date would provide a better picture of what's going on. You would also want to have control of the reporting period (day, week, month).</comment>


NOKIA - Is the platform still burning? - <AUTHOR> http://microreviews.org/nokia-is-the-platform-still-burning/ <comment><USER2> Difficult for Nokia to recover from here</comment>


Ask HN: Moderately successful founder, diffident because I can't focus - <AUTHOR>

Throwaway account for reasons that will shortly become apparent. Apologies that this is long and somewhat whiny.
I started a startup about a year ago making enterprise SaaS. We are moderately successful now (12K/month) with another 12k/month worth of deals very likely to happen in the next two months.
We currently operate in a niche where our software solves a very painful problem. The thing is, there are at leasts two other generalized versions of the same problem in non-niche markets which are far more lucrative, and technically easy for us to solve, but where there is a lot of competition. I tell myself we are avoiding entering that game because we need to be a force to reckon with in our niche first, but I am afraid I am just rationalizing out of fear and I am scared of expanding because I fear I am not capable of coping with the pressure / living up to what the game requires because I have a severe problem with focusing on anything for more than a few minutes.
Background: For the past decade or so, I have been struggling with a severe case of inability to focus. In grad school when I almost failed a class because of this (I also got A's in a 75% of my classes), I forced myself to go to a therapist who told me I almost certainly had ADHD and should get the officially diagnosed at a test center and take medication or therapy. I am very wary of drugs and very reluctant to open up in front of a stranger (therapist) again. So I decided to build support structures that would help me get through this. I have a very supportive significant other and have made quite a bit of progress. My productivity has improved after I quit my day job and started the startup, but I still can't focus for shit except rare hacking sessions late at night which screw up the next day. Whatever success I have experienced is attributable largely to just not giving up and trying different things until something worked. On a day to day basis, I flit from one task to another and I feel like I am doing may be 1/3rd of what a normal person would be able to do. Still, I am enjoying being able to work for myself, delivering things at are useful for a lot of people and that keeps me going.
I don't like having nagging doubts and would appreciate your help 'debugging' my thought process, fears, complexes. Feel free to ask questions, offer ideas, criticism - anything that may help solve my dual problems - an inability to focus and a reluctance to enter the big game.
Thank you. <comment><USER2> I understand where you are coming from. I have a hard time focusing for long stretches. For me these are the techniques that I find to work:

1\. Remove as many distraction as you can. You work for yourself so you have more control over your environment than most. Try something like Leachblock for Firefox if you have issues with web surfing.

2\. When you are off task tell yourself you are just going to do a few minutes of work. Getting started on a task is always the hardest part.

3\. Once you are working on a task try to avoid stopping. Even telling yourself you will take a brake in a few minutes is helpful. You just have to get past that moment of distraction.

4\. Don't beat yourself up over getting distracted. It will cause you to get a complex and not make the situation better.

5\. Take breaks. You should be taking a 15 minute break every hour or 2. Get up and walk away from your computer. You mind needs that time to keep focused when you need it to.

<comment><AUTHOR> Good advice. Thank you.

I am experiment with a version of PG's two computer solution from "Disconnecting distraction".

</comment></comment><comment><USER3> Don't self-diagnose ADHD. I got a psych eval when I was 20 which showed that I was a classic case, and have been adapting ever since. Its often the case that people with ADHD are amazingly capable entrepreneurs, but can still get landmined by the disorder's characteristic inconsistency of focus.

I just finished reading Driven to Distraction (which is 15 years old at this point) and I suggest you give it a read. Bottom line is, if you're a smart person who seems to have an elephantine task when it comes to focus and attention, get evaluated. Just make sure it's not another disease or disorder first.

Don't be wary of the drugs. It will take time to find one that works for you, but when it does, it will pretty much feel like you are "more" able to "just be who you are". It's tough but really, go get the eval. I cannot stress this enough.

<comment><AUTHOR> I have read Driven to Distraction. I want to say I read it before I went to the therapist a decade ago, but I am not 100% sure.

This and other books (I recommend Delivered from Distraction, The checklist manifesto, The creative habit) helped form the core of my support structure, but I am not always good at using it. I keep revisiting my decision to get evaluated / take drugs but it comes down to this - I tend to use my weaknesses as crutches. It doesn't matter what the world labels my problems, they stem in my head and every non chemical way of dealing with them revolves around building habits that help address these. I am consciously eschewing drugs because I have a very addictive personality and I am just jumping ahead to working on my habits.

<comment><USER3> drugs =/ crutch. yeah self medicating with blow is bad, of course, but with the direction of a doctor, the right drug can allow you to really do what you intend to do, and preven those short circuits in your brain from screwing it all up. think of the right dose/chemical as reading glasses. why struggle to focus your eyes when they're just not going to cooperate? Clearly, there are non chemical ways to help the syndrome but the chemical help is powerful and a responsible adult choice.

</comment></comment></comment><comment><USER4> I'm on the same boat with regards to attention span. Someone PLEASE answer his questions!!!</comment>


If we stand still, we go backwards - <AUTHOR> https://jakearchibald.com/2015/if-we-stand-still-we-go-backwards/ <comment><USER2> Calling for a moratorium sounds very dramatic, but I suspect PPK wanted to use dramatic language to make the point that we're not putting enough thought and exercising enough caution about what we're introducing to the web. These are not free experimental features we can add willy-nilly that we can easily remove when we don't like them anymore. They have the potential to introduce an incredible amount of globally shared technical debt if they're bad enough.

Between standing still, and desperately adding features to make the web competitive with native platforms, I'm inclined to slow it down. I don't think the web is seriously threatened by native platforms. Even when we did experience feature freezing between 2001-2007, the web remained king despite attacks from Flash.

I don't think the web is under real threat from mobile native platforms. It's nothing that performance tuning and Moore's law can't address in time.

<comment><USER3> "I don't think the web is under real threat from mobile native platforms."

The main argument against this statement is home screen icons. iOS and Android home screens, among others, do not feature, have not featured, and will not for months or possibly years, feature mobile web icons to launch websites in the browser of choice. Most or every icon on these home screens are native apps because mobile websites do not easily allow or make obvious that it's possible to have an app icon on the home screen. Thus, native will always win this battle.

When the day comes that it might be easier to see a mixture of native and web apps on the home screen, unless mobile web is faster than it currently is (meaning updating changing best practices, using excellent APIs like SW and designing for offline first access), users will STILL choose native over web when half or more than half the time they do exactly the same thing.

Native is here to stay for years to come unless the mobile web can offer a compelling reason to switch to browser based layouts. I'm cheering for the web to provide a better content experience but we're still a long way off and can expect web based layouts to be wrapped with native code and wrappers. Maybe web isn't the place for everything but a universal bytecode for everything is a dream that could be reality as long as progress is made.

<comment><USER4> I for one will not choose native apps (not as long as they have a half decent app). I choose my banking website over their app anyday. And the same with Facebook. I think for me though, part of the aversion is how invasive apps can be.

<comment><USER3> I am not patient enough to wait for poorly developed web pages to load when a native app offers the same functionality at a fraction of the load time. My bank's native app is the only way I can deposit my checks and the web site does not offer this functionality. Thus, it's imperative that I use the native app today. If this changes tomorrow or in the future, I'll be giving it another look in the browser but right now, the bank app I use has similar and better functionality natively than in the browser.

Same with FB, it's not tuned to perform well on the browser and takes longer to load. I hate the FB app for privacy reason and would MUCH rather use the browser FB site but it doesn't compare most of the time.

</comment></comment></comment></comment><comment> vezzy-fnord The author's examples of inflated user expectations are unconvincing. Transferring data across the globe is the whole point of wide area networking, far predating WWW. Making online purchases has been possible since the early days of the web.

Furthermore, the author's definition of "native" is revisionist, placing it at a highly recent time frame, and categorizing it by features that are semantically disparate.

So-called "progressive loading" and no installation process have been traits of native applications for a long time. In fact, at a primal level, the process of installing a program boils down to a copy operation.

Notice how in the last paragraph, the examples of the web's feature richness are all intrinsically limited browser reimplementations of native interfaces that exist in parallel with the host OS.

<comment><USER5> They have? I've been using computers since the mid 80s, and unless you think loading apps from floppy disk, datasette, or cartridge, counts as "install less", this is a disingenuous rebuttal.

The Web brought with it portable executable content that ran without escalated privileges or install, and this did not exist before in any widescale deployment accessible by endusers.

Prior art is General Magic Telescript and SafeTcl, or perhaps PostScript or NeWS if you want to count those as wide deployment.

The difference between the Web and Install models, is that installation doesn't scale to the long tail because it places shit work on the user to manage limited resources (screen real estate, disk space). The Browser Cache doesn't impose this cognitive burden. There is no cost of cleanup imposed on you by clicking a web link. The back button takes care of it.

That's why it's "surfing" because it is effortless and imposes no long term transaction cost. To try out a web site, you click it, if it sucks, no harm no foul.

Native apps are completely different. To check and see if you'll like an app, you have to install it. It consumes permanent resources. If you then decide you don't like it, you have to permanently uninstall it. Many people are so burdened by this step, they leave unused unliked apps on their device. Then one day, they run out of space when trying to take a photo or download a new app and find that they must then go clean up their memory and delete a bunch of stuff. An incredibly shitty experience that the Web Browser solved ages ago.

Android and iOS apps should work more like Java Applets or Flash. You should be able to run them without install, and then only if you like them a lot and run them many times, should you optionally pin them from being purged.

</comment></comment><comment><USER6> "Just because it's there, doesn't mean you must learn it and use it"

You're correct! Except that this is not the way things work in the professional world, and by refusing to learn or use a new technique or library you're stunting your personal development as a tech professional.

ppk's argument boils down to progress outpacing need. Businesses desire the bleeding edge in their online-facing products and if you want to be attractive as talent you need to keep up with the latest development trends. This can lead to frustration, barely getting the time to build stuff with your new skills before the next big framework comes along. The latest and greatest is hip but might not be entirely necessary. This is where we need to focus our attention and strike a balance.

<comment><USER3> "Businesses desire the bleeding edge in their online-facing products"

What kind of businesses? In multiple enterprises I've worked with/for, they move at a snail's pace and are resistant to change. I feel like most larger enterprises are at this snail's pace, whether it's b/c of outdated security practices they can't let go of, control issues, IT incompetence, or complacency in the way things are.

The businesses which might be more forward thinking are agencies and some small businesses but I think these are less common. Why do you think it took years to let go of IE6, then IE7, and now IE8 and IE9 in the enterprise world?

</comment></comment><comment><USER7> "Hello world" is doable in 3 lines instead of 5, granted. But for more complicated development.. [http://www.allenpike.com/2015/javascript-framework- fatigue/](http://www.allenpike.com/2015/javascript-framework-fatigue/)

Question: is there ANY environment or language that has fantastic support and is continually improving? Any _open source_ one?

</comment><comment><USER8> I agree with all of the points in this article. Even if you believe that PPK is 100% right about the "problem", I truly can't grok the notion that a moratorium would somehow "solve" anything. From my observation, when standards are actually under development and look like they will have first class support in the browser, proliferation of stopgap solutions is much lower because people would rather wait for "standard" support of whatever feature they're trying to implement. Also I think that aside from IE, browsers do a good job of getting standard features done, which is sort of amazing considering they don't have the "benefit" of top-down bureaucratic governance like the "native" platforms. As a notable exception WebRTC is a bit of a clusterfog it seems, but I'm sure that will get worked through without too much ado.

<comment><USER9> How would you know?

We've only had two modes of standards development in recent history. Bugger all (the age of IE6/Firefox/IE7) and constant churn (pretty much since the iPhone/Chrome was released).

</comment></comment><comment><USER10> > "Hello world" is simpler now than it has ever been.

Yes, it is simpler for ordinary people. For developers, however, the web is getting more and more convoluted.

<comment><USER11> Agreed. There is nothing wrong with the growing richness of the underlying web platform (the gist of the article). GPS, 3D graphics and what not all enhance the user experience.

The challenge is that languages, frameworks, and tooling are are not shielding the developer from the growing complexity.

The level of abstraction is rather poor , so that for any any non trivial web application, you quickly _do_ need to know the gory details of CSS, layouts, web components, shadow vs. lite DOM, and so on.

I agree with the premise of the article (we can't stop the forward progress of the web ), but we desperately need better tools.

</comment></comment><comment><USER12> Who cares how many lines it takes to do Hello World? Honestly, that isn't a benchmark for any meaningful thing.

<comment><USER13> Good job it's only a very small bit of the article, then.

</comment></comment><comment><USER14> The connection kept resetting for me, so here is the Google Cache link: [http://webcache.googleusercontent.com/search?q=cache:f-pnPOu...](http://webcache.googleusercontent.com/search?q=cache:f-pnPOuBD- wJ:https://jakearchibald.com/2015/if-we-stand-still-we-go- backwards/+&cd=1&hl=en&ct=clnk&gl=us)

\---

I don't web develop often. As a user, mobile web is usually more usable than a native app - not in terms of whether or not it works, but in terms of usability, flow of actions, and predictability. Cut, copy, and paste work in the browser but rarely in native apps. Other little things too, items too little for a project architect to notice or a punch list to pick up.

The other half of what killed Blackberry was Microsoft Activesync. Blackberry's email service required you have set up their Blackberry Enterprise Server (or their lower-performing cloud-hosted Blackberry Internet Service) and connected this to your email account. BES had an "agent": a service that would log into your email account every 30 seconds, check for new email, and then forward this to your Blackberry over the Blackberry network (which is why you had to pay the $10 "Blackberry Fee"). Activesync (I think) used Exchange mail rules to do the same thing, and the iPhone mail client could use Activesync.

It was that "one-two punch" that took out Blackberry:

      * iPhones were cool. Androids were cheap.
      * Activesync comes with Exchange, no other server setup necessary.
      * Works with normal carrier service; no $10 Blackberry fee.

<comment><USER15> I think you give too much credit to ActiveSync. That was available on Windows Mobile and I'd say the heyday of that was well before the era of Blackberry domination.

From my own usage of ActiveSync I remember the data networks of the era were not great with push protocols, at least not compared to the almost magic instantaneousness of Blackberry email and their custom solution.

<comment><USER14> Activesync was good enough that a lot of smaller customers could stop paying the extra Blackberry fee to their carrier, the extra Blackberry fee to their cloud host (OR the cost of maintaining an extra server in their colo), and stop carrying their 2nd phone.

</comment></comment></comment><comment><USER13> Something like "If the web stops, it goes backwards" or "The web must develop to survive" would be a more contextual title here.

<comment><USER16> HN rules highly frown upon submitting links with changed titles.

<comment><USER13> The title was changed before you made your comment btw. Current title is fine.

</comment></comment></comment><comment><USER17> "Native apps are looking to gain the web's advantages too [...] If we stop, we lose."

Who is "we" and why are they competing against some implied "them"? When are we going to accept the shortcomings of both the web and native applications and figure out a solution together to benefit humankind?

</comment><comment><USER18> I appreciate that this comes across perfectly formatted for w3m. Just shows that we can push for advanced features while maintaining compatibility for the simplest experiences.

Some of the frustration for new features comes when developers ignore compatibility, but that's not a necessary part of pushing the web forward, just an indication of sloppiness.

Every new feature brings new challenges. The solution is not to solve challenges by stopping progress but rather to respond to challenges as they come. This means more work, but that's okay. There are more people to do the work every day.

</comment><comment><USER19> "Also, world's first web site[1] still works in modern browsers".

... and half the links on it are broken. That's one of the things I don't like on the web, content slowly disappear, links are unidirectional, etc.

[1] [http://info.cern.ch/hypertext/WWW/TheProject.html](http://info.cern.ch/hypertext/WWW/TheProject.html)

</comment><comment><USER20> Exactly. Users control the internet. Almost everyone has this backwards.</comment>


Why Windows 95 and 98 would crash after 49.7 days of uptime - <AUTHOR> https://sites.google.com/site/edmarkovich2/whywindows95andwindows98wouldcrashafter49.7daysofuptime <comment><USER2> This is a pretty uninformative article. It doesn't actually say why Windows would crash, as the title promises. It does some trivial math, points out there's an overflow, and then says _" Clearly some code in Windows didn't handle this too well, and Windows hung."_

<comment><USER3> I don't agree. Nobody of the readers would care about the programming error made 25 years ago in some closed source code.

However, timers wrapping around is a very current problem every programmer should be aware of. Not too long ago we had a problem with corrupted video files. After weeks of investigation it turned out that some code used an 32 bit unsigned to count microseconds. Well, that wraps around after approx. 1 h 10 min... Obviously most test cases were videos shorter than that.

<comment><USER4> I'm a reader and care, so at least one.

<comment><USER3> Fair enough. If you stick to open source, then you can always know how programmers got it wrong in the past and present.

<comment><USER5> No, that allows you to know how _programmers of FOSS_ got it wrong.

Not all programming is the same; there are many lessons to learn about software engineering (mostly in the "what not to do" sense) which, for practical reasons, have only ever showed up in (time- and budget-constrained) closed-source codebases.

<comment><USER3> Do you you have any fact-based evidence that certain bugs/anti-patterns would happen less in open source code bases or free software code bases?

Well, security by obscurity might happen a bit less. And hopefully many bugs in contributions are spotted instead of being merged because the author thinks it should work. But all major open source projects have had amazingly "stupid" programming bugs that went undiscovered for many years. Or the same feature has been patched again and again, but still causes more trouble.

Knowing that many company-internal software projects work with little review and very low testing coverage, it should be natural that their code quality is even worse. But that certain kinds of problems would only occur in closed source does not sound evident to me.

<comment><USER5> > Do you you have any fact-based evidence that certain bugs/anti-patterns > would happen less in open source code bases or free software code bases?

How could I have that, _or_ the opposite of that, without access to closed- source code-bases?

That was my whole point: that you can't know what sort of selection bias you're implicitly accepting by only looking at a certain easily-accessible slice of the data.

In order to know that it's safe to assume that FOSS _is_ representative of all software, you _first_ have to get access to enough non-FOSS codebases to be representative.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Nowadays you don't even get CLOSE to 49 days uptime before Win10 forces you to restart due to updates ;s

<comment><USER7> My laptop with Win10 is at 72 days.

I created a bat file with:

      net stop wuauserv
      sc config wuauserv start= disabled

and then scheduled it to run every 10 minutes. The problem with that is you now have to remember to disable it and check for updates when you have time, which I'm obviously not doing.

<comment><USER8> You're oddly proud about not having updated your OS for 72 days.

<comment><USER9> About 15 years ago, I worked at a startup that had a server with 5 years of uptime!

<comment><USER10> I have a home server with 1301 days of uptime.. (last year it survived a move without rebooting)

<comment><USER11> > (last year it survived a move without rebooting)

How? UPS?

<comment><USER10> Yep, moved the computer while together with its UPS.

<comment><USER12> that's very cool, but what the heck is on this server that made it worthwhile to move it like that?!

<comment><USER13> Probably his uptime record!

If it's a short enough move I can see doing that just for the hell of it.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> This is a myth that cannot be proven or disproven. Nobody was ever able to keep Windows 95/98 up for that long.

Jokes aside, around 2001 I was asked to do some maintenance on a machine running Windows 3.11 that was running an app to control all access within the building. When I asked about potential upgrade the guys balked at me saying the machine has couple of years of uptime and they are not very keen to have to restart it on a schedule due to windows 95/98 bugs.

<comment><USER15> That's the reason we still have COBOL and similar systems working.

For exact this reason. They are working and doing what they meant to be doing.

</comment></comment><comment><USER16> This brings up a good meta point: people who like to complain about the quality of software in the modern world almost certainly didn't live through the early[1] days of the industry.

This sounds crazy to modern ears, but at the time the idea of a desktop system actually staying booted for _a whole month_ was weird and alien. They just didn't do that. Commercial unixes were better. It was routine to find servers that had been running for three digit (!!) uptimes, and people would brag about stuff like this. Linux, when it arrived, was in this category too and we'd all puff to our friends about how we "never turn off" the machine under our desk, because it would always be able to run for a month or so before it crashed.

It was just a different world, and things, despite some of the community emotion, have gotten vastly better. We're much better at writing software than we used to be, which tends to make some of old folks a little confused when people hold up "new" ideas as being paradigm shifts in software quality.

We already had the shift! We're just picking the higher hanging fruit now.

[1] Do the mid-90's even count as early?

<comment><USER17> Well, there are huge differences (in the MS world) between 9x and NT.

DOS (before) was very, very stable (but of course was not multitasking) and widely used in industrial setups.

Windows NT (before Win9x) and Windows 2000 (right after) were both, very, very stable, I had machines running 24/7/365 that were rebooted once a year or so and for other reasons (maintenance/update, hardware replacement, black outs longer than UPS capability, etc.).

<comment><USER18> DOS wasn't functional enough to be described as stable; it did almost nothing but look after the files on your file system and provide a few APIs, via interrupts, for programs to read and write files and perform console I/O. Stability was almost entirely the responsibility of the program you ran on top.

</comment></comment></comment><comment><USER19> I worked on a service that had this exact issue; actually it was worse because it was a signed integer so rolled over in half the time.

Even more insidious, we never hit the issue until months into production because we had a pretty consistent two week release process. So the issue only came to light when development slowed down as the project became more stable.

Luckily deployments were staggered across datacenters so when the bug hit it didn't happen to every server at once, but of course as always happens, when it did, the majority of the servers started hanging over the weekend while I was on call.

<comment> yjftsjthsd-h I worked at a company with a similar issue. The server is used to get patched and rebooted every month. Then the company decided to lay off huge chunks of operations staff. The software held up remarkably well, but we eventually discovered that software that was never designed to stay up for more than a month will leak memory like crazy if you leave it up for a long enough.

<comment><USER20> IIS used (still does?) to randomly kill its own processes at random because chances are, if its been running "long enough" its leaking memory anyway.

</comment></comment></comment><comment><USER21> Is there a good way to test for bugs like this during development? Since it's not particularly realistic to pause development for two months to see what a given build does after that long.

<comment><USER22> Our company does soak/longevity testing. Typically we'll take a build and let it run for a few weeks during development to find memory leaks. Then the final release enters our longevity lab where we put it under some amount of load and let it run until the device or VM is retired. It won't necessarily find the bug before final release, we could either recall that version or submit an immediate maintenance version that fixes the issue once discovered.

Software will always have bugs, we've chosen to approach it as "find the bugs before the customer" rather than "stomp out every possible bug". Because you are right, we don't get 2 months to pause and fix bugs, and also customers will always do some crazy configuration or workload you didn't have a test case for.

<comment><USER23> That's pretty cool. What industry are you in that y'all are willing to invest resources for such an exercise?

</comment></comment></comment><comment><USER24> Back in 2005 I had encountered this bug or something similar. It was in Windows CE, the embedded version of Windows.

For me, it failed at around 25 day (49.7/2?). I believe the documentation at the time [since fixed] might have had GetTickCount() returning an integer instead of an unsigned integer. I had a devil of a time tracking it down!

</comment><comment><USER25> unfortunately recreated this issue recently keeping track of freertos current tick on a 32 bit embedded system :)

</comment><comment><USER26> Yeah, that happens. Here is an example of an actual bug opened a few years ago on our system. Dev team spend some time tracking the issue and found out incorrect variable type used for sessions, it was unsigned long used for milliseconds, like in the OP. We were joking that we need to allocate 50 days to verify the fix :) . [https://imgur.com/a/HS3fcTj](https://imgur.com/a/HS3fcTj)

</comment><comment> miles-po 49.7 days? I wish I could get more than 7 out of my MacOS Catalina laptops before I get a gray screen.

</comment><comment><USER27> If you think this is cool, wait'll you see what un-upgraded UNIX-derived systems do on Jan 19, 2038 at 03:14:07Z.

<comment><USER27> Update: new kernel are on top of this problem. [https://lkml.org/lkml/2020/1/29/355?anz=web](https://lkml.org/lkml/2020/1/29/355?anz=web) It's the old systems that will suffer. Hopefully only soda machines and not avionics or intravenous infusion pumps.

</comment></comment><comment><USER28> In fairness, I have hit this exact same problem on Linux

</comment><comment><USER29> This bug reminds me of the plot of the 1996 Japanese crime story "Subete ga F ni Naru" (The Perfect Insider).

<comment><USER30> the story that makes you love an incestuous homicidal genius.

I thought the anime really glossed over that story terribly.

</comment></comment><comment><USER31> From what thine is this? It says "There IS a bug ... NOW patched" Should make no sense anyway but I see no time attached to this.

<comment><USER17> The cited MS KB has been archived starting November 9, 2004:

[https://web.archive.org/web/20041109020858/http://support.mi...](https://web.archive.org/web/20041109020858/http://support.microsoft.com/kb/q216641/)

It is dated August 2004 (it is revision 3.2) but the patch (for Windows 98) has a date:

Release Date: Jun-04-1999

<comment><USER32> There's a CNN article about it from 1999 too: [http://www.cnn.com/TECH/computing/9903/05/win98bugfix.idg/](http://www.cnn.com/TECH/computing/9903/05/win98bugfix.idg/)

</comment></comment></comment><comment><USER33> In one of Jon Bentley's "Pearls" books is a chapter of rules of thumb. One states that "Pi seconds is a nanocentury."</comment>


Software masterpieces: Emacs, TeX, Zork, Scheme, Microsoft mouse driver - <AUTHOR> http://c2.com/cgi/wiki?SoftwareMasterpiece

<comment><USER2> MUMPS? MUMPS?? MUMPS???

And they specifically cite the $TEST variable????

The one programming language that I know of in which you can execute _both_ x and y in a "IF t THEN x ELSE y" (not the actual MUMPS commands). That happens because the "t" test sets the value of $TEST (a global variable). The "THEN" part checks if $TEST is true, and if so executes "x". The "ELSE" part checks $TEST and if its false executes "y". If "t" is true "x" calls a subroutine which has a IF that sets $TEST to false then you get thrown in the deepest places of debugging hell.

And _THAT_ is a software masterpiece?

</comment><comment><USER3> Man, I hate that type of wiki. My eyes always glaze over when I see interwiki links that AreSquishedTogetherLikeThis...

And I write C++ for a living, where RegisterFooWriterWithComponentFactory is a perfectly valid class name.

Is there something wrong with the mediawiki-type [[links]] that I'm unaware of?

/rant

<comment><USER4> RegisterFooWriterWithComponentFactory should read RgstFWWCmpFctry to stay in C/C++ compliance. Since you used the word "Factory" as well as unabbreviated words, you must use Java or at least Java standards.

That c2 wiki was one of the first made (actually--I think it is a descendent of the first) and is maintained by ward cunningham. I used to go there quite a bit, and actually added the "microsoft mouse driver" bit. Oddly, the formatting is completely changed. I don't know why someone would stick a newline after "Possibly the most".

</comment></comment><comment><USER5> MS Mouse driver? I've looked at the source long ago (in 95) and it dates from 1984 I think. There was nothing special about it...</comment>


Lunar: a decentralized marketplace for moon property - <AUTHOR> https://lunartoken.com/ <comment><USER2> This is just a scam.</comment>


Five-minute Multimethods in Python - <AUTHOR> http://www.artima.com/weblogs/viewpost.jsp?thread=101605 <comment><USER3> The definition of multimethods presented here sounds suspiciously like ad-hoc polymorphism (or just overloading functions). It seems like the real difficulty is not in the concept but in the fact that I've now seen under three different names: multiple-dispatch, ad-hoc polymorphism and overloading. All but the last name _seem_ complex; since I initially encountered the concept in Java as overloading, I never thought much about it.

Polymorphism based on types like this is something that statically typed languages are naturally good at. Looking at his example code, the trick to having this sort of code in dynamically typed Python is to introduce type annotations via decorators. You're doing the work of static typing for a fraction of the benefits.

Additionally, a statically typed language can take this concept even further. Haskell, for example, supports polymorphic functions like this very well using type classes. It even allows functions polymorphic on their _return_ types-- you can have a function `read` which takes a String and returns whatever. This means you can actually even have polymorphic _constants_ \--maxBound, for example, is the maximum value of whatever numerical representation it happens to be.

Overall, I think features like this make more sense in a statically typed language. They fit in--you're already specifying types everywhere--and can do more. However, it is interesting to see how you could accomplish something like this in a dynamically typed language.

<comment><USER4> Multimethods and overloading are completely different beasts, despite the syntactic similarity. Overloading is resolved at compile time by looking at the compile time types. Multimethods are dispatched at run time, by looking at the run time values. This makes overloading much less powerful. Multimethods are in fact problematic in statically typed languages; they are difficult (but not impossible) to type check.

<comment><USER5> They are only completely different beasts if you think the distinction between compile time and run time is very important. That's not necessarily the case. There is the text of the program at one end, and pushing electrons at the other. At exactly which point this thing we call "compiling" occurred is just a detail that may or may not help us in other - typically human factor - goals.

Multimethods, to a first approximation, is overload resolution at run time rather than compile time. They are not just syntactically similar; they are semantically similar too. Multimethods is the dynamic language analogue to overloading in static languages.

<comment><USER6> > Multimethods is the dynamic language analogue to overloading in static > languages.

This implies that multimethods are not possible in statically typed languages, which is trivially disproven by stuff like the Nice programming language.

The difference between compile and run time is a red herring, since the actual distinction is between a statically _declared_ type and a dynamic type (which FWIW could be determined statically within AOT compilation).

<comment><USER5> No, it doesn't imply that, because static and dynamic are not mutually exclusive. A static language with polymorphism[1] has both static and dynamic aspects. A purely static language does not need (and thus won't have) runtime type tags of any kind, so any kind of dynamic dispatch (including multimethods) would be impossible at the level of the language (i.e. you'd have to implement it all explicitly as a library).

[1] It shouldn't need to be said, but this is HN so it does need to be said, but I mean OO-style runtime polymorphism here (or, with a stretch, sum types), not parametric polymorphism.

<comment><USER7> Why haven't you told us what you mean by the notoriously vague terms "static" and "dynamic"?

<comment><USER5> Because defining every word one uses in a forum post is incredibly tedious, and even when you try to do so preemptively, someone still comes in and asks you for definitions of more words.

I'm using them in a colloquial rather than rigorous sense, because that's the lowest friction way of communicating in a casual setting.

But at core, when I say 'static', I mean something determined before execution, by means of static scopes and compile-time types; when I say dynamic, I mean something determined at the point of execution, by means of dynamic scopes and run-time values. When I say 'static scopes', I mean scopes determined through lexical nesting and static types. When I say 'static type', I mean types determined without need for any execution of the target program. When I say 'dynamic scopes', I mean scopes determined through dictionary lookup at runtime (vtables are dictionaries too), possibly even including dynamic scopes (cf Lisp, Javascript eval, etc.).

Most languages have both dynamic and static aspects, but the mixes vary greatly. Languages designed to be compiled typically use far more statically resolved features, because if you can afford the time to put into analysis, and you have all the source immediately available, you can find a lot of common bugs and generate faster code. Languages designed to be interpreted typically use far more dynamically resolved features, because that gives less latency to execution, more expressiveness, more flexibility with modularity and program composition, and is also easier to implement.

<comment><USER7> The difficulty is not with understanding that _"when I say 'static', I mean something determined before execution"_ but that you only say 'static' - <USER2> don't tell use what is being determined before execution, and that turns your comments into meaningless mush ;-)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> pytyp will also do this, if anyone is interested - <http://acooke.org/pytyp/pytyp.spec.dispatch.html>

(in addition, it can be used to add type checking, and type-guided translation between json and python objects. it will also dispatch on "compound" types, like a list of integers).

</comment><comment><USER9> <http://en.wikipedia.org/wiki/Multiple_dispatch#Common_Lisp>

I tend to prefer the (defmethod) form in CL. You get generic functions which can retrieve the function object specialized for the parameters with (find- method). You also get the auxiliary method goodness...

But the great thing with Python that the article shows is that there's probably a way you can get those things in Python too if you needed them.

So does Python _have_ multiple dispatch or can you just implement it?

<comment><USER10> The challenge with expressive features like multimethods - does your language give you the tools not only to implement it, but to make it fast? This is yet another benefit of macros - the ability to add features like this and get good, perhaps even great, performance.

</comment></comment><comment><USER11> Since people are throwing out similar kinds of implementations, here's my pattern matching library (which is kind of the same thing as multimethods, but allowing more arbitrary matching than just based on type):

<http://svn.colorstudy.com/home/ianb/recipes/patmatch.py>

</comment><comment><USER12> I did something similar and tried to implement functional language style pattern matching in python:

<https://gist.github.com/1320421>

Not to actually use, of course.

</comment><comment><USER13> This is kind of crazy. I had written pypolymorph independently a few months ago that does this same thing: <https://github.com/amoffat/pypolymorph>

</comment><comment><USER14> "a function that has multiple versions, distinguished by the type of the arguments"

Ooh, C# style overloading.

<comment><USER15> Yes, but not quite. Consider the following example:

      static void Main()
      {
        Bar( 12, 15 );
      }

      static void Bar( object o1, object o2 )
      {
        Foo( o1, o2 ); // error
      }

      static void Foo( int x, double y )
      {
        Console.WriteLine( "int double" );
      }

      static void Foo( double x, int y )
      {
        Console.WriteLine( "double int" );
      }

      static void Foo( double x, double y )
      {
        Console.WriteLine( "double double" );
      }

      static void Foo( int x, int y )
      {
        Console.WriteLine( "int int" );
      }

This does not compile as the compiler does not know which of the four versions it should call. As jules said _overloading is resolved at compile time by looking at the compile time types. Multimethods are dispatched at run time, by looking at the run time values._ In this case that would be the "int int" version.

<comment><USER16> Thanks for the explanation.

That's cool and all, but why wouldn't I just define an interface with method foo(), then override foo on my classes? This feels like class-based OO turned inside out.

<comment><USER17> "At run time" is the key. Consider Java.

If Dog and Cat are subclasses of Animal (or implement an Animal interface), for example, I might want to use a "breed" method to attempt to breed a hybrid animal with the loyalty of a cat and the stealth of a dog.

      public Animal breed(Animal a, Animal b)
      {
      // return generic Animal
      }

      public Animal breed(Dog a, Cat b)
      {
      //return Cog
      }

But at compile time, if all I know is that I have two animals to breed, Java will ALWAYS pick the breed() method with the Animal arguments, even if the run-time types will be Dog and Cat.

To solve this problem in Java you have to delve into the hideous Java reflection object and litter your code with junk that you'd wish the language would figure out for you.

When you've used a language that is aware of types at run time and supports multi-method dispatch, anything else seems like it's half-baked OO.

<comment><USER18> And referring back to the original question on C#, you can do this using the "dynamic" keyword -

[http://achoiusa.wordpress.com/2009/08/27/exploring-c-4-0-mul...](http://achoiusa.wordpress.com/2009/08/27/exploring-c-4-0-multimethods/)

</comment></comment></comment></comment></comment><comment><USER19> The power of a static typing in a dynamic typed language.. that's great.. and elegant too! GO BDFL !

<comment><USER3> Except that you have to statically specify the types using decorators. So it's more like a subset of static typing in a dynamically typed language.

<comment><USER20> It's not a subset of static typing at all.

If multimethods were a subset of static typing, then regular methods would be too. Methods are dynamic by definition: the type of the method's target is inspected at runtime and used to dispatch to the correct function entry. In Python, it's explicitly stated because the first argument of all object methods is "self". Multimethods extend this to do dynamic dispatch on all argument types, not just the target object.

Most Python object methods are declared at compile time; this doesn't make method declaration a "subset of static typing". You can add new methods to classes and objects at runtime using Python's reflection and introspection; you can just as easily add new multimethods at runtime using this framework.

Finally, the @decorator(...) syntax at compile time is just syntactic sugar for something like the following:

      def _foo(self, arg):
        ...
      foo = decorator()(_foo)

So you can use decorators at runtime whenever you want too.

</comment></comment></comment><comment><USER21> Not the main point but if the if-else _pattern gets tedious_ why is there no switch in Python?

<comment><USER22> Because a switch can usually be replaced by a dictionary?

        { 1: runOne, 2: runTwo, 3:runThree }[n]()

is equivalent to

        switch(n) {
            case 1: runOne(); break;
            case 2: runTwo(); break;
            case 3: runThree(); break;
        }

<comment><USER23> Also, on Smalltalk (which influenced python) there is no switch statement as well. On the other hand, Smalltalk has no if, while, for statements as well (they are all methods).

<comment><USER24> While Smalltalk doesn't have case statements, a) it's trivial to add them, and b) the way you get around it is totally different: rather than use a Dictionary, you instead generally make a pile of tiny classes, each with a fooBar: method, and then simply make sure you've got the right object type and call fooBar: on it indiscriminately--in other words, basically your classic visitor pattern.

That's totally possible in Python, too, but I don't really ever see it done.

<comment><USER25> I like to use defaultdict for this. A strategy dictionary, with a default strategy.

dispatch = defaultdict(default_stategy)

dispatch['one'] = new_strategy

print dispatch['two'] => default_strategy.

Beats case statements and elif chains.

<comment><USER26> I usually just provide a default argument to get:

dispatch.get('two', default_strategy)

</comment></comment></comment></comment></comment></comment><comment><USER25> This obfuscates code, and I remove it wherever I see it. Sometimes people are too clever for their own good. Use an object. Override a method, FFS.

<comment><USER5> Any trivial example demonstrating how something like this works will seem obfuscatory, because examples are usually trivially solved with other approaches. But see the Expression Problem[1] for the deep problem.

Whether it's an appropriate solution depends on whether introducing new operations or new data types is more common; and where the modularity boundaries are. For example, what if the base class in the hierarchy doesn't have a method for the task you want to perform, and you can't add one because it belongs to third party code, and nor can you implement it appropriately for every descendant?

[1] <http://en.wikipedia.org/wiki/Expression_problem></comment></comment>


Do you Know what Churn is Doing to your CLV? - <AUTHOR> http://blog.satismeter.com/post/154547042988/do-you-know-what-churn-is-doing-to-your-clv?utm_medium=ycombinator <comment><USER2> "This loss is a dramatic one for any business, our first example would need to gain 94 customers during this time just to see a chance of growth." This. So many Growth hackers focus too much on growth via acquiring new customers, and do not care about keeping them, which is quite shortsighted.

<comment><USER3> That's because there is a big difference between making a promise and delivering on a promise.</comment></comment>


Ask HN: Why does every Wikileaks article/question get flagged? - <AUTHOR> I remember a few years back that Wikileaks news would reach the front page. Now they're all flagged. What gives? <comment><USER2> Several Wikileaks articles have been on the front page over the last few days. Here's a search of the most popular ones from the last week:

[https://hn.algolia.com/?query=wikileaks&sort=byPopularity&pr...](https://hn.algolia.com/?query=wikileaks&sort=byPopularity&prefix&page=0&dateRange=pastWeek&type=story)

Many of the ones that get flagged are essentially duplicates of articles that have been previously discussed, and provide no new information.

<comment><USER3> In particular, this one was in the front page for more than 24hs.

[https://news.ycombinator.com/item?id=13810015](https://news.ycombinator.com/item?id=13810015) "CIA malware and hacking tools" (wikileaks.org) (2692 points, 3 days ago, 1110 comments) Graph: [http://hnrankings.info/13810015/](http://hnrankings.info/13810015/)</comment></comment>


Compile Time Prevention of SQL-Injections in Rust - <AUTHOR> https://polyfloyd.net/post/compile-time-prevention-of-sql-injections/ <comment> Tuna-Fish This doesn't actually work. It is possible to produce objects with 'static lifetime references at runtime.

What &'static means is that whatever the reference is pointing at will never be modified or go out of scope. One way to provide this is to put it in the read-only part of the executable, which is what literals do. Another is to use into_boxed_str() [1] and Box::leak() [2] to leak the string and thus make sure it will never be modified or freed. Neither function is unsafe, while Box::leak() is still only in nightly.

[1]: [https://doc.rust- lang.org/std/string/struct.String.html#meth...](https://doc.rust- lang.org/std/string/struct.String.html#method.into_boxed_str) [2]: [https://doc.rust- lang.org/std/boxed/struct.Box.html#method.l...](https://doc.rust- lang.org/std/boxed/struct.Box.html#method.leak)

<comment> Paul-ish This does seem to be the case. Here is an example I was able to create:

      use std::io::stdin;

      fn main() {
          let mut s = String::new();
          stdin().read_line(&mut s).expect("Did not enter a correct string");
          let sql_example = format!("SELECT * FROM users WHERE username={}", s);
          let x = Box::new(sql_example);
          let static_ref: &'static str = Box::leak(x);
          println!("{}", static_ref)
      }

Note the type on our variable "static_ref". It is a static str, meaning it could be an argument to the code in the blog post. No "unsafe" blocks either.

When I run it

      Input: ' OR '1'='1
      Output: SELECT * FROM users WHERE username=' OR '1'='1

The technique might be still useful if it was only allowed in debug builds to reduce boilerplate during debugging in a system that tried to use types to solve the issue.

</comment></comment><comment><USER2> This is a pretty natural thing to want, but is not actually usable in real world settings.

If your SQL has to be computed at compile time, how do you implement any sort of search where you will have a variable number of ANDS & ORs?

<comment><USER3> You could try to create some sort of SQL-builder API where each fragment must be static, and each fragment contains its own placeholders.

Then you can use conditionals and loops to decide which fragments are included.

<comment><USER4> Or you can just use runtime SQL injection prevention methods?

<comment><USER5> Or just have an employee carefully monitor user input manually, and have them propagate it to the backend with a delay.

That is, sure, it's not like Rust takes the option to check for injection at runtime.

<comment><USER6> Our team found it's easier to just not have any users.

<comment><USER7> I find that not having any users helps a lot with load balancing also.

</comment></comment></comment></comment></comment></comment><comment><USER8> I think the main problem (don't know whether this is possible in Rust which I am not familiar with) is that untrusted input is passed around as strings at all (Java, which I am familiar with, does this). I'd prefer:

\- Getting untrusted input as a separate type

\- Having only a controlled way to put instances of this type into an SQL query

<comment><USER9> You pretty much just nailed exactly what this post is demonstrating about Rust. The lifetime associated with the different types indicates the provenance of the variables.

Basically, the 'static lifetime guarantees that the query string was built at compile time. And then it allows the parameters to be from user input. To Rust, these are effectively different types due to the restrictions on the function definition, which restricts the first parameter to 'static, and the list of SQL parameters can come from anywhere (static or dynamic runtime).

<comment><USER10> Yeah, but using "built at compile time" as a synonym for "safe" is pretty crude. A runtime string composed of the concatenation of two compiled strings is still safe, yet not allowed here.

<comment><USER11> That seems easy enough to fix, no? Change the API to allow a runtime generated list of compile-time strings, _et viola_. Though, I doubt that's as safe as you might imagine. Imagine a return oriented programming-like technique using static SQL strings. Difficult, for sure, but not impossible.

</comment></comment></comment></comment><comment><USER12> It's a neat little hack, though it seems a bit restrictive. I was expecting a blog post about how, by using ownership, it should be possible to create an API that both requires untrusted data to be escaped and prevents double- escaping (though you could probably achieve pretty much the same in any statically-typed language).

</comment><comment><USER13> Is it me or the person that wrote that post has no idea what SQL inject actually is?

<comment><USER14> I don't understand at all what the difference is between the two functions.

<comment><USER15> The second function only accepts strings defined at compile time, meaning it can't be called with strings created at runtime (i.e. any string containing user input).

<comment><USER14> So what to you do if you need to make a sql call based on user input?

<comment><USER3> Use parameters, of course. Using SQL parameters for untrusted input is the only sane way to avoid SQL injections.

</comment></comment></comment></comment></comment><comment><USER16> Is this serious? It seems to prevent SQL injection by only allowing statically defined strings to be interpolated. So basically not allowing any kind of dynamic or user input.

<comment><USER17> That's the point. You should never use string interpolation with strings defined at runtime for SQL.

Always build your queries out of strings defined at compile time and use them as prepared statements with parameters.

<comment><USER18> That is the theory, sadly it doesn't work everywhere on the SQL statement.

So we always end up with a mix of prepared statements and string manipulation.</comment></comment></comment>


Islamic Exceptionalism, and Why It Matters - <AUTHOR> http://www.abc.net.au/religion/articles/2016/07/19/4503354.htm <comment><USER2> Yes it is true that Islam ties politics to religion, and that is a weakness not a strength.

I struggle to listen with open ears to someone who defends the Muslim Brotherhood. I know some kind, good Arab Americans who support them, and I also know a refugee who was forced to flee Sudan after the MB publicly executed her local cleric for advocating equal rights for women.

That's fascism at work. The Muslim Brotherhood encourages the view that some sects of Islam are superior to other creeds, and it is not OK.

<comment><USER3> I think the author's point is that it WAS working, up until 1924 and the deposition of the Caliphate. Then in the modern era, it suddenly became hopelessly outdated - and unfortunately since, so-called "Islamists" have defined themselves on the opposition to other principles (secularism, nationalism and the like) instead of defining themselves in terms of their own ideas.

</comment></comment><comment><USER4> "We just assume that all cultures and societies will follow a certain trajectory: from reformation, to enlightenment, to secularization, then on to the end of history. There this almost patronizing tone I often hear, which is, well, you know, Muslims will get there."

Then where is a Muslim plan for getting out of this current quagmire and into a 'there' that's appropriate for Muslims? The reason most thinking western people assume that is because they look at the current state of affairs, see its unmanageable, and assume that the smart will triumph over the stupid: in other words, religion will be relegated to the realm of myth like it has in the west. Many of us do indeed assume that a modern nation state cannot be run by religion and its illusions. So far, Islam has not proven us wrong. Quite the opposite, the many Islamic nation states currently existing have shown us that Islam, and also based on previous experience, religion in general cannot be combined with a successful nation state.

</comment><comment><USER5> > "So my hope, as I lay out in my book, is a fairly modest one. I think people > will continue to hate each other for the foreseeable future in the Middle > East, and for understandable reasons. But my hope is that they can learn to > hate each other through peaceful, political processes, without resorting to > violence. From the standpoint of American or Western observers, part of what > we need to do is to come to terms with the fact that Islam is going to > continue to play a prominent - even central - role in public life in much of > the Middle East and beyond. And that entails challenging our own > assumptions."

This will never happen, here on Earth. You'll never have hate without violence.

"For this is the message you heard from the beginning: We should love one another. Do not be like Cain, who belonged to the evil one and murdered his brother.... Anyone who hates a brother or sister is a murderer, and you know that no murderer has eternal life residing in him."

\-- 1 John 3:11-15

Our only hope is that people will turn to the truth and love thy brothers.

<comment><USER6> _You 'll never have hate without violence._

What about America, with its commitment to the rights of the individual (including the right to worship any deities or none at all)? In this era, Protestants hated Catholics (and vice versa) all the same, but for the most part, they didn't kill each other over it. Compared to the sectarian violence in England in the century preceding the founding of the United States, how can you look at it as anything less than an unqualified success at solving the problem of warring religious factions?

<comment><USER7> > In this era, Protestants hated Catholics (and vice versa) all the same, but > for the most part, they didn't kill each other over it

It is because both pointed their hatred and violence against a common "enemy". And today we have Black Lives Matter, and the same hatred and violence against them. I would not call this prospectoprospect a success.

<comment><USER8> > > In this era, Protestants hated Catholics (and vice versa) all the same, > but for the most part, they didn't kill each other over it

> It is because both pointed their hatred and violence against a common > "enemy".

I think its more because America had strong cultural traditions about avoiding that drawn from fairly recent experience of several centuries of Protestants and Catholics killing each other all the time over religion. The religious test clause in the base Constitution and the free exercise and establishment clauses in the First Amendment were not added based on _abstract_ concern for freedom of religion, they were there because the wars of religion within Christian Europe weren't as distant and fuzzy a memory then as they are to Americans now.

<comment><USER5> No, no, no. It's just that the level of hate between Protestants and Catholics is obviously much less than it is from crazy Muslims onto "infidels". The crazy Muslims hate "infidels" and don't repent.

Repenting is another important factor. Repenting stops hate from overflowing. When Muslims start killing, is when they're convicted in their hatred and stop repenting.

When Americans or someone goes too far, yeah, maybe they throw a fist or something, but then they realize they're out of line and repent.

</comment></comment></comment></comment></comment><comment><USER9> "One of the main arguments I make in the book - and perhaps the most controversial argument, which has gotten me attacked from both left and right - is that Islam is, in fact, exceptional in how it relates to politics, law and governance. In both theory and practice, Islam has been, is and will continue to be resistant to secularization. In other words, Islam is different. It is fundamentally different than other major religions."

I 100% agree with this, and I think it is for the same reasons that Islam was such a tremendously empowering force for its followers prosperity in the Middle Ages.

<comment><USER6> _I think it is for the same reasons that Islam was such a tremendously empowering force for its followers prosperity in the Middle Ages._

But what about Avicenna and others who translated and propagated Aristotelian and other Greek ideas? This was done in a period before a religious consolidation of sorts, wherein these ideas faded in the Islamic world. (Incidentally, Avicenna's work was the route through which Thomas Aquinas was exposed to Aristotle, which set off a chain of philosophical progress that spanned several centuries, eventually culminating in the Enlightenment.)

</comment></comment><comment><USER10> > _it 's possible to like sandwiches and still believe in the implementation > of Islamic law_

If that implementation of Islamic law disrespects human rights, then excuse me if I choose not to sit and share sandwiches with you. I'll sit somewhere else.

</comment><comment><USER11> Good article and a point I often make myself. Islam isn't just a religion. It's a political ideology and political system as well.

</comment><comment><USER6> Can someone explain why this story should be in a flagged state? The story and most of the comments so far look reasonable to me.

<comment><USER12> It looks like it was previously flag-killed, and then someone revived it by "vouching" for it. This story is clearly alive at this point, since it can be upvoted and new comments can be added. I don't know why the HN software keeps the "[flagged]" indication after it's been reversed - it could be a bug.

</comment></comment><comment><USER13> at the beginning, religions were developed to solve problems, then they became the problem.</comment>


RailsCasts gets all new redesign - <AUTHOR> http://railscasts.com/ <comment><USER2> Wow... this is cool. I dig the three viewing options.

</comment><comment><USER3> very cool, but I do actually appreciate the more homely old logo, and the new theme music is a bit um, techno-ey?</comment>


NASA's New Quarter-Gigapixel Hyperwall - <AUTHOR> http://www.fastcolabs.com/3016814/nasas-new-quarter-gigapixel-hyperwall-will-display-epic-earth-and-space-visualizations

<comment><USER2> Yes - very impressive and cool BUT part of me wonders if this is just a waste of money - from a practical sense

      All of the raw power is impressive, but what do
      they plan to do with it? Mostly, to visualize
      models run on the Pleiades. Displaying global
      tide patterns on the Hyperwall 2...

I'd rather my money went to other programs</comment>


A Giant Volcano Could End Human Life on Earth as We Know It - <AUTHOR> https://www.nytimes.com/2019/08/21/opinion/supervolcano-yellowstone.html <comment><USER2> So, what can we do about Yellowstone, and what _should_ we do?

I suppose preparation, including protection and then self sustainability within that protection. But that seems like a huge investment for something that likely won't happen in our lifetimes. Are we better off using our resources to become an interplanetary species, where the fate of earth has less of an impact?

<comment><USER3> > But that seems like a huge investment for something that likely won't happen > in our lifetimes

The thing is a lot of the preparations would have multiple use scenarios. Bad hurricanes, bad earthquakes, bad eruptions, asteroid impact, nuclear exchange, conventional war relief, massive flooding, significant crop failure.

<comment><USER4> Living on earth, there's always a fallback option, right back to the stone age. On some other planet, at least in the solar system, there isn't going to be any lower tech option when something high tech fails. One widget that you can't produce locally fails and everybody is dead. So I can't see how a colony ever becomes self-sufficient, at least without some "magical" future technology that amounts to enhanced biology.

</comment></comment></comment><comment><USER5> hope it takes me first

<comment><USER3> Sometimes I feel the same way sometimes because "meh life sucks, I truly hate it"

Sometimes because "I can't imagine the hellish conditions that would result if an eruption of that level happened, best case I probably die painfully as the ash accumulates in my lungs a few days later, worst case I die terrified as the earth rumbles with incredible ferocity and some time later a heat wall incinerates me"

\---

Obligatory: National Suicide Prevention Lifeline Call 1-800-273-8255

[https://www.iasp.info/](https://www.iasp.info/)

[https://suicidepreventionlifeline.org/](https://suicidepreventionlifeline.org/)</comment></comment>


Y Combinator Reaches Farther Beyond Silicon Valley - <AUTHOR> http://www.bloomberg.com/news/2013-12-24/y-combinator-reaches-farther-beyond-silicon-valley.html <comment><USER2> It says there are founders from 22 countries in the latest batch. How does that work as far as visas go? Do founders simply need a tourist visa?

<comment><USER3> A handful of YC participants have mentioned they came on O-1 visas, which are for "extraordinary ability". But for that one, you have to prove that you are already a prominent person in your field to qualify (have published influential papers, have won major awards, have been invited to selective panels/membership bodies in your field, etc.).

<comment><USER4> Keep in mind this is a government agency that does the screening here. I knew someone who was _not_ a "prominent person" in their field who got an O-1 visa with the help of their VC investors / angel investors.

<comment><USER5> On official US Govt site, it says you need an award, e.g. nobel prize for O1. But that is a complete exaggeration as many people have rather average creditentials getting the O1. Having a good degree is enough for several people. Everything in addition helps.

<comment><USER4> Plus if you think about it, if you're in YC, getting PG or Vinod Khosla or Ron Conway (the YC VC people) to sign a letter talking about your "genius" will probably go a long way.

</comment></comment></comment></comment></comment><comment><USER6> Anyone have a good link about what's up with the "Sponsored Content by Taboola" at the bottom of so many pages nowadays?

To me, they seem to have come out of nowhere over the last six months or so.

P.S: their own words at [https://www.taboola.com/hear-our- story](https://www.taboola.com/hear-our-story)

<comment><USER7> Unfortunately if they're showing sponsored content, all of those things suck.

</comment></comment><comment><USER8> Seems like PG's Submarine essay ([http://www.paulgraham.com/submarine.html](http://www.paulgraham.com/submarine.html)) may be relevant here?

<comment><USER9> If you mean you think this article was the work of a PR firm, no, it wasn't. The reporter emailed me after he saw a tweet of mine about how many different countries the founders in the latest batch were from.

<comment><USER10> Yep.</comment></comment></comment>


Next-generation network time-servers are FPGA-based - <AUTHOR> http://www.embedded.com/electronics-blogs/max-unleashed-and-unfettered/4441235/Next-generation-network-time-servers-are-FPGA-based <comment><USER2> I'm more interested in the built in atomic clock and gps synchronization. Could this make one of Googles data clusters a more broadly available commodity?

<comment><USER3> I don't quite understand your question but if you're just interested in a Stratum 1 time server you can build it yourself with an rPi and a GPS.

<comment><USER2> I'm referring to Google's Spanner database, which relies heavily on time (and thus GPS calibrated atomic clocks) for consistency across DCs.

[https://en.wikipedia.org/wiki/Spanner_(database)](https://en.wikipedia.org/wiki/Spanner_\(database\))

</comment></comment></comment><comment><USER4> This reads very much like an advertorial, but I don't see a note about it being sponsored content.

<comment><USER5> embedded.com is one of many industry rags run by UBM, which is "the largest B2B event and media company in the world". They crank out articles in highly specialized fields and slap lots of conference invitations and links to paid subscriptions everywhere.</comment></comment>


An Emotional Letter From a 99er Who Gives Up Hope - <AUTHOR> http://www.huffingtonpost.com/michael-thornton/an-emotional-letter-from-_b_788653.html

<comment><USER2> _I am college educated and worked 35 years in management…I've failed to get a job even at McDonalds._

I'm guessing he didn't attempt to get a job working the register or as a cook.</comment>


Show HN: Markdown editor with VIM-bindings and local storage - <AUTHOR> https://pwa.sandaemc.com/ <comment><AUTHOR> A simple writing app I wrote for anyone who is looking for yet another writing editor in markdown with VIM keybindings but with focus on keeping the flow i.e. writing mode and reading mode.</comment>


Machine learning predicts World Cup winner - <AUTHOR> https://www.technologyreview.com/s/611397/machine-learning-predicts-world-cup-winner/ <comment><USER2> The research paper this article is based on: [https://arxiv.org/abs/1806.03208](https://arxiv.org/abs/1806.03208)

Other posts of the same article:

[https://news.ycombinator.com/item?id=17310365](https://news.ycombinator.com/item?id=17310365) [https://news.ycombinator.com/item?id=17309996](https://news.ycombinator.com/item?id=17309996) [https://news.ycombinator.com/item?id=17305632](https://news.ycombinator.com/item?id=17305632)

Can they be combined?</comment>