Ask HN: Service for sending emails from your app? - <AUTHOR>

To this point, we've been using Gmail. But we're reaching our limits now and getting errors and need something that will scale. Any suggestions? Thanks. <comment><USER2> It's really easy to setup exim for outbound mail. I blogged about this:

[http://www.xinsight.ca/blog/how-to-setup-a-trivial- forwardin...](http://www.xinsight.ca/blog/how-to-setup-a-trivial-forwarding- mail-server-on-a-vps/)

</comment><comment><USER3> I would take a look at SendGrid (By one of the Techstars groups), or AuthSMTP. Both are about the same price, although the fact that AuthSMTP prices are yearly disguises this.

Good Luck!

</comment><comment><USER4> What kind of app is this? Web/desktop? Are you saying you basically need an smtp server to send emails through? How many emails are you trying to send in, say, a day or an hour?

</comment><comment><USER5> Why are you looking at a server rather than sending it yourself? If you follow best-practices, you're not going to see worse results than using one of these 3rd party groups.</comment>


Entreporn: a Dictionary Definition - <AUTHOR> http://cubic-m.blogspot.com/2011/09/entreporn-dictionary-definition.html

<comment><USER2> Ha... it's about time we came up with a word and a definition for this type of journalism... Go..

</comment><comment><USER3> can't wait to see "entreporneur" in someone's twitter bio.</comment>


Steve Blank assesses the startup culture in Ann Arbor, MI - <AUTHOR> http://www.xconomy.com/detroit/2011/04/07/one-hand-clapping-entrepreneurship-in-ann-arbor/ <comment><USER2> Michigan badly needs to have this debate. Steve Blank's presentation could represent a turning point. For too long IT has had to occupy the back seat to other "favored" industries in this state.

I'm the one who actually asked Steve the original question that night on what advice he'd have for Gov. Snyder. Also followed up with him afterward and I am overjoyed he further elaborated on his blog. We can only hope the governor is listening.

</comment><comment><USER3> The Business and Engineering Schools do a pretty good job of offering entrepreneur resources to students, but sadly, the initiative has not spread to the largest department on campus: the College of Literature, Science, and the Arts

Support from LSA and additional course offerings to the students of LSA would accelerate the entrepreneurship initiative immensely

</comment><comment><USER4> Hello Michigan, Governor Snyder: I hope someone is hearing this. It needs to happen in this state or we'll spend the next century becoming more irrelevant than we already are.

antidaily: I'm in Lansing, but would definitely attend an A2-Detroit HN group and have some people I think I could convince to come along. E-mail me.

<comment><USER2> Though it's not a HN group I would suggest attending the next meeting of Hackers and Hustlers which will be on April 20th at 7 pm in the Business college complex, Room N130, on the MSU campus. They normally have presentations by three companies which has included one YCombinator alumnus in the past. Best info for this group is from the Facebook group where quite a lively discussion is going on over Steve Blank's post.

Also in Lansing there's a Coffee House coders on the second and fourth Wednesdays of every month in the Second Gear Coworking space in North Lansing at 7 pm <http://workatthegear.com/>

</comment></comment><comment><USER5> I would love to answer anyone's questions about what's happening around the University of Michigan and Ann Arbor!

I lead a project in MPowered, the student entrepreneurship org here at UM, I study CS in the College of Engineering, am a regular A2NewTech attendee, and am generally pretty familiar with the ecosystem here.

</comment><comment><USER6> Sidenote: Is there a Ann Arbor-Detroit HN group? If not, anyone interested in starting one?

<comment><USER5> I'm a student in Ann Arbor, and I'd love to get an HN meetup group going in the area. It could possibly coincide with a2newtech.org.

<comment><USER3> Ditto that

<comment><USER6> Good stuff. Putting together something - will announce here once its ready. Thanks.

</comment></comment></comment></comment><comment><USER5> Further discussion: <http://news.ycombinator.com/item?id=2419281></comment>


Saving the Lost Art of Conversation - <AUTHOR> http://www.theatlantic.com/magazine/archive/2014/01/the-eavesdropper/355727/ <comment><USER2> If you find yourself having dull conversations, stop socializing with dull people.

My entire quality of life improved dramatically when I stopped going to the same, old wells for my friendships.

First, I stopped trying to be friends with everyone I met. Not everyone is going to fit in your life. I don't mean that there will be arguments, just that things you find interesting won't be interesting to some other people as it would be to some other-other people. So, the pursuit of making everyone like me required that I focus on their interests and be deferential to them. Well, turns out, most people don't like a carpet as a friend. It's far better to be interesting yourself, in some specific way, forgo the potential friendships that don't "get you", and cultivate the ones that do. In other words, I was trying to make quality out of everything, which is impossible. It's better to winnow quality out of quantity.

Second, I stopped prioritizing friendship based on length-of-time. Most of the kids I grew up with grew apart in college, as people do, but afterwards we clung to this idea that we were once friends, thus should always be friends. It became a serious issue of clashing ideologies, and I realized that, if we had met today, we would have been much more polite to each other than we had come to be, and we would not be trying to spend a lot of time with each other. This notion of eternal friendship was exactly the reason why we were arguing so much all the time. It made us refuse to see the differences between us.

I just stopped spending effort on relationships that weren't going anywhere. The interesting people who were interested in me were out there. I just had to find them. Once found, the conversation was, of course, interesting.

<comment><USER3> I find that "interesting" and "artful", while not quite orthogonal, are not exactly the same thing. There are many people with which I can have an intellectually stimulating conversation, but really feeling cared for, appreciated, seen is rare.

<comment><USER4> "Ships that pass in the night, and speak each other in passing,

Only a signal shown and a distant voice in the darkness;

So on the ocean of life, we pass and speak one another,

Only a look and a voice, then darkness again and a silence."

\- Henry Wadsworth Longfellow, 1863

</comment></comment></comment><comment><USER5> Gwern addresses this issue in his essay, "The Melancholy of Subculture Society" [1]. In it, he focuses on this very issue. Society is fragmenting as information technology allows people to congregate by interest rather than by geography. As a result, we have deep conversations online, with others in our subcultures, but shallow (or even nonexistent) conversations with those who happen to be geographically close to us, but with whom we do not share interests.

I've noticed this in my own life, to a certain extent. I have deep and fascinating conversations with people online about all sorts of topics. But off the Internet, when I don't know if you're interested in the same things that I am, I'm a bit (well, more than a bit) boring.

[1] [http://www.gwern.net/The%20Melancholy%20of%20Subculture%20So...](http://www.gwern.net/The%20Melancholy%20of%20Subculture%20Society)

</comment><comment><USER6> I'm convinced there's a one-line version of this article that is no less informative than the original.

Somewhat ironically, I would have _appreciated_ it if the author had been under SMS/Twitter length constraints.

</comment><comment><USER7> This article, while cute, seems vacuous. 'We should talk to each other more, look into each other's eyes, and be comfortable with awkward silence.' Uh, okay.

The link was clicked because its great to hear real advice on how to be more engaging, how to find more interest in others and keep them talking, how to be interesting and how to help & encourage others be interesting. None of that useful advice was found here, nor anything else particularly helpful, just someone's opinion of what others should be doing.

Just to play a little devil's advocate, it takes energy, motivation and interest to talk to people at length on random subjects. While that might be occasionally fruitful, it could also be argued with an equal white-horse, academic, and holier-than-thou essay that searching for dense and meaningful conversation online with people who care about the issues you care about... like hacker news... is a far better use of your limited time than perfecting the art of wasting it on chit-chat. Maybe the waxing nostalgic arguments about the doom of the world our electronic devices are bringing about, and how great things were without all this newfangled technology, are getting a little sleepy?

Anyway, the last line made me laugh out loud.

> "Everybody's talking," she muses. "And nobody's talking about anything > except what's on the machines."

While in an Apple store. Seriously? You were expecting what? Philosophy? Commentary on international news? Intimate bed-side chatter? Deep eye-looking with sales people? _Anything_ other than waffling on whether to spend several hundred or thousand hard-earned bucks on what the store is selling?

<comment><USER8> I laughed at that last bit, too. "All the people at the car dealership just keep talking about cars. Same thing in the nursery—it's all 'flower' this and 'planter' that. And don't even get me _started_ on that sex shop!"

</comment></comment><comment><USER9> In the future, psychologists will ask, "Why don't you point to the meme that matches your feelings about that?"

Seriously, in some of the most-heavily travelled corners of the internet, its endless image-macros filled with random animals and long irrelevant photos. What started as an internet version of the inside joke, has morphed into an impact-text filled super-emoticon. It's almost like cockney-rhyme slang for the internet, if you're not familiar with the original image, you have to climb into knowyourmeme in order to figure out what anybody is trying to say. If you head to somewhere like facebook, you'll find the same photos posted by women in their 50s, now completely decoupled from the original meaning. (We've all seen them abused in tech powerpoints, which is a separate story.) The strangest part about this is that I've now seen it leaking out into the real world, where people will use the catch-phrase as if we're all becoming our own meme-generators, with the pre-canned images burnt into our temporal lobes.

</comment><comment><USER10> > In a fast-paced digital age, an MIT psychologist tries to slow us down.

In a cliché-filled age, an MIT psychologist goes balls to the wall cliché.

</comment><comment><USER11> Just like in meatspace, conversation online is exactly what you make it. If you create online social spaces for yourself full of superficiality and narcissistic triviality, that is what you will experience.

Just like how whether your in person conversations are substantial or not depends completely on who you chose to associate with and how you chose to communicate with them. Surely the author and the psychologist have observed countless people blathering on in person about utterly trivial topics, or sharing the equivalent of "verbal selfies" with their self-centered monologues?

You can easily create deep, personal, high quality conversation online, but it takes conscious effort, just like in the rest of life. The same goes for whether your online usage is isolating, or serves to deepen your in-person connections - it's totally up to you.

</comment><comment><USER4> > The problem, Turkle argues, is that all of this [electronic] talk can come > at the expense of conversation. We're talking at each other rather than with > each other.

\</comment><comment></comment><comment></comment><comment></comment><comment>-----

Electronics aside, is that new? If you read books like _How To Make Friends and Influence People_ , it seems like most people were horribly self-centred even back then. If you've listened to Ira Glass' talk about creativity, one of the points he brings up is essentially that a lot of people lack interest in things other than themselves. He puts it a little more gently than that, but that's the core of it.

Heck, I remember the idea that we're all looking for the unconditional love we thought we deserved as children.

Now, I'm not saying that we're all like that, or that the majority of us are like that. But if you want to sing the praises of what we had before you have to paint a fairly rosy picture of humanity. Your null-hypothesis, so to speak, _isn 't_ electronic communication alone - that might just be making the pre- existing social dynamic easier to see.

If you want to make a strong argument, general rule, if you want to make a strong argument - to be persuasive to people who value no-BS, "just the facts please mam" \- you have to either prove that you don't live in the situation where your argument would be really difficult to empathise with, or show that your argument still works even if you're in a situation where your argument would be really difficult to empathise with.

(Of course, for different people, different things are persuasive - one of the reasons this is written in the style of a story is that stories help us empathise with people and filter larger things through that empathy... I'd say there's too much of the reporter in this story for that to work as well as it should. But you can certainly get a lot of distance out of packaging up quite abstract thoughts into anecdotes. Even if, or perhaps especially, if they're not anecdotes about you. You may need a little bit of yourself in there as a hook but interesting people talk a bit about themselves and use that as a hook to talk about others - because they've got these interests in the world around them.)

</comment><comment><USER12> Sound track of the article, courtesy of the witty Neil Hannon:

The Divine Comedy: _The Lost Art of Conversation_ [https://www.youtube.com/watch?v=PSexRjTfmoE](https://www.youtube.com/watch?v=PSexRjTfmoE)

</comment><comment><USER13> This thread seems like a good place to vent anonymously about something that's been eating me. I want to see if anyone can relate or will even have any idea what I'm trying to say.

I have this friend. We've been friends for a long time. I think we must have had a lot in common some time ago, but it's hard to remember for sure. Around 1.5 years ago, I began to notice a change in this person's way of speaking. They became perfectly inane, as if in a studied, practiced way. They never say anything the tiniest bit controversial or opinionated, or revealing they slightest bit of personality. It's as if they became a P.R. department for themselves. They utter many trite well-wishes, a lot of overt gratitude for very simple things, simply phrased banal questions, and absolutely nothing else. Nothing that any civil person could disagree with ... and to my ears, nothing worth spending the breath to say. A continuous stream of equivalents to "nice weather!"

I don't understand it. As a somewhat eccentric person, my reaction to hearing this kind of talk over any length of time is like I'm quaking with frustration bordering on rage inside. I don't say anything about it, because I feel like that could only be hurtful.

Explanations I've come up with include the fact that this person has adopted Facebook very heavily, seemingly getting a significant amount of social interaction through it. So perhaps they've adopted the voice that you have to when you're constantly speaking in front of an audience full of all your friends, family, co-workers, and even bosses. But it's like this person carried that voice into their offline life, and never, ever breaks out of that bland, trite, soul-less mode. It's all, "Happy about this nice weather!" and "This pie is yummy." forever and ever....

Ah well. I just thought I'd drop this here and see if anyone has ever encountered something like this. I feel like I lost a friend.

<comment><USER14> _So perhaps they 've adopted the voice that you have to when you're constantly speaking in front of an audience full of all your friends, family, co-workers, and even bosses._

Interesting insight. Would not be surprising if message boards like this and some mailing lists socialize us in a way to say things that are relatively anodyne, given the strong bias against trolling and off-topic, ill-considered remarks. Also, we come to learn that we're writing for an audience composed of anyone who might be on the Internet (!).

About this second point, I actually think that's a great thing. Because of it we're motivated to avoid writing to a select audience, saying things that would be hurtful to others if they were listening in on the conversation. It helps us to consider our comments within a larger context.

The part about anodyne comments can't be overgeneralized -- think of the types of threads on reddit and 4chan. It might have something to do with being exposed to venues that are moderated or in which there is a reputation system.

<comment><USER15> > socialize us in a way to say things that are relatively anodyne,

I freaking wish. Have you read some of the vile nonsense spewed out on HN every day?

More seriously, people have a variety of fora, and so here they might be professional but they keep a different name for Reddit to post to the trolling subredits.</comment></comment></comment>


For Runner With M.S., No Pain While Racing, No Feeling at the Finish - <AUTHOR> http://www.nytimes.com/2014/03/04/sports/for-runner-with-ms-no-pain-while-racing-no-feeling-at-the-finish.html?hp&_r=0 <comment><USER2> To me, this article is not about running or a runner. It's about MS. Sadly, it doesn't really go into how MS affects the 2+ million people around the world, or why this story is important.

My best friend has MS. She's had it for half her adult life. She actually has it "good", in that she looks normal and can function through life virtually the same as most other people.

But there are some exceptions, such as the debilitating, random, lightning- like pain that strikes her. The occasional year or two when she can't walk without the use of a cane. The hot summers that make her body almost completely immobile and intensify pain. The fact that she can't dance for more than an hour or two before her cognitive ability reduces to basic motor functions. That there's basically no medication that helps her except for high-strength muscle relaxers that dull the symptoms.

But you know? Besides all that, she has it "lucky". She can run without falling down. She doesn't need a wheelchair or a breathing machine. She even just had her first child with her new husband. But there's the real possibility that at some point, like many other MS sufferers, even feeding herself could become an impossible task, to say nothing of caring for her own baby girl.

I am not this teenage girl, and I can't know how she feels. If it were me, I would be scared of the disease progressing more rapidly by pushing my system. But she's clearly decided that in spite of that she's going to run as hard as she can while she still has the ability. I hope she keeps running and wins every damn competition she can.

</comment><comment><USER3> I also wish they had interviewed the runner more deeply. I'd speculate that her advantage is almost entirely mental. Middle-distance races inflict pain on the whole body - guts, arms, neck, everywhere - the legs are by no means the only part under stress. The quote about not knowing how much time she had left was also telling: not many high school runners have that kind of motivation, and motivation to train and race is 90% of the competition at that level.

</comment><comment><USER4> Other than this article seems to proclaim, running success is not predicated on ones resistance to pain, but is rather very strongly correlated with maximal oxygen uptake or VO2max (and in cross country, possibly the genetically predetermined makeup of your muscle fibers).

So instead of taking the othering approach of suggesting her success is the result of her M.S., let's take the rational route and suggest it is a combination of good genetic potential and, most importantly, effective training.

<comment><USER5> _running success is not predicated on ones resistance to pain_

For her age group, it generally is. It's rare to find a teen runner who has developed that SEAL-team-like mental resilience to blow through all pain barriers. At the elite level, sure, it usually becomes a matter of genetics handing out that last sliver of advantage. Even at the elite level though (generally 800m+), you still see feats of mental insanity narrowing the gap between actual performance and "genetic max" [1]

Have you ever run competitively?

[1] Obvious example: David Rudisha running his blistering 1:40.91 800m in London 2012, all 8 runners in that race were sub 1:44 and 7 set new personal bests.

<comment><USER4> I'm not talking about getting those last few seconds in an 800m event. Obviously, at that point VO2max becomes a blunt instrument of little worth. The point still stands, though: aerobic capacity (as indicated by VO2max) is a _necessary_ (even if not sufficient) condition to be even listed on the same page with these people. No pain endurance in the world can get your feet into the door.

Of course, all the boring training doesn't make for a nice story.

</comment></comment></comment><comment><USER6> huh. i have ms and run. i have not noticed this, although i do have problems "restarting" (when you stop and then need to start running again, it's hard when you're tired). i admit i've never pushed myself to the point where i collapse when finishing - that must take some will-power because it gets progressively harder to control what your damn body is doing.

unfortunately the disease is very unpredictable. in a sense, it's just random "deleting" of nerves. so each person has different symptoms.

anyway, good on her; i hope she's stable enough (things don't get worse) for this to continue (on the other hand, if it were me, and re-mylinization (recovery of damaged nerves) improved my control, i'd take that over running fast...)

</comment><comment><AUTHOR> This is a classic story of overcoming-adversity, but the astonishing part is that it's not about a great athlete continuing to win after M.S., but a _poor_ athlete becoming great _because_ of M.S. (and due in part, of course, to the girl's new perspective on life):

> _Her trajectory as a distance runner has been unusually ascendant._

 _"When she was diagnosed, she said to me, 'Coach, I don't know how much time I have left, so I want to run fast — don't hold back,' " said Patrick Cromwell, Montgomery's coach. "That's when I said, 'Wow, who are you?' "_

 _At the time, Montgomery was one of the slowest on her team, completing her first 5-kilometer race in 24:29; by last November, she had run a 17:22, placing 11th in the regional qualifier for the Foot Locker national cross- country championships._

</comment><comment><USER7> I wish the article would have asked her specifically if she felt that she was able to accomplish this because of the numbness from the M.S. or because of a new found motivation from the diagnosis. Something only she could answer. Either way, I hope her all the best in college.

<comment><USER8> That's a really great question. I know it's her coach saying this, 'Coach, I don't know how much time I have left, so I want to run fast — don't hold back,', but hoping it's the latter. Either way, made me feel fairly lazy about not getting out of bed and running this morning

</comment></comment><comment><USER9> While I understand the attitude of wanting to try as hard as possible while there's still a chance to, I hope she's not actually doing more damage while not being able to really feel what's going on. How do you not destroy your ankles in cross-country while not being able to feel your feet?

At the same time I respect the attempt to triumph over adversity. Took me ten years to get a sub-20 5k, and I'm about the same height and don't have MS.

<comment><USER6> i think she's track? as i said in my comment, every ms patient is different, but in my experience you need to be running on pretty flat ground because you're basically relying on rhythm (it says this in the article too - restarting after stopping is hard because you really need to think about what you're doing, but once you have a rhythm, repeating is easier). for me, kerbs are a nuisance.

also, the damage can be very specific and subtle. i currently have pins+needles / little feeling in the ends of my toes on my left feet. but i can feel my ankles fine. my thighs, on the other hand, are a random patchwork of feeling and not. and what you can feel and what you can control are often not the same (it seems like nerves that control and nerves that feel are different, and damaged separately, in crude terms; on the other hand you loose the feedback loop).

it's actually very interesting if you can get a little removed from it all (which you do after a year or so). it's amazing how much redundancy there is, for example.

ps running (exercise in general) is encouraged. seems to help the immune system and the inflammation response. in fact, i "got" ms late, after running for most of my life, when i took a year off with a chronic injury. coincidence? who knows...?

<comment><USER10> This is quite insightful. Thanks for posting.</comment></comment></comment>


Show HN: Criticize My Personal Resume Site [Front-end JavaScript UI/UX and Design Dev] - <AUTHOR>

I'm transitioning to front-end UI/UX and visual design programming, so I put up this resume/consulting site in about a day and a half.
http://michael.chisari.us/
I'm still working on it, but I'm throwing it out there for criticism in the meantime. Design, functionality, context. Brutality appreciated.
Michael Chisari email@example.com <comment><USER2> Here are my thoughts:

You should probably do some more cross-browser testing (sandwich menu is a little malformed in FF) if you're not already

Instead of using colored circles, use the icons for the technologies you know

Text below your name is cut off in FF

There is probably no need to have a white stripe with black text with your name in it. Since you have a relatively dark thing as the background, why not just put white text with your name and the sub title?

Knowledge, Professional, and all those sections should stick to the top just like your name, so the person can jump to those sections whenever they want

Colors are a bit drab, maybe consider using flatuicolors.com ?

Break up the text a little more, or word-wrap in denser columns. it's a little laborious to start from left and read all the way to the right side of the screen and come back

Larger font, less/more succint text

Create better hierarchy between the sections... If the hierarchy was more visible/prominent, you wouldn't need to name sections
 * <subsection> (i.e. "Knowledge * Server"). You could have the sections be below the stick topnav bar, that way user knows where they are by color and you don't need to be repetitive

Background is a little distracting, either commit to white text on dark background or commit to background at the top and fading to solid gray or something

Use company logos (and give attribution or whatever) instead of drab colored blocks with text

<comment><AUTHOR> > flatuicolors.com

Great resource, thank you! I am going for something a little more muted, although I want to add some more depth and motion to make up for it.

> You should probably do some more cross-browser testing

That's on the chopping block. It was developed on chrome for Mac, but hardly tested elsewhere.

> Instead of using colored circles, use the icons for the technologies you > know > Use company logos (and give attribution or whatever) instead of drab > colored blocks with text

That's a good idea.

</comment></comment><comment><USER3> Content:

\- Lose the weaknesses paragraph, and all the personal stuff. It makes you look amateurish

\- In the work experience section, talk about specifics of what you personally did, not about the companies

Design:

\- The text under your name at the top looks cut-off

\- Lose the white-text-on-pastel buttons. Use columns to spacially organize prose vs keywords

\- clicking on a named anchor makes the section I clicked in be hidden underneath the floating top bar

<comment><AUTHOR> > Lose the weaknesses paragraph, and all the personal stuff. It makes you look > amateurish

I was on the fence about that, so I'm going to nix it. Thanks!</comment></comment>


Lifelong debunker takes on arbiter of neutral choices - <AUTHOR> http://news.stanford.edu/news/2004/june9/diaconis-69.html

<comment><USER2> What an awful title.

"Lifelong debunker": Persi Diaconis, an interesting chap who used to be a professional magician but turned to mathematics and is now a professor at Stanford. (His best-known work is on the statistics of riffle-shuffles: how many such shuffles do you need to do to make your pack of cards "random enough"?)

"Arbiter of neutral choices": a coin-toss.

What the title actually means: Diaconis is doing some work on the behaviour of coin-tosses; he has a simplified model of coin-tossing that suggests that there should be a small bias in favour of having the coin land the same way up as it started; he's doing (or, rather, getting some other people to do) some experimental work aimed at tuning the model on the basis of high-speed video footage of real coin tosses.

And, er, the story ends there: he isn't finished yet. But supposedly it's looking as if there might be a 51:49 bias. That would be large enough to be of some practical interest -- though maybe not very much since, as the article mentions, a skilled coin tosser can make them come up quite reliably whichever way s/he chooses.

<comment><USER3> The background story is that he was trying to beat the odds from being cheated at a casino using shaved dice; the presumption that dice not even on all sides would land more favorably one way than five others. This was before his foray into statistics. After he went into statistics, he discovered that millimeters shaved off a complex shape landing on a rough surface was something very hard to account for. A more simple problem was coin tosses.

The first thing that popped in my head was that if the coin tossed was to hit a "rough" surface on the ground, all bets are off again. The article doesn't specify is the experiment was tossing a coin and catching it (which I myself can reliably toss and bias it to the side i want, catching it in my hand, w/o using stats to prove it), or if the coin was to land on a surface of some sort.

</comment></comment><comment><USER4> TL;DR. Summary anyone?

<comment><USER5> From the OS X Summary service, set on about 10%:

To bet strategically, one had to calculate the odds that a die with one- hundredth of an inch shaved off an edge would tumble out of the box on any given side.

..."Barely six to nine months after he struggled with my advanced calculus course, he was applying to the finest graduate schools to continue his study," says D'Aristotile, who has taught probability courses at Stanford the past four summers.

...A recommendation letter from Martin Gardner was enough to lure Fred Mosteller -- a statistician on the selection committee who had dabbled with magic -- into taking Diaconis as one of his graduate students.

...To make his point, Diaconis commissioned a team of Harvard technicians to build a mechanical coin tosser -- a 3-pound, 15-inch-wide contraption that, when bolted to a table, launches a coin into the air such that it lands the same way every single time. ... But what he really wanted to know was whether unrehearsed tosses -- by ordinary folk who flip coins with unpredictable speeds and heights and catch them at different angles -- would show that the outcome of the act was, in fact, random.

...Diaconis first approached statistics Associate Professor Susan Holmes, who is also his wife, and asked if he could try her computer's camera.

..."What that means is, when I'm stuck on a problem, I feel free to call somebody who's an expert and try to talk them into helping."

While he and Holmes were analyzing the coin toss images, for instance, coffee- shop conversations with physics professors Kapitulnik and Stephen Shenker spurred them to consider the effects of air resistance, an important factor they had neglected in previous analyses.

...Several months ago, Diaconis recognized that Andersen's work in the statistical mechanics of fluids sounded similar to a mathematical theory being developed by of one of his colleagues, mathematics Professor Horng-Tzer Yau, who came to Stanford last fall.

...Mathematics doctoral student Joe Blitzstein agrees, noting that the most important thing he's learned from Diaconis, his thesis adviser, is "how to recognize that one problem is really the same as another, in a different guise."

...Though Diaconis had made a key conceptual leap by connecting falling cats and flipped coins, he still hadn't found a camera that could adequately capture the complex motion of a split-second coin toss. Without these images, it would be impossible to derive the quantitative model needed to calculate the size of a coin flip's predicted bias. ... Over a latte at Bytes Café in the Packard Electrical Engineering Building a year ago, Diaconis asked Wandell, an expert in human vision and color perception, if he knew anything about slow-motion photography. ... Two years earlier, a team led by Wandell and electrical engineering Professor Abbas El Gamal had built a speedy digital camera that shoots 10,000 frames per second -- 400 times faster than a typical camcorder.</comment></comment>


Analyzing HTTPS Traffic to Identify User Operating System, Browser, Application - <AUTHOR> http://arxiv.org/abs/1603.04865 <comment><USER2> I am wondering a bit about "To the best of our knowledge, this is the first work that shows this." and the already existing p0f from [http://lcamtuf.coredump.cx/](http://lcamtuf.coredump.cx/).

p0f has an higher error rate (if the 96% success rate are true) and it doesn't give hints on an application level.

<comment><USER3> Indeed, a simple search for "passive ssl fingerprinting" would have given them a few leads, including my blog posts from 2009. It's not something anyone can claim to be novel in 2016.

To their credit, they focus on traffic patterns, without looking at any data. That's actually interesting, but a bit weird, because TLS leaks a lot of information about clients in the ClientHello message. Incorporating the additional information would have helped them increase the accuracy.

</comment></comment><comment><USER4> Url changed from [http://www.theregister.co.uk/2016/03/17/https_is_not_enough_...](http://www.theregister.co.uk/2016/03/17/https_is_not_enough_boffins_fingerprint_user_environments_without_cracking_crypto/), which points to this.</comment>


Apple's Foundation DB has a "web scale" flag and mentions MongoDB - <AUTHOR> https://twitter.com/sandofsky/status/988111356397346816?s=19 <comment><USER2> reference is to: [https://www.youtube.com/watch?v=b2F-DItXtZs](https://www.youtube.com/watch?v=b2F-DItXtZs)</comment>


Measuring mutexes, spinlocks and how bad the Linux scheduler is - <AUTHOR> https://probablydance.com/2019/12/30/measuring-mutexes-spinlocks-and-how-bad-the-linux-scheduler-really-is/ <comment><USER2> (reposting my comment from the original)

There's some potentially misleading information here. Background: I've spent the last 20+ years writing low-latency realtime audio applications, technically cross-platform but focused on Linux.

If you care about low latency on any general purpose OS, you need to use a realtime scheduling policy. The default scheduling on these OS's is intended to maximise some combination of bandwidth and/or fairness. Low latency requires ditching both of those in favor of limiting the maximum scheduling delay of a thread that is otherwise ready to run.

Measuring how long synchronization primitives take without SCHED_FIFO is illustrative, but only of why, if you care about scheduling latency, you need SCHED_FIFO. There are several alternative schedulers for Linux – none of them remove the need for SCHED_FIFO if latency is important.

It is absolutely not the case that using SCHED_FIFO automatically starves non- SCHED_FIFO threads. Scheduling policy is set per-thread, and SCHED_FIFO will only cause issues if the threads that use it really do "burn the CPU" (e.g. by using spinlocks). If you combine SCHED_FIFO with spinlocks you need to be absolutely certain that the locks have low contention and/or are held for extremely short periods (preferably just a few instructions). If you use mutexes (which ultimately devolve to futexes at the kernel level), the kernel will take care of you a little better, unless your SCHED_FIFO thread doesn't block – if it doesn't do that, that's entirely on you. Blocking means making some sort of system call that will cause the scheduler to put the thread to sleep – could be a wait on a futex, waiting for data, or an explicit sleep.

In particular, this: "This was known for a while simply because audio can stutter on Linux when all cores are busy (which doesn't happen on Windows)" is NOT true. Linux actually has better audio performance than Windows or macOS, but only if the app developer understands a few basic principles. One of them is using SCHED_FIFO appropriately.

Pro-audio/music creation scheduling is MUCH more demanding than video, and a bit more demanding than games. Linux handles this stuff just fine – it just gives you enough rope to shoot yourself in the foot if you don't fully understand what you're doing.

<comment><USER3> > Blocking means making some sort of system call that will cause the scheduler > to put the thread to sleep – could be a wait on a futex, waiting for data, > or an explicit sleep.

Speaking of which, do you know of a tool that would allow to ensure that e.g. your RT threads won't do bad things - short of putting a breakpoint on every syscall-like thing ? I wonder if at that point the audio community should not look into developing some clang-based static analyzer to enforce that.

<comment><USER2> There have been several such tools over the years - I regret that off the top of my head I don't recall the names of any of them.

Clang can be used for this but AFAIK you need to annotate functions/methods to indicate whether or not they are intended to be RT-safe. This gets complex if you have code that can be used in an RT context and in a non-RT context. The annotation part would be relatively simple in, say, a small audio player. In a DAW, it would be a substantial and complex task.

</comment></comment></comment><comment><USER4> The claim that "the Linux scheduler is bad" seems wrong.

First of all, a program that calls sched_yield() for synchronization is simply broken, since doing so can cause 100% CPU usage (if the other thread is stopped at an unfortunate place), so the only correct method among the ones benchmarked is std::mutex.

When using std::mutex (the only correct approach), Linux and Windows both seem to have similar average performance, but Windows has 10x latency, so Linux is better.

<comment><USER5> sched_yield() isn't being used for synchronization, it's to yield the calling thread before its timeslice is exhausted because it's potentially preventing the lock-holder thread from getting scheduled to run and releasing it.

Spinlocks assume the critical section is fast and non-blocking, so when the spinning lasts longer than expected, throwing in a yield can help by handing some CPU time to something else.

The lock-holder might be getting scheduled on the same CPU and waiting for this thread to yield, or there might just be excessive threads runnable right now and burning cycles pointlessly spinning isn't helping get the lock-holder to run and release the lock any sooner.

In a situation where you have exactly as many threads as there are CPUs, and they've been assigned their own respective CPUs, and there's nothing else running on the system, I wouldn't expect the yield to help. But that ideal isn't how things generally look in practice.

<comment><USER4> You must not use sched_yield() and also must not spin indefinitely.

Instead, one should optionally spin for up to a constant number of iterations and then call sys_futex.

<comment><USER5> That's how you implement a userspace mutex in linux, not a spinlock.

<comment><USER6> Sure, but sched_yield is strictly worse than using a futex (except that you'll need to check for waiters on an unlock which makes it slightly more expensive).

<comment><USER5> Ok, so you're arguing that userspace should use mutexes and not spinlocks.

Which I agree with, most of the time userspace spinlocks don't fit well.

But TFA is clearly comparing the two, and observing a variety of spinlock implementations with sched_yield() demonstrating an interesting positive effect on the spinlocks as tested.

<comment><USER6> Actually no, I wouldn't make that claim; while a futex based adaptive mutex is a very good default, spinlocks can be still approriate for some applications.

What I'm saying is that if your use case is such that you expect enough contention to consider using TATAS (which is actually a pessimization in the uncontented case) and look into optimizing sched_yield, probably a spinlock is not appropriate on the first place.

Edit: hence a spinlock shouldn't bother with yield and just do a tight xchg spin (I haven't measured it inna while, but heard rumors that pause can severely harm acquire latency on very recent CPUs as it will quickly put them in a deeper power saving mode than in the past)

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> I'm not convinced the measurements are really meaningful in this article. The author seems to be running a bunch of threads, measuring the time from when one thread starts unlocking the lock to when another thread gets it and calling this "idle". I can't find any mention of how many threads there are, how many CPUs, or what else the system is doing.

So this is measuring a mess of a few things:

For mutexes (assuming all the implementations actually make syscalls for unlocking), this has something to do with how long it takes for the scheduler to activate the waiter and run it, plus how long the scheduler waits because the system is doing something else or it wants to try to avoid bouncing a task between CPUs.

For anything that does _not_ involve the kernel in unlocking, this is really just a measurement of the pauses in execution of long-running threads that continuously hog the CPU. If the thread is also calling sched_yield(), the results are erratic, since sched_yield() more or less means "I don't want to run now, but I'm not actually waiting for anything visible to the scheduler and, um, run me again soon maybe?" This is almost always the wrong solution. Other than that, this test has essentially nothing to do with _which_ spinlock is in use, unless the spinlock itself wastes time failing to figure out that it's ready.

From old memory, the Windows scheduler is (was?) mostly based on per-thread priorities, highest priority wins, where the priorities are occasionally automatically adjusted. So, if you set a high-ish priority, you get to hog the CPU. In contrast, Linux tries quite hard not to let normal (non-RT) threads hog the CPU, so a thread that effectively runs continuously measuring pauses will detect significant pauses in which Linux decides that the rest of the system deserves to run too.

<comment><USER8> I agree that the post needs to clarify the number of threads, what thread priorities were assigned, and what measures were taken to associate the threads with logical CPUs (affinities).

I think your characterization of sched_yield() is a bit off. The man page is clear:

"sched_yield() causes the calling thread to relinquish the CPU. The thread is moved to the end of the queue for its static priority and a new thread gets to run."

and

"If the calling thread is the only thread in the highest priority list at that time, it will continue to run after a call to sched_yield()."

In particular, it does not say "I'm not actually waiting for anything visible to the scheduler and, um, run me again soon maybe?".

So assuming that the threads are running at some relatively high priority, I'm struggling to see how delays on the order of 60ms could arise.

EDIT: reading further:

"sched_yield() is intended for use with real-time scheduling policies (i.e., SCHED_FIFO or SCHED_RR). Use of sched_yield() with nondeterministic scheduling policies such as SCHED_OTHER is unspecified and very likely means your application design is broken."

So maybe that's it.

[1] [http://man7.org/linux/man- pages/man2/sched_yield.2.html](http://man7.org/linux/man- pages/man2/sched_yield.2.html)

<comment><USER7> Indeed. Linux's SCHED_OTHER doesn't have static priorities.

There was a half-baked design for locking that kind of worked 20 years ago: try to acquire the spinlock and, if it's contended, yield. On a single CPU, that probably means that the lock holder gets to run, and if they drop the lock quickly, then the yielding thread will (on an otherwise mostly idle system) get to run soon.

This was a dubious design 20 years ago, although, admittedly, OS lockout primitives were worse back then. But now, with multiple CPUs on a system, the whole scheme falls apart — the lock holder might be on a different CPU and yield() has no effect on how quickly the lock is released.

So, in most cases, yield() really does mean "I don't know what I'm doing, but I don't want to run right now." Anything the kernel does in response is, at best, a wild guess.

</comment></comment></comment><comment><USER9> I think the answer, as always, is to measure on your own workloads. I've seen real-world production code get significant speed ups by switching to spinlocks from mutexes.

Very interesting post though. I've never considered the idle latency before.

</comment><comment><USER10> Windows has process and thread priorities, including so-called "real-time" ones... but there seem to be no mentions of them in the article, as opposed to Linux. Why?

</comment><comment><USER11> My take on this article is it doesn't worth implementing your own spinlock. The OS can take advantage of their implementation details while you can't portably implement it. The OS implementation changes in the future or varies.

Even if you use _mm_pause() to let CPU know it's doing spinlock, for the eye of the OS, it still looks like a busy thread, it can't be distinguished from non-spinlock computation heavy thread.

</comment><comment><USER5> I would like to see the measurements when the threads are explicitly assigned to their respective CPUs.

It surprised me to not see even a mention of CPU affinity.

<comment><USER12> For any sort of benchmarking like that you have to take care of affinities and cpufreq governor at minimum.

<comment><USER5> yep, I was assuming they at least didn't have any frequency scaling or powersave governor junk going on but you're right - it wasn't even mentioned so...

</comment></comment></comment><comment><USER13> Can someone knowledgable explain what a mutex is, what a spinlock is, and the difference between mutexes and spinlocks?

<comment><USER14> A spinlock is a kind of mutex ("mutual exclusion") where in a condition is checked as fast as possible in a loop. This is useful when the expected wait times are short as you don't have to pay the context switch penalty. Typically done when you have real parallelism with multiple CPUs/cores.

A mutex can also refer to a particular group of "mutual exclusion" methods where in the current process/thread is suspended until the condition is true.

Hope this helps.

<comment><USER15> Additional note that mutual exclusion is a concept that pops up a lot when dealing with concurrent processing (think threads, multi-process type architectures).

Typically mutex / spinlock is implemented to reduce and prevent race conditions

<comment><USER16> One can see this at a higher level in Golang, where a gofunc are reading/updating a map - and run with -race then it shows where you have to use a Mutex call to lock that Map for the access, R or RW. Higher level but pretty simple to see.

<comment><USER17> One can see this at an even higher level in Rust, where you don't even need a "race checker" to avoid data races in safe code - the compiler will force the use of patterns like Mutex<> or Rwlock<> (or others) for stuff that might be accessed concurrently in ways that would otherwise break mutual exclusion.

<comment><USER15> So what would you call the application of the compiler enforcing non-race condition patterns of it's not a "race checker"?

It's still there. It's just a compile-time "race checker", not runtime.

<comment><USER18> Not really, in Rust's case. It's the general borrow checker which handles this.

Since in Rust it is illegal for a value to be referenced for writing in one place and referenced for anything else in any other place, regardless of concurrency/parallelism, Rust code is data-race free by design.

I still think that GP's comment was a non-sequitur.

<comment><USER17> Rust has "interior" mutability, meaning that shared references are not true 'read only' references; they _can_ be used for writing if the type supports such an operation. What makes Rust data-race free is the combination of 'interior' mutability and the Send and Sync traits, which control moving or referencing objects across threads.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> A typical mutex has essentially two very different costs depending on whether the lock is already taken by another thread:

\- Uncontended case + mutex: no syscall, fast path is basically the cost of the memory barrier.

\- Uncontended case + spinlock: no syscall, fast path is basically the cost of the memory barrier. Essentially same cost than a mutex, sometimes a tiny bit cheaper but _if your lock isn't contented in the first place it will be very hard to measure, since not being a bottleneck_.

\- Contended case + mutex: thread is waiting in the mutex list without taking CPU. Hyper-threading may also give hand immediately to another thread, perhaps lucky enough to run. The OS mutex may have a bit of capped spinning before waiting in the scheduler.

\- Contended case + spinlock: Anything goes. CPU gets consumed just for spinning. Wrong thread might get priority. If you are lucky you did put a HLT instruction to mitigate the complete disaster that spinlocks are, perhaps it even does something. Your consolation: no syscall or thread pausing... because they are spinning.

tl;dr: spinlock are worse in the contended case and essentially the same performance in the uncontended case against your typical OS mutex. SPINLOCKS WON'T YIELD THE EXPECTED BENEFITS, USE REGULAR OS MUTEXES.

<comment><USER6> A problem with pthread mutex and std::mutex is that they are often very large which is problematic for very fine grained locking, while you only need one bit for a spin lock and can be embedded in other objects (say, a pointer) as long as you can spare one bit.

Of course you can roll your own proper mutex if you want to get your hands dirty with futexes. IIRC you only need two bits (one waiter bit and one locked bit).

<comment><USER20> Not sure what you mean by a single bit for a spin lock. It's a cas operation, which doesn't operate on a single bit.

Edit: I think I see what you're getting at, but the point from the article about cache invalidation for the naive implementation still is valid.

<comment><USER21> You can do it with a single bit: Read the whole unit (eg 64 bit), flip the big you need, and then do a Compare exchange which tries to replace the whole retrieved thingy with the modified one.

That obviously requires you to read the current state upfront, whereas a plan compare exchange from 0 to 1 on 32/64Bit avoids that.

<comment><USER19> That doesn't work since this isn't atomic anymore.

<comment><USER6> Of course it is. The mutating operation is the CAS which requires the existing value anyway.

<comment><USER19> Mmmm... I had to write this down.

        0: CAS_bit_n(void* adr, int n)
        1: while(true):
        2:   old <- read unit(adr)
        3:   new <- compute-new-value-with-changed-bit-n(old, n)
        4:   if CAS(adr, old, new):
        5:     break
        6:   else
        7:     continue

Indeed it seems it is correct if you retry.

<comment><USER6> In fact normally a failed CAS (know as IBM-style CAS) will update the old value anyway so no need to reload old inside the loop; in c++11:

      auto old = addr.load(std::memory_order_relaxed);
      while(not addr.compare_exchange_weak(old, old|1))
         ;

In fact you can set old to some random value and it will still convergence to the correct value, but is of course suboptimal.

<comment><USER19> Interesting! Now I'm interested if there has been one usage case for the single bit spinlock in practice. It seems appropriate if writes aren't too numerous (well leaving aside speed concerns). Or a case where std::mutex was too large?

I've always wondered how the wait list was implemented.

<comment><USER6> Think about a concurrent hashtable using chaining for collision resolution; distinct bucket chains can be updated concurrently, so you need a per bucket lock but you do not want a full std::mutex as it would increase the size of the bucket table by a large integer multiple. Instead, borrowing one bit from the chain pointer (you can easily arrange the least significant bit of the pointer to be always zero) is pretty much free.

Note: I wrote the above from the top of my head, I haven't actually had the need to implement a concurrent hashtable yet.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I'm curious what is going on with the "Idle Time" measurements. Does anyone have any theories?

My guess is that if the thread gets descheduled inside the lock() spin loop (either by an explicit call to yield() or otherwise) then the "Four longest idle times" reflect the fact that all of the worker threads have remained descheduled for an extended period. But assuming that the threads have elevated priority (why would you use spinlocks on non-high-priority threads?) this seems implausible on an 8 core machine.

I would be curious to know what the results are if isolcpus was used and the workers were explicitly assigned to those CPUs.

<comment><USER22> The whole "idle time" vs. "longest wait" distinction is suspect and it's surprising they don't go to more effort to justify it.

What "longest wait" measures is (b_i - a_i) in:

        Time a_0
        lock
        Time b_0
        unlock
        Time a_1
        lock
        Time b_1
        unlock
        ...

What "idle time" measures is (b_i - a_i) in:

        lock
        Time a_0
        unlock
        lock
        Time b_0
        Time a_1
        unlock
        lock
        Time b_1
        ...

At least for the spinlock variants, "unlock" should be an extremely cheap operation (just a store for most variants), which means that those two sequences ought to be essentially identical in terms of timing: it ought to be possible to move the "Time a_i"s across the "unlock" operations with a timing impact less than a microsecond, i.e. the two sequences ought to have essentially the same timings.

The fact that the timings are supposedly different on a millisecond scale is therefore quite suspicious.

Perhaps the chosen clock ends up calling a syscall, which can end up in the scheduler on syscall return occasionally and throw off the measurements that way? Or just the fact that there's one extra syscall in the critical section sometimes causes other threads to make different yielding decisions which throws off the scheduling?

More generally, it would have been great to see a deeper investigation into scheduling behavior, which is possible on Linux using the tracing infrastructure and visualizing with different tools like Hotspot.

Getting a worst-case delay of ~1.5ms with a naive ticket_spinlock that can yield is really not surprising, to be honest. All it takes is for patterns like:

1\. 3 threads pull their tickets in order. 2\. The middle thread yields and something else is chosen to run by the scheduler, or perhaps the scheduler decides not to run anything for a short while on the off-chance that something else becomes runnable, which is a fair choice because after all, you yielded. 3\. The last thread is then blocked by the middle thread.

It just boils down to the fact that "yield" is a bad primitive. You should fall back to futex-based synchronization instead so that the kernel has a better idea of what you're trying to do. The article comes to the same conclusion anyway, in the form of "just use std::mutex".

<comment><USER8> It's not entirely clear from the article, but my understanding was that "longest wait" maintains per-thread timestamps, i.e. the time to lock() within a single thread, whereas "idle time" uses a single global atomic timestamp that measures the time from when the last thread unlocks until the next thread locks -- even if the unlock() and subsequent lock() are on different threads.

</comment></comment></comment><comment><USER23> This is a GREAT post. Super technical. Lots of stuff to learn.

</comment><comment><USER24> Why isn't the conclusion to just use the mutex at least on Linux? It seems to have both consistently low latency and great throughput. What else can you get from the spinlock?

<comment><USER25> > What these benchmarks have in common is that they measure code in which > there is nothing else to do except fight over the lock. In that environment > the only thing that makes sense is to use a spinlock. Because if you go to > sleep, all that will happen is that some other thread will wake up that will > fight over the same lock.

That said, his conclusion is in fact just as you stated, if you read in between the lines. (This paper is really about the scheduler, so it's not exactly that conclusion.)

<comment><USER26> And that's precisely what most operating systems other than Linux do: use adaptive mutexes as the default mechanism, not spinlocks.

<comment><USER6> Pthread_mutex on linux is also an adaptive mutex, although the spinning count might not be optimal.

</comment></comment></comment></comment><comment><USER27> IMO mutexes, semaphores, spinlocks should be used only in special cases (e.g. games or other high perf logic where you need to maximize performance by a fixed percentage) because they are anti-patterns for scalability. They only help to scale up to a point after which all the threads either spend all their time waiting for each other to release the locks or they can never acquire the locks because the demand for that shared memory is too high. There are exceptions for example if you have unlimited reader threads/processes compared to a fixed number of writer threads/processes but even in those cases, I feel that shared memory locks add invisible bottlenecks to scalability as the code evolves over time.

For most of my use cases, I prefer to keep processes/threads parallel and communicate via IPC chanels/sockets. This makes it easier to write code that can scale without limit.

For most use cases, I don't see much point of writing scalable code that you know only scales up to a certain point and then needs to be rewritten.

Avoid using shared memory if you have an embarassingly parallel problem.

<comment><USER18> Approaches using IPC/sockets are significantly more complicated than shared- memory parallelism in most programming languages. Sockets at least are also an absurdly wasteful communication mechanism in low-concurrency situations, compared to direct shared memory access.

If you have a simple REST web server, single-thread is simply not a realistic option. The next simplest thing is to do shared memory parallelism, which works perfectly for a few dozens to low hundreds of threads. That already covers a lot of scale for many realistic problems. Moving from that to a distributed system design is a significant jump in implementation complexity, and will likely increase per-request latency with most straight-forward implementations.

<comment><USER28> In my experience it is very to easy get into situations where using only mutexes is impossible. As soon as you need a lock per object and access two objects then you have to make sure to only acquire one lock at a time. The end result is that you are effectively using the stack as a message queue that can only hold one element.

<comment><USER18> The solution with multiple locks is to always take them in the same defined order on any code path - that guarantees that you can't get into deadlock situations.</comment></comment></comment></comment>


German Engineering Yields New Warship That Isn't Fit for Sea - <AUTHOR> https://www.wsj.com/articles/german-engineering-yields-new-warship-that-isnt-fit-for-sea-1515753000 <comment><USER2> The previous discussion ([https://news.ycombinator.com/item?id=16139522](https://news.ycombinator.com/item?id=16139522)) had a non-paywalled link in the comments:

[https://navaltoday.com/2017/12/22/germany-returns- lead-f125-...](https://navaltoday.com/2017/12/22/germany-returns- lead-f125-frigate-to-builder-report/)</comment>


The Phablet Revolution - <AUTHOR> http://flurrymobile.tumblr.com/post/117769261810/the-phablet-revolution?mkt_tok=3RkMMJWWfF9wsRonuKjOZKXonjHpfsX67O4uW6WwlMI%2F0ER3fOvrPUfGjI4AScFnI%2BSLDwEYGJlv6SgFQrDHMbRiyLgMWRc%3D <comment><USER2> I have one of the original Nexus 7's that was given out at Google I/O a few years ago. After I got it I used it all the time around the house, and sometimes on the road (using the mobile hotspot on my Droid Charge) when I didn't mind carrying around an extra device.

Then I got a Galaxy Note 2. The day I got it was literally the last time I used the Nexus 7. It did everything the Nexus 7 could do and it was always with me. It had almost the same display resolution in a much smaller overall package thanks to the slimmer bezel.

It was bigger than the Droid Charge, but it actually fit _better_ in my pants pocket. My carrying system for years has been to put the phone (with no case) in my left front pants pocket with the screen facing in to protect it. Keys and change go in the right front pocket so they never scratch the phone. Don't need cargo pants for this, just regular slacks or shorts.

This worked OK for the Droid Charge, but the phone always ended up sideways in my pocket. When I sat down, the Droid would stick out because it was crosswise with the long end against the curve of my leg. The Note 2 was big enough that it wouldn't tip on its side in the pocket like that; it stayed upright with the long end parallel to my leg and the short end going across. So despite being a bigger phone, it ended up being less in the way.

Later upgraded to a Note 3 and Note 4, and wouldn't go back to a smaller phone at all.

I do pay attention to pocket depth when I buy pants, but most of the styles I like have reasonably deep pockets anyway.

I don't talk on the phone much, and when I do the larger size isn't a problem. I mostly use my phone as a portable always-connected tablet.

For anyone who thinks these large phones exist only to give manufacturers bigger numbers they could brag about, well, I'm your counterexample. They are ideal for me.

<comment><USER3> Do you ever run into problems dropping it? I stuck with the Nexus line from the Nexus One all the way up to the 4, but even the 4 was too big for my hand. I could barely use it one-handed, and I believe that contributed greatly to me frequently dropping the phone (went through 2 screen replacements). Never had I had this problem with a previous, smaller phone. After the N4, I downsized and I'm much happier.

(I suppose that's also a thing: I want to be able to primarily use my phone one-handed. If you're consistently a two-hand user, I guess this isn't much of a problem.)

<comment><USER2> Interesting point about the one hand vs. two hand operation.

I haven't had a problem with dropping the phone, but I do use two hands to operate it except for simple things like scrolling. That's easy with one hand - at least for normal vertically scrolling websites.

It does get annoying reading Kindle books with their ridiculous sideways page turns where you have to tap the right side of the screen or drag the page sideways. I love having all my books and magazines on my phone, but hate the Kindle UI. Why can't I just scroll my books vertically like a normal website? Being right-handed, I hold the phone in my left hand, so it's a pretty awkward reach. [1]

The few close calls I've had were when I tried to get fancy and reach across the phone with my thumb to tap some button on the screen - or flip a Kindle page. Definitely see how it would be easier to drop if you're using it one- handed.

[1] This reminds me of a question I've been curious about: I've read a few times that most people hold their phone in their dominant hand (e.g. my right hand). I never understood this, since I use it more like a small pad of paper and pencil - the pad of course would be in my left hand and the pencil in my right. Naturally when I'm using the Note's stylus I do it that way, but even without the stylus I've always thought of it like a pad and pencil with my finger being the pencil. I've always assumed that people who use their phone with two hands do it this way, but I'd be interested to know whether people who operate their phones with one hand use their dominant hand or the other hand.

</comment></comment></comment><comment><USER4> I actually wish I could purchase an iPhone 6 in an iPhone 4s form factor.

I like being able to hold the phone with one hand and do everything I need with my thumb. This seems like one of those trends thats driven by the manufacturers need to position themselves rather than customer demand.

<comment><USER5> I know tons of smart people have already thought about this, but I still wonder if it would make more sense to collect almost all of the buttons at the bottom of a phone's interface.

Maybe swiping to go back makes this point moot.

<comment><USER6> Android designers have explained that they moved away from tabs at the bottom of the screen in 4.0 because with both the navigation bar & another set of controls one of top of the other, users were just making way too many input errors. (I don't have the source handy, sorry)

<comment><USER5> My palm already hits the button in the bottom-right hand corner all the time in certain apps with tabs, like the twitter app.

I really wish they'd get rid of that bottom tab bar and shove them under a hamburger button even though that's supposedly bad.

</comment></comment></comment></comment><comment><USER7> As a single data point, I recently dropped and shattered my trusty Nexus 4 and was in a market for a new phone. I was extremely hesitant about getting a Nexus 6, exactly because I thought it was way too big. I finally bit the bullet, and I instantly loved it.

Yes, you need two hands to do most things. My thumb can't reach Android's "back" button on the 6. But what I realized was that with the Nexus 4, I _also_ couldn't reach everything with just my thumb. "Back" was within reach, but the upper right and left weren't fully. So while yes, the 6 isn't strictly as comfortable as the 4 was, the bigger screen is a minor tradeoff I'm ultimately very happy with.

It also barely fits in my pocket, so the jury's still out as to whether that makes it more prone to slipping out while seated. I'm not sure I want jeans with deeper pockets just to accommodate my phone. But it hasn't been an issue yet.

(Now if manufacturers would just improve the process they use to make these hi-DPI screens so that the color temperature isn't splotchy. My Nexus 6 suffers from a pinkish bottom half, and apparently it's not an uncommon issue for hi-DPI smartphones and non-Retina-brand hi-DPI laptops.)

<comment><USER8> Exactly the same experience for me going from an htc one m7 to the iphone 6 plus. Was very skeptical, but i instantly loved it.

</comment></comment><comment><USER9> The Nexus 6 really changed my usage habits. I was an avid tablet users, carrying a Nexus 7 with me anywhere I go. Now I never use it anymore, and the Nexus 10 only gets used on the treadmill. I can't imagine going back to a small screen, and I hope the next Nexus doesn't go there as some sort of a new trend (they can make it even bigger, slightly, for all that I care).

</comment><comment><USER10> Just because people are trying it en masse doesn't mean it's here to stay.

There are three things we know from experience:

1) Tablets seemed like a lovely idea, but after a while we got tired of their limitations compared to laptops combined with their portability compared two phones. They're useful on occassion, but they didn't quite hit the sweet spot. And we still need an e-ink device for comfortable reading.

2) Smartphones are really cool, but they have limited usefulness when trying to do something a bit more complex. An improvement over dumb phones and feature phones, but not quite the sweet spot either.

3) We would really, really like to be able to stop carrying 4 devices around.

So "phablets" (I hate that name) are the next attempt to be all things (or at least more than one thing) to all people. And everyone is trying them out, just like tablets before them.

One hint that they're not here to stay is the pathetically desperate way people try to justify the clumsiness of their expensive purchase. Seriously, I constantly see people messing with these huge things going "no, it's not too big, really, I love it!" while they're desperately trying to operate it without dropping it. It's kind of tragic, and really emphasises it as a fashion driven fad.

</comment><comment><USER11> I wonder if the distribution of phablet android users being so disproportionate to devices available is because most of the flagship products are phablet sized (Samsung Galaxy S, Google Nexus, etc.)

<comment><USER12> I agree. It seems possible that the larger screen size was driven by companies looking for numbers they could make bigger than their competition.

Its also conceivable that whatever Apple had come up with would be bought not because the consumers wanted it (i.e. big screens) but simply because they wanted to have the latest Apple "thing."

In other words, bigger screens are simply trendy, and are therefore not here to stay.

<comment><USER13> I have very large hands and I stopped using iPhones after I first used the original Galaxy Note. I simply couldn't go back to the tiny screen even though i did prefer iOS. I went through a couple of large phones after this and never had a complaint. I bought an iPhone 6+ day one simply because it's the phone i had been waiting for.

Phablets may not be for everyone, but neither are the small phones that are rapidly becoming an endangered species.

<comment><USER3> Thing is, the definition of "small" is changing. My 4.6" Sony Z3 Compact is considered "small"!

Do the majority of smartphone users have large hands? I have fairly average- sized hands, and my Z3C is nearing the limit of what I can comfortably use one-handed.

</comment></comment></comment></comment><comment><USER14> When the Samsung Galaxy Tab originally came out in late 2010, it debuted with a mandatory data subscription (seriously bad economics for purchasers).

What's interesting is that, in Europe, I remember discussion that the mandatory subscription also included voice. So theoretically it was the proto- phablet, though I'm not sure if that plan ever reached fruition.

I kept thinking even back then, hell, I already use BT headsets all the time, why not a 7" screen?

<comment><USER15> I'm fairly certain it did include voice in the UK, as I remember going to check it out and see if it would fit in my pocket and was prepared to use a BT headset (which I've never owned) if it worked out, but it was too big due to the bezel.

Possibly still could have worked for someone who knew they'd always have a bag with them.

But since the Note 2 I've been on the phablet bandwagon. It just makes sense.

</comment></comment><comment> Lx1oG-AWb6h_ZG0 They consider 5" screens as a phablet, which seems pretty weird: when I think of a phablet, it's something over 6", like the note series or the larger lumias, or the iPhone 6+... By their definition, pretty much all android flagships the last few years (including the galaxy s series) and the iPhone 6 are phablets, which is meaningless.

<comment><USER16> The iPhone 6 Plus is 5.5" and the Galaxy Note maxes out at 5.7", so setting 6" as the bar for a phablet makes no sense.

</comment></comment><comment><USER17> I'm surprised the increase in phablet use hasn't been at the expense of tablet use. My experience has been that since getting an iphone 6+ I haven't used my ipad at all

</comment><comment><USER8> It's skewed because they consider everything above a 5" screen a phablet. That basically includes every android flagship as a phablet, but not the iphone 6 which is 4.7"</comment>


The Intel board should have fired themselves, too - <AUTHOR> http://www.cringely.com/2012/11/20/while-the-intel-board-was-firing-paul-otellini-they-should-have-fired-themselves-too/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+ICringely+%28I%2C+Cringely%29 <comment><USER2> Post worth it for the final line

"It's still a rich and profitable company and can go a decade or more with a cargo cult corporate culture based on hope that desktops will return"</comment>


Show HN: News analysis with "artificial intelligence" - java-man http://news-AI.com

<comment> java-man Our system reads a number of alternative media sites, high tech, physics, and science blogs, then generates personalized news stream weighted by the degree of relevance.</comment>


Show HN: Beautiful Data Diagrams for non designers – Expressus - <AUTHOR> https://Expressus.io <comment><AUTHOR> Hey it's very much a WIP and as such mobile isn't supported yet unfortunately</comment>


Sony's PlayStation 4 Is Running Modified FreeBSD 9 - <AUTHOR> http://www.phoronix.com/scan.php?page=news_item&px=MTM5NDI

<comment><USER2> Wonder why they went Free instead of Open - you'd imagine securing the system would be a reasonably high concern for them.

</comment><comment><USER3> It would be awesome if they released their AMD GPU drivers for FreeBSD</comment>


Ask HN: How to fund Free Software Development - <AUTHOR> With the precondition that the software to be developed does not exist yet (and is thus not known yet). I researched this matter a bit and came to the conclusion that it would be rather hard. But I would be interested into hearing other thoughts.<p>Also, please don't "cheat", so no "Open Core". The software is to be released under a Free Software License completely. <comment><USER2> Donation and enterprise level support is what comes to my mind. Also depending upon what you are developing, running a training program could bring in some extra cash.

<comment><AUTHOR> Donations: yes.

Commercial support and training: yes, but for that the software has to exist. A good idea for later on though.

<comment><USER2> When you reach certain level on development, funds might also come in from bigger industry. But its tough to get funds upfront no matter what the source is. May be you can look into what light table did - [https://www.kickstarter.com/projects/ibdknox/light- table](https://www.kickstarter.com/projects/ibdknox/light-table)</comment></comment></comment>


Marvell's Plug Computer: A tiny, discrete, fully functional 5 watt Linux server - <AUTHOR> http://www.tgdaily.com/hardware-opinion/41525-marvells-plug-computer-a-tiny-discrete-fully-functional-5-watt-linux-server

<comment><USER2> This is from 2009; plug computers, while extremely cool, aren't exactly news, and have been discussed several times here before.

<comment><USER3> <http://news.ycombinator.com/item?id=1443466></comment></comment>


Notes on some artefacts - <AUTHOR> https://www.themonthly.com.au/tiredofwinning/notes-some-artefacts <comment><USER2> Much like the author, I am skeptical of the role that 'fake news' has in the current political crisis in the united states (and, I would argue, globally). There's something about that critique that seems to a)lack a broader historical context b) lack any 'material' grounding.

I'm still waiting for the article(s) that incorporate these ideas successfully.

<comment><USER3> In some way's, I'd be willing to entertain the idea that all of the people who voted Trump, all still use AOL.com email addresses, browse the internet on Gateway 2000 tower desktop computers, and click every email attachment and read every chain letter forwarded to them.

I'd like to believe that, because if it's not true, something weirder is afoot.

My thinking is really that the organic Trump voter wasn't hacked, and that, to them, the upset is only such that Pepsi won the election, and not Coca-cola. That if they weren't supposed to vote Trump, he wouldn't have been an official party candidate. That having a TV show made him as qualified as being a movie star qualified Reagan. That being a TV star, and a billionaire qualified him in ways that simply being married to a former president would not qualify his opponent. That his opponent would be less historic for having been a first lady (a presidency in her husband's shadow), and that, shockingly, the perceived charisma of one opponent represented the mirror reflection of how the other was perceived by their rival.

If Trump won organically, it means so many people really are " _like that_ " and that many at-large voters are simple-minded, easily lead astray, and thus all democratic votes are suspect, and that putting the levers of control, and vesting democracy in them is a complete mistake.

That it's okay to override their choice, because their choice is dumb.

If you accept that narrative, other consequences become rational.

But, if it was a cheat, a hack, a derailment, sabotage. If removal is legal and based on rational facts. That the people you meet, who openly admit to voting for Trump are discredited for other reasons, then an override of this outcome is just a speed bump, a pot hole, an ordinary defect, a SNAFU and a tire change.

</comment></comment><comment><USER4> artefact... I like that as a "label" for this. A bit like a glitch in the matrix.</comment>


Mouse Cursor History (and why I made my own) - <AUTHOR> https://www.youtube.com/watch?v=YThelfB2fvg <comment> 076ae80a-3c97-4 Provides a very good overview af the history of our humble cursor. The provided replacements for Windows are also really nice!</comment>


Thank HN: Design for Hackers  - <AUTHOR> http://www.kadavy.net/blog/posts/d4h-the-book/

<comment><USER2> _I plan to send out about an email a month, and have already started drafting some sample content. A lot of this stuff I had thought about releasing on kadavy.net, but it's too valuable to just put out into the ether. I want to make sure only those who are really interested in it learn these secrets. Find out:_

Just sounds like an infomercial to me.

<comment><AUTHOR> Thanks for reading that far - I'm not sure if I understand, are you implying that is a bad thing?

<comment><USER3> It was an interesting read until the heading "So, here we go." Then, it turned into a creepy infomercial about professional blogging.

<comment> St-Clock I agree, it was my first time on the website and I genuinely liked the idea of "design for hackers", but when I read things like see "How 6 of my last 9 blog posts made it to the front page of Hacker News", I got irritated. Was this book and newsletter supposed to be about design? Maybe a refocus is in order here.

</comment></comment></comment></comment><comment><USER4> Just did a bout of gratuitous clicking and selecting text all over the page a few hundred-odd times to confound the profoundly annoying Crazy Egg tracking script.

<comment><AUTHOR> What do you find annoying about the Crazy Egg script?

EDIT: since this person is being upvoted, I removed the script (yay?); but I'm still interested to hear why it bothers people. Thanks.

<comment><USER5> If it's like other trackers, every time you click/select, it loads a resource, causing the status bar to flicker.

Many people read while clicking and selecting text. This means sites that do stupid things when the user selects text (popup definitions, ads, change the status bar, etc.) become very annoying.

</comment></comment></comment><comment><USER6> My thought process were as follows; "Oh great, it's just an ad for a book." to "It's a future book, could be interesting." to, "Hey this is the guy that wrote that article on Monet's use of black!" I guess it's a really good idea to give a good sample of what you have to share. I really love implementing more real art into design, rather than simply following web trends. I'm looking forward to reading more.

<comment><AUTHOR> Whoa, someone just referred to me as "...the guy who [did certain thing]..." Pardon me while I e-mail this comment to my mother.

<comment><USER6> I only get on hacker news once every couple of days and usually read only a couple of articles. I thought it a huge coincidence that I read two articles by the same person.

</comment></comment></comment><comment><USER7> _Hackers are used to teaching themselves whatever is necessary to achieve their vision;_

Can't be more succinct.

</comment><comment><USER8> Congratulations to the book deal! I'm happy for you! Don't burn out that flame of yours too soon, it's a long way from here to the finished book. I'm looking forward to reading it!

My suggestion is that as soon as you've written one chapter you're sort of happy with, put it on HN for for feedback.

<comment><AUTHOR> Thanks, Martin - yeah, I have a ton of work ahead of me, but I'm having a blast so far.

I'll definitely be seeking input and feedback from the HN community every step of the way.

</comment></comment><comment><USER9> Congratulations! The original blog post was pretty awesome, and I look forward to the book.

</comment><comment><USER10> This is _exactly_ what I've been looking for. Will definitely buy.

<comment><AUTHOR> That's great to hear! I'd love to learn about your situation RE learning design. I hope you signed up for the email list, but feel free to say hi: david at kadavy dot net

<comment><USER10> My background is general back-to-front development. However, I've always worked on teams that had dedicated designers so I never had to actually make something look good. I have pretty strong CSS and HTML skills, but it was always for implementing someone else's design, not doing anything on my own.

I've recently been doing some of my own projects and realized that pretty much everything I make looks like ass. It's the one piece missing from my ability to do a complete website by myself.

Plus, for personal philosophical reasons, I'm growing more appreciative of visual aesthetics in every aspect of life, so being able to incorporate that into my chosen profession is important to me.

There are some good resources out there, and I feel that learning even just a few things about design makes a big difference. Learning to recognize different font families, the importance of alignment, etc. have all made a big difference. But I still feel there's something lacking - I still find it difficult to cross the boundary "doesn't suck THAT bad" and "beautiful." Aside from getting a degree in graphics design, I'm still not sure how to get the knowledge and techniques needed.

I suspect part of it is that I just need to practice a lot more, and design lots of sites just to see what happens and develop my style. But some "hacks" to make the process faster would be very welcome.

<comment><AUTHOR> Wow, thanks a ton for that, Luke! Your feeling that this is the final piece to being able to produce a complete website is exactly why I'm exploring this topic. So much friction can be reduced in the development process if a single person is self-sufficient.

I don't know if I'll be able to provide "hacks," but your observation on it requiring a lot of practice is right on. My goal at this point is to change the way you see things, so when you see a good design, you understand what about it is making it great.

</comment></comment></comment></comment><comment> DanI-S Sounds pretty good, I look forward to reading it.

If anyone clicked on the link looking for information, I posted an 'Ask HN:' a while back on the same topic. Loads of people responded, with some great advice. It's here:

<http://news.ycombinator.com/item?id=1839022>

</comment><comment><USER11> Increasing design literacy among hackers is a great thing.

Now who will step up with a "Hacking for Designers"?

<comment><USER12> I'll do that.

<comment><USER13>
      I'll do that

Now we have you on record. Please deliver :)

<comment><USER12> It'll have to be in the new year, but it'll come. Look for posts around Jan announcing the start.</comment></comment></comment></comment>