Why Math Might Be the Secret to School Success - <AUTHOR> http://www.npr.org/blogs/ed/2014/12/09/367814446/why-math-might-be-the-secret-to-school-success <comment><USER2> I was _shocked_ listening this morning that only 58 seconds of every 5 hour preschool day are spent on math.

In my experience, elementary school teachers tend to be soft-skills people who primarily just love working with young children. Many didn't enjoy math, felt they were bad at it, and would prefer to teach children reading and writing. And because elementary schools have one teacher guide the same group of children through all four core subjects instead of specializing in one subject (like middle or high school teachers) the teacher's less-preferenced subjects get less time.

Source: former (public) high school science teacher

<comment><USER3> I am interested to hear if high-school/college style teaching has been tried at the elementary level. And what were the outcomes?

Specifically, have schools tried to partition students into courses based on achievement level, regardless of age? There would be the Math 1 course that might have 1st, 2nd, and 3rd graders in it, and Math 2 might have brighter 1st graders, etc.

<comment><USER4> Well, yes and no. I can only speak from my experience of doing grades 1 through 7 in a Ukrainian school and then 8-12 in Canada. The year I went into school I was placed into the "Sapling" (Rostok) programme, which was a _very_ accelerated "experimental" programme. I remember that in Grade 2 we were learning Venn Diagrams and basic set notation. And so on. By Grade 4 we were allegedly 2-3 years ahead of the "regular" system. Now when I got to Canada in Grade 8 I honestly did not know what to do with myself, the level of math I was exposed simply eclipsed what was being taught (Integer beads, the fuck?) and this has been my general experience of the school system up until Grade 12 where we started doing Calculus (which in "Sapling" was supposed to be done in Gr. 9-10).

The problem, I think, is not that kids can't learn (in fact the amount neuroplasticity in young children is simply off the charts, to the point where 6-7 year olds who can play really good violin are not something special), but is that the educational system simply does want to go there, to increase the levels of math taught in schools.

<comment><USER5> I believe this is also called 'business as usual'... but you actually put it much better.

</comment></comment></comment></comment><comment><USER6> I've spent much of the last twenty years teaching math to middle and high school students who had previously been burned out on math. I teach in an environment where I get to let students progress at their own pace. Everyone gets a clear set of math milestones laid out, and they earn their credit when they reach those milestones. Students see me mostly as someone who helps them reach objective milestones, not as someone who tells them they can't do math again.

One of the most significant issues I see is there's often no way back into math if a student gets off track early on. My students typically got confused in 2nd-5th grade, and then math never made sense again. When given the space to work independently, with support, at their own pace, they get to clear up old confusions and realize how much they're capable of when they're not under pressure to keep up with everyone else.

One of the things I enjoy most is taking students who haven't understood math since 3rd grade, and bringing them to a place where they can start to use algebra to solve problems they care about. From then on, they are set up to make good use of math the rest of their lives.

I have a 3 1/2 year old son now, and it's fascinating to watch his development after having been a teacher for so long. He's in that wonderful stage now where "22" is just as big as "a million", and when he wants to describe a large number of things he just strings random numbers together: "Dad, there's 23 45 8 17 100 stars in the sky tonight!" Just the other night he asked, "What do you get when you add 3 and 3?" It's fascinating to watch that understanding develop, and to just keep answering his questions honestly, with the mindset of giving him a strong foundation for more advanced concepts later on.

<comment><USER7> Do you have any tips as to how to get kids to sit down and work on math stuff again?

<comment><USER6> I teach high school right now. I ask students in each class what their math experiences have been; I give them space to vent, and make it okay to say, "I hate math." In every class I've had, there's also been someone who says, "I love math." We then talk about what has worked for people and what hasn't. I explain much of what I wrote in the comment above; many students have been blaming themselves for years of failure, and have never realized that weren't offered a way back into math. On the other hand, some students have blamed everyone but themselves and they need to start taking responsibility for themselves, and we have that honest conversation.

Everyone needs motivation to learn anything meaningful. Motivation for students can come from a desire to earn credit and graduate, a desire to be able to do a certain job, or a desire to catch up on things they haven't understood for a long time.

I connect each student's math learning plan with their job and career goals. Most of my students are at an age where that can work, if they can see the connection. This isn't just a utilitarian approach; we also talk on a regular basis about the wonders of math, and how there are efficient strategies but there are no math "tricks". I break their work into the smallest possible chunks they can earn credit for, so they get to see academic success as soon as possible.

I'm happy to share more specific thoughts here or through email, if you have a particular situation you're trying to sort out.

<comment><USER8> That's great and major props for helping those who fell behind. I remember taking classes at the maritime college and watching all these people (who were probably way better at ships or engines than I was) struggle mightily with speed-distance-time calculations, batteries in series/parallel or Ohm's law. It was really depressing - how can our education systems fail so many people?

</comment></comment></comment></comment><comment><USER9> As someone who hated math in k-12 and excelled in reading, this is interesting to me. I have gotten more into math as a soon to be college graduate, (Econ/Acct) where I have learned I am not bad at math, and the math I have done for my degree, econometrics, calculus, were all interesting (though not on a high level). I think if I had been taught math as a child better than what I was, I would have moved more toward a CS/CE/data engineering degree instead of business. The math scared me off.

For my kids I look forward to trying to supplement their K-12 education (math especially) with other forms of education that I hope foster an interest in math. K-12 never really gave me a chance to find math interesting.

Does anyone have any great tools/resources to help supplement public math education?

<comment><USER10> Well I just finished reading a book:

Mindstorms: Children, Computers, and Powerful Ideas

...which I found my self saying "yes" to out loud while reading it. It's premise is that people can learn better when there is an aspect they can interact with, and computers can provide simulated environments in which to explore concepts. Some of the examples given are younger kids exploring ideas in differential geometry through the use of turtle graphics. It is hard to get across in a small snippet of text, but I kept thinking that was how I wanted to be taught back in school. You compare how kids are self motivated to learn complex tasks like walking, talking, etc. but lose a lot of motivation when required to memorize dull facts about the interior angles of triangle.

There's not a lot of concrete actionable items here, other than getting that book, and maybe downloading a Logo interpreter to play with.

I've just started to work with teaching my own kids programming, so I don't have a lot of advice at this point, but I hope the book is as inspirational to you, as it was to me.

[https://www.google.com/?gws_rd=ssl#q=mindstorms:+children+co...](https://www.google.com/?gws_rd=ssl#q=mindstorms:+children+computers+powerful+ideas)

<comment><USER11> > You compare how kids are self motivated to learn complex tasks like walking, > talking, etc. but lose a lot of motivation when required to memorize dull > facts about the interior angles of triangle.

Funny you mention this. I remember being taught the sum of the internal angles, the pythagorean theorem and other facts by folding paper triangles.

</comment></comment></comment><comment><USER12> Is this actually a secret? Having recently gone through the 'math gauntlet' that is a formal CS education, it is astounding the number of people frightened to death of mathematics.

</comment><comment><USER13>
        Gayle Conigliaro's preschool students are jumping as they count,
        to get the feeling of the numbers into their bodies — a concept
        called "embodied cognition."

My 4 year-old learned all about circles by spinning round and round. Math makes her just giddy with excitement! She can't calculate circumference yet, but that doesn't matter, because I feel confident that she has embodied the cognition. I'm taking her to the playground tomorrow so she can do line integrals on the monkey bars.

Can we bring back the scowling school-marms now?

<comment><USER14> There are many, many ways to count and to comprehend magnitude. Jumping is a valid one.

</comment></comment><comment><USER15> My father played math games with me when I was little. Made it exciting, not fearful. Grade school math was kind of slow and boring. Didnt get more interesting until algebra.

</comment><comment><USER16> As much as I remember, Montesory schools teach math concepts every day all through out the day.

</comment><comment><USER17> If you are looking for an example of this, check out the PBS show Peg + Cat.</comment>


How to become Batman - <AUTHOR> http://www.quora.com/Given-our-current-technology-and-with-the-proper-training-would-it-be-possible-for-someone-to-become-Batman/answer/Mark-Hughes-1 <comment><USER2> Pfft, no vision!

However, this thesis seems mostly sensible. I think the crucial answer is that the "Skillz" of Batman are attainable, and there is a reasonable proportion of people in the world with potential to attain them, BUT the problem of being Batman is not in the technology.

The problem, as highlighted, is that there is no role for Batman in our current society. Vigilantism is frowned on, and, practically speaking, having a secret alter ego that _lasts_ only happens in the movies.

But the real problem is that Batman exists to solve a problem; Gotham has a massive crime problem, way beyond what we see in any major city in the world. And it is a city where number of crime bosses, criminal geniuses and psychopaths exist, and where they can act fairly freely.

Given a real life city with that setup, yes, Batman would stand a better chance.

<comment><USER3> > But the real problem is that Batman exists to solve a problem; Gotham has a > massive crime problem, way beyond what we see in any major city in the > world. And it is a city where number of crime bosses, criminal geniuses and > psychopaths exist, and where they can act fairly freely.

Gotham was created for batman IMHO and not vice-versa. If someday batman dies, spiderman won't come from New York for load balancing. Why is that almost all the super-heroes have their arch-enemy in their nearby locality. They also share the same trait. For example spiderman villains are mostly mutants and nagraj villains are mostly snake which takes humanoid form.

<comment><USER4> > If someday batman dies, spiderman won't come from New York for load > balancing

Dude, you can't cross the streams! (Marvel & DC)

<comment><USER5> Meh, happens all the time.

<http://www.google.com/images?q=marvel+vs+dc>

</comment></comment></comment></comment><comment><USER6> The original question has a link to a Scientific American that explores the same idea:

[http://www.scientificamerican.com/article.cfm?id=dark- knight...](http://www.scientificamerican.com/article.cfm?id=dark-knight-shift- why-bat)

I like this quote:

      How many of us do you think could become a Batman?

      If you found the percentage of billionaires and multiply
      that by the percentage of people who become Olympic
      decathletes, you could probably get a close estimate.

<comment><USER7> <http://www.qwantz.com/index.php?comic=1870>

Apparently there should have been approximately 2 dinosaur Batmans (Batmen?)

<comment><USER8> The plural form of Batman is "Batmen." "Batmans" is the present tense of the verb "to Batman."

(<http://twitter.com/fakeapstylebook>)

</comment></comment></comment><comment><USER9> Wasn't there a woman on This American Life who tried to become as close to a real life superhero as possible?

EDIT: Found it. She calls herself Zora. (Which is the name of a character in Powers.) [http://www.thisamericanlife.org/radio- archives/episode/178/s...](http://www.thisamericanlife.org/radio- archives/episode/178/superpowers)

<comment><USER10> There are a fairly large number of "real life superheroes," actually (<http://reallifesuperheroes.org>).

None of them have magical superpowers that let them control the tides or have Adamantium skeletons, but hell, it's something. My particular favourite is Life: <http://reallifesuperheroes.org/wiki/index.php?title=Life>

<comment><USER11> That guy has nothing on Laserskater.

[http://reallifesuperheroes.org/wiki/index.php?title=Laserska...](http://reallifesuperheroes.org/wiki/index.php?title=Laserskater)

</comment></comment></comment><comment><USER12> Relevant:

"Until a man is twenty-five, he still thinks, every so often, that under the right circumstances he could be the baddest motherfucker in the world. If I moved to a martial-arts monastery in China and studied real hard for ten years. If my family was wiped out by Colombian drug dealers and I swore myself to revenge. If I got a fatal disease, had one year to live, and devoted it to wiping out street crime. If I just dropped out and devoted my life to being bad."

— Neal Stephenson (Snow Crash)

<comment><USER13> Good lord that quote resonated with me when I first read it! (and, it seems, with young men everywhere)

Ironically, I think I'd already come to the realisation that I couldn't (which is where that quote is heading in the book) much earlier than 25 as a _result_ of martial arts training!

</comment></comment><comment><USER14> I suppose it would be possible to learn faster than by just going the official route. Does Batman need a detective license? I think not.

I wonder if there are cases of people leading batman style lives. Or even maybe Dexter style lives (going about dishing out illegal justice in their spare time).

One thing that comes to mind is from a movie I saw (maybe smoke signals?), where the native american tribe (living in modern times) had a traditional role of some people disguising and teaching other people a lesson.

As for the signalling problem, maybe something could be built with modern technologie (SMS, mobile internet, social networks).

In fact today I had this thought, fueled by paranoia: what if your child was abducted, but could send one last distress call. I suppose police wouldn't be able to block the roads in time to catch the abductor, but what if by a snowballing flash mob effect, all people would take to the street and blocked all roads until police would arrive? It would be a kind of distributed batman effect...

</comment><comment><USER15> Umm there is something else - most of the crooks in Batman seem to be burning some midnight oil studying and practicing - right down to the ordinary mobster level.

So a real Batman in real world, where criminals are not all competent in many fields (except crime OFC - at least when Batman is around) could get by with lots lower skills.

Also a lot of skills overlap... Take this guy for instance (<http://www.youtube.com/watch?v=QnClWxkcS4g>) I guess that he has quite some of necessary skills to be a batman. Come to think of it - MOSSAD operatives probably are quite a representation of actual "batmen" - with tech and all :).

</comment><comment><USER16> I wonder if the money that Batman spends to fight crime could be used more effectively in other ways. Batman is essentially a guy who uses his millions of dollars to fund his private war against criminals of Gotham city. If he used the same money and time to educate kids, invest in rehab programs or create community programs he might be able to get more done than what one man can do in the night. But it probably doesn't have the same kick you get out of beating up criminals.

<comment><USER17> In the comics, Batman does all the crime fighting and Bruce Wayne does all the charity work. So he tackles things from both sides of the coin.

Asking him to give up Batman would be like asking a city to give up their Police Force and just rely on schools to teach kids good morals.

</comment></comment><comment> DanI-S The real question is why you would want to be Batman when Iron Man has _so_ much more fun...

</comment><comment><USER18> This man just shattered all our dreams.

<comment><USER19> Never be afraid to share your dreams with the world, because there's nothing the world loves more than the taste of really sweet dreams.

<http://www.despair.com/bitterness.html>

</comment></comment><comment><USER20> My biggest niggle about Batman is how he'd get to and from the scene, particularly roads near his house. Locals would see the batmobile on the same road repeatedly. Lovers in the bushes would see/be squashed by the car pulling into the tunnel. Word would soon get around.

<comment><USER21> maybe there's a road network after the tunnel. That network is still on his land and lead to multiple exits, villages, highways. Another idea is to have surveillance sensors around the exit (IR, microphones, proximity sensors ) so that he'd know there's someone

But I think the biggest problem is when he's on the road. The batmobile gets noticed and it's easy to get blocked in traffic, or have a crowd around the batmobile when he finds a parking spot.

The green hornet solution is a much more practical. Get a vanilla-looking car, then add high-tech sensors, weapons, and defensive solutions in the car.

</comment></comment><comment><USER22> Very entertaining and funny, but could people please stop saying "Quora is different because of the crowd and it's serious and bla bla bla"?

<comment><USER23> I have to say, my first reaction on reading this was "Quora? You see that thing you're jumping over? I hate to break it to you, but that's the shark."

<comment><USER9> When did HN jump the shark?

<comment><USER24> Well, they let me sign up so it must have happened already.

<comment><USER25> keyboard kill for you

</comment></comment></comment></comment></comment><comment><USER26> Quite simply, it's Alfred's station that makes Batman's efforts appear seamless. Alfred offers Batman wisdom, advice, an ear for consultation, and most importantly, he picks up Batman in the Bentley, when he's hurt, so he doesn't end up in ICU.

Moreover, in this scenario, our real-life Batman fails to become buddy-buddy with the police chief. That's a critical step.

</comment><comment><USER27> One could still become a Kick Ass though.

</comment><comment><USER28> Boy, I'd hate to ask them how to become Harry Potter.

</comment><comment><USER29> Damn it, if I had known when I was 18!

OTOH, I guess since the common opinion is that most bad guys are boring drug dealers, it's fair to say that if there are people inquiring about how to be Batman, there probably are ones interested in becoming one of his arch-enemies (which is probably less difficult, too :)

</comment><comment><USER30> Batman for Wallstreet criminals?

</comment><comment><USER31> Um, you really think you could be anonymous in today's day and age? In the United States? That's a big false premise in Batman, how no-one can seem to figure out who it is.

Law enforcement would hate being made into fools, they'd seize your assets and put you in Gitmo as an example (I wonder how many more presidencies that will be kept open).

</comment><comment><USER32> Why not Bruce Wayne?

</comment><comment><USER33> Woah...talk about a buzzkill</comment>


Battling Entropy - <AUTHOR> https://fs.blog/2018/11/entropy/ <comment><USER2> This article begins with an analogy to the thermodynamic concept of entropy, and then attempts to relate it to other kinds of "entropy" by making the simplification that entropy is equivalent to disorder. That's all fine and well, but then I really thinks it goes too far: you really can't try to "reduce entropy" in your business by looking at a physical process, nor is coughing "the transfer of energy as heat". It's getting dangerously close to the kind of pseudoscientific platitudes that ended up making something like this marketing description of the Pepsi logo, which "uses" general relativity in its description: [https://www.goldennumber.net/wp-content/uploads/pepsi- arnell...](https://www.goldennumber.net/wp-content/uploads/pepsi- arnell-021109.pdf)

<comment><USER3> Interestingly, biological beings seems to defy the second law by working to reduce disorder, or surprises, in the sensory system. This is the meat of Karl Friston's Bayesian hypothesis of the brain.

<comment><USER4> You forgot to include the sun in your analysis.

<comment><USER5> And the rest of the sky. ;-)

</comment></comment></comment></comment><comment><USER6> > Let's imagine that we start a company by sticking 20 people in an office > with an ill-defined but ambitious goal and no further leadership. We tell > them we'll pay them as long as they're there, working. We come back two > months later to find that five of them have quit, five are sleeping with > each other, and the other ten have no idea how to solve the litany of > problems that have arisen. The employees are certainly not much closer to > the goal laid out for them. The whole enterprise just sort of falls apart.

Is that true? I mean, it sounds intuitively appealing (especially if you fancy yourself a boss-type) but has anyone actually done this experiment?

Maybe some of those 20 people are ambitious and take it upon themselves to lead the project, maybe they all form a self-organizing collective and make sensible decisions by consensus, maybe they hold a vote to elect a _de facto_ CEO...

<comment><USER7> There was a german entrepreneur who did something like that. He picked a bunch of young software developers and gave them an office and budget to do what they like with it. It didn't end well, they spent the budget on gaming chairs and spent most of their time playing video games

</comment></comment><comment><USER8> Sonnet against Entropy

      The worm drives helically through the wood
      And does not know the dust left in the bore
      Once made the table integral and good;
      And suddenly the crystal hits the floor.
      Electrons find their paths in subtle ways,
      A massless eddy in a trail of smoke;
      The names of lovers, light of other days
      Perhaps you will not miss them. That's the joke.
      The universe winds down. That's how it's made.
      But memory is everything to lose;
      Although some of the colors have to fade,
      Do not believe you'll get the chance to choose.
      Regret, by definition, comes too late;
      Say what you mean. Bear witness. Iterate.

John M Ford (originally here: [http://nielsenhayden.com/electrolite/archives/003789.html](http://nielsenhayden.com/electrolite/archives/003789.html))

</comment><comment><USER9> People think that entropy increasing is basically atoms going from a state of organization to a state of random distribution.

All you need to do is look at the universe to see how off this definition is.

The universe started as a big bang: a soup of randomly distributed particles.

Then the atoms proceeded to self organize into perfect spheres called planets and stars which in turn organized themselves into flat ordered spiral structures called galaxies.

If entropy is increasing always how does this happen? It happens because your understanding of entropy is off.

<comment><USER10> I've always considered the "increasing disorder" definition of entropy to be a simple analogy that most people can relate to in their everyday lives, not necessarily a formal definition. Indeed I would be interested to know if you can even formally define order vs. disorder since it seems to require a subjective observer. For example the universe doesn't consider a glass sitting on the table to be "more ordered" than one that has shattered on the floor. It's just like, our _opinion_ man.

But even if you use the order vs. disorder analogy, it's arguable that the universe was close to perfectly ordered right after the big bang. After all it was a pretty smooth and uniform distribution of matter/energy at some point, and that seems more ordered to me than what we have now with all these random clumps of star junk everywhere :)

Anyway I like to consider entropy as the amount of usable energy in a system. A whole glass has more energy to release (e.g. by shattering) than a shattered one does. Maybe this _is_ the formal definition of order vs. disorder?

<comment><USER9> "Useable energy" is vague word and thus not a good description.

There is a quantitative definition of entropy but it is based in a way off of "opinion". Given a system and its laws look at all possible final states. Then group the states according to an arbitrary "rule"

For example: the state of white marbles and black marbles in a jar.

What is the number of possible arrangements of all black marbles to be arranged on the left side of the jar and all white marbles to be arranged on the right? This is an arbitrary "rule." It's a big number but that number is much lower than every other possible arrangement.

From these quantities you can derive an entropy value.

However you will note that it depends on that "rule" you define. I could point to the state of marbles in the jar after I shake it and call that my "rule" and it makes that arbitrary state one of low entropy. I could point to any arbitrary state and do this and thus any specific state is one of low entropy. It's a complex definition and it encompasses "opinion" and "choice." The definition of entropy allows for an numerical value to be derived based off of your "opinion."

In Boltzmann's definition, entropy is a measure of the number of possible microscopic states (or microstates) of a system in thermodynamic equilibrium, consistent with its macroscopic thermodynamic properties (or macrostate).

The macrostate is basically what I defined above as "rules" and what you defined as "opinion."

</comment></comment></comment><comment><USER11> >The second law of thermodynamics states that "as one goes forward in time, the net entropy (degree of disorder) of any isolated or closed system will always increase (or at least stay the same)."[1] That is a long way of saying that all things tend towards disorder. This is one of the basic laws of the universe and is something we can observe in our lives. Entropy is simply a measure of disorder. You can think of it as nature's tax[2].

I don't understand this. Please note that I've never had any physics training so I'd love for someone with a more formal physics education to help me out here. Why is this a measure of "disorder"? In my eyes, a perfectly uniformly distributed of zero temperature mass (or maybe absolute zero, not sure) of grey energy is the perfect order?

The fact that stars are forming together and creating heat -- that -- is the disorder in my eyes. We are all disturbances in the energy of the universe. I would call a perfectly uniformly smoothed out heat-death of the universe perfect order (i.e. the opposite of chaos).

Or am I completely wrong here?

<comment><USER12> You're making the (very common) mistake of taking a poetic English-language interpretation of a physical law -- which is necessarily lossy/imprecise, since the actual law is mathematical -- and over-interpreting the words without referring back to the actual law.

You can see the law (in the context of thermal & statistical physics) at [https://en.wikipedia.org/wiki/Entropy_(statistical_thermodyn...](https://en.wikipedia.org/wiki/Entropy_\(statistical_thermodynamics\)). You can of course argue that 'disorder' isn't a good way of translating the maths into English, but shrug, it's the one people seem to have settled on. And of course, that's orthogonal to whether the actual law is true or not.

<comment><USER13> 'Information' is another way to translate. See [https://en.wikipedia.org/wiki/Entropy_(information_theory)](https://en.wikipedia.org/wiki/Entropy_\(information_theory\))

</comment></comment></comment><comment><USER14> " Too little autonomy for employees results in disinterest, while too much leads to poor decisions."

The author appears to confuse autonomy with a lack of feedback mechanisms. Economies are based on a vast number of autonomous agents (independent organizations) who are selected for survival via market feedback (prices) and the long term trend in these has been towards ever greater agent granularity (vertical disintegration).

</comment><comment><USER15> The definition of the second law of thermodynamics at the top is not right. A closed system can have energy put in from the surroundings to decrease entropy. Only isolated systems that cannot exchange energy with the surroundings follow the second law. Only the universe is truly isolated (see the common definition of the second law),

You decrease the entropy (disorder if you like, or not) of things by putting energy in.

<comment><USER16> > A closed system can have energy put in from the surroundings to decrease > entropy.

Then it wouldn't be a closed system anymore.

What you call an isolated system is the same as a closed system. At least, in the common parlance of thermodynamics.

<comment><USER15> Closed means mass cannot go in or out. Heat and work can still be exchanged.

See [https://en.m.wikipedia.org/wiki/Isolated_system](https://en.m.wikipedia.org/wiki/Isolated_system)

</comment></comment></comment><comment><USER17> Entropy has been increasing since the big bang, when it was at minimum value. While the total energy didn't change since then, there has been a vast increase in the potential locations of that energy and a vast increase in the number of different interactions possible within that energy. This increases entropy because the possibility space has increased.

Boltzman entropy is defined as the number of potential microscopic possibilities that could equivalently produce the measurable macrostate which is observed. (No wonder people just call entropy disorder -- it's complicated). So, the entropy of a glass of water consists of all the possible combinations of position and momentum that all the water molecules could be in. When the water is frozen, the possibility space is smaller than when the water is hot.

[https://en.m.wikipedia.org/wiki/Entropy](https://en.m.wikipedia.org/wiki/Entropy)

How does this relate to order? I think of this in terms of the likelihood of a random transformation of the system to affect it's functional interaction with other systems. So, let's say you randomly transform the position or momentum of a part of a house, it is likely change functional interactions of people in that house. However, when the same material in the house is just sitting in a pile of rubble, it has more entropy because a random transformation of the rubble won't really affect the function of the rubble -- it is still, for all intents and purposes, the same pile of rubble (even though it would take just as many bits of information to describe with precision).

I'm not a physicist, but a humanist who thinks it is important to understand physics. So open to correction here.

<comment><USER18> Thermodynamical entropy is not a physical property of a system. It's a property of our description of the system as a macroscopic state.

Quantum (von Neumann) entropy is a related but different concept. It's worth noting that it is constant for a closed system.

Cosmological entropy can be defined in different ways. In summary, entropy means many things and not all "entropies" behave in the same way.

<comment><USER13> Interesting enough, even though entropy is in some sense a property of a description of a system, there are things like 'entropic forces' and they play a big role in physics.

[https://en.wikipedia.org/wiki/Entropic_force](https://en.wikipedia.org/wiki/Entropic_force)

<comment><USER18> Entropic forces are not more real than centrifugal forces or the Coriolis force. They appear when we use a thermodynamic description of a system.

That wikipedia page doesn't make much sense, but note that the "mathematical formulation" is about macrostates and canonical ensembles.

See also [https://johncarlosbaez.wordpress.com/2012/02/01/entropic- for...](https://johncarlosbaez.wordpress.com/2012/02/01/entropic-forces/)

<comment><USER13> Yes, no more and no less.

</comment></comment></comment></comment></comment><comment><USER19> This was good read</comment>


I saw this Ad by a legal services company on Facebook today - <AUTHOR> http://i.imgur.com/VInfj.jpg

<comment><USER2> I wouldn't hire a company to protect my brand that did not know how to spell (loose - > lose)

</comment><comment><AUTHOR> If only Ads can be Oxymorons</comment>


Mastering Programming: An Outline - <AUTHOR> https://www.prod.facebook.com/notes/kent-beck/mastering-programming/1184427814923414 <comment><USER3> Sadly just an outline but I didn't mind that. Good read.

I'd add a few things I've noticed over the years. Great developers like to pair program on tricky stuff, because they always learn something. They will try 2 different implementations if they're not sure which is best, and then the right one will then be obvious. They back their arguments with real world proofs. They try most fringe/new technology, even if it's not right for the current project. They hold large amount of domain knowledge in their heads. They admit when something is twisting their brains, draw it on paper, talk about it and then bang it out. They fantasize about what-ifs, in a perfect world, scenarios. And they love to share knowledge.

<comment><USER4> > They try most fringe/new technology

I have actually found the opposite. The best programmers I have known are often the most reluctant to try new technologies. At least until the technology appears to have reached some sort of critical mass and it has been shown to be virtually guaranteed to increase their already very high levels of productivity. Partly this is just an experience thing. After you see enough shiny new things wrapped up in spin and hype the task of peeling that stuff away to get an honest assessment becomes unappealing.

<comment><USER5> Exactly. I have not seen a _new_ thing in many years. All the so called "new" things are simply rebranded decades old ideas.

<comment><USER6> Isn't everything?

<comment><USER7> Even your statement isn't new! 2200 years ago King Solomon wrote, "There is nothing new under the sun." We just keep finding different ways to rehash the same core concepts.

</comment></comment></comment></comment></comment><comment><USER8> Something that is helping me a lot recently is trying to know all there is to be known about the tools/concept that I am using and the problem that I am solving. Too often have I used tools I half understood to solve problem that I didn't define clearly enough.

<comment><USER9> Yeah, this is a bad pattern I started noticing even way back when I mucked about with Wordpress theming. Hell, I could go further back and notice this pattern in assembling LEGO. And sadly I still catch myself doing it even now whenever I'm caught up in this "this shit doesn't work, let me try _that_ real quick" loop, where 'that' is only one of many variables I don't really understand.

What I've noticed works best for me is to nip it at the bud rather than bail out of that loop. Because once I'm stuck in the loop, I find it hard to sit back and think about things properly.

The worst cases for me is when I try more than one 'new thing' at once, which usually happens in new projects. Most recently I set up a new project and decided to try out typescript, a new back-end tool, and another build process all at once. I couldn't get it working, and only once I dived into it I discovered there was one 'little thing' (javascript's current module kerfuffle) that caused most of the issues.

What I hates most about these episodes is that at the end, all I learned was a tiny bit more about disparate systems that I still don't master. Huge waste of time.

<comment><USER10> > notice this pattern in assembling LEGO

What do you mean?

<comment><USER9> Well, usually the first time I'd have some new package of Lego, I'd want to construct the exact thing I bought from the instruction booklet.

Sometimes I'd be working on different parts at the same time and use a piece that was similar to another. I recall a few times looking everywhere for the missing piece or disassembling a part to find it only to find out that another little part I assembled had the missing piece.

</comment></comment></comment></comment><comment><USER11> > Call your shot. Before you run code, predict out loud exactly what will > happen.

That's probably my favorite bit of advice. It really helps with understanding how much your assumptions diverge from reality.

<comment><USER12> I do this with life in general. You soon realise how bad you are at estimating, but it helps you improve.

<comment><USER13> Sounds like a good idea and seems to be worth a shot. Actually, I am thinking about why I put so little effort into this, currently. I will take your suggestion and see how it goes :)

</comment></comment></comment><comment><USER14> > When faced with a hard change, first make it easy (warning, this may be > hard), then make the easy change.

This is my favorite bit. Katrina Owen mentions this in her talk on refactoring. "Make the change easy; then make the easy change."

[https://www.youtube.com/watch?v=59YClXmkCVM](https://www.youtube.com/watch?v=59YClXmkCVM)

<comment><USER15> This is excellent advice, and I've seen it replicated as far back as Fowler's book on refactoring. Does the trail go further back than that?

<comment><USER16> I may be mistaken, but I actually remember Kent Beck saying it in his original TDD book. That was the thing that made me understand how refactoring can take the place of big design up front. The best part is that you only work on things that you need as opposed to wandering around changing every piece of code that you don't like ;-)

</comment></comment></comment><comment><USER17> I'd like to see this fleshed out more with examples, because I don't really know what some of these mean.

<comment><USER18> Well luckily there is a book for that ;-)

1996\. Smalltalk Best Practice Patterns. Prentice Hall. (ISBN 978-0134769042)

1996\. Kent Beck's Guide to Better Smalltalk : A Sorted Collection. Cambridge University Press. (ISBN 978-0521644372)

1999\. Extreme Programming Explained: Embrace Change. Addison-Wesley. Winner of the Jolt Productivity Award. (ISBN 978-0321278654)

2000\. Planning Extreme Programming. With Martin Fowler. Addison-Wesley. (ISBN 978-0201710915)

2002\. Test-Driven Development: By Example. Addison-Wesley. Winner of the Jolt Productivity Award. (ISBN 978-0321146533)

2003\. Contributing to Eclipse: Principles, Patterns, and Plugins. With Erich Gamma. Addison-Wesley. (ISBN 978-0321205759)

2004\. JUnit Pocket Guide. O'Reilly. (ISBN 978-0596007430)

2004\. Extreme Programming Explained: Embrace Change, 2nd Edition. With Cynthia Andres. Addison-Wesley. Completely rewritten. (ISBN 978-0201616415)

2008\. Implementation Patterns. Addison-Wesley. (ISBN 978-0321413093)

>> Selected papers

1987\. "Using Pattern Languages for Object-Oriented Programs". With Ward Cunningham. OOPSLA'87.

1989\. "A Laboratory For Teaching Object-Oriented Thinking". With Ward Cunningham. OOPSLA'89.

1989\. "Simple Smalltalk Testing: With Patterns". SUnit framework, origin of xUnit frameworks.

<comment><USER17> I didn't mean the entire Kent Beck bibliography, this is obviously a different thing than his books or he would've referred to his books. I just would like to see this particular outline expanded slightly is all.

</comment></comment></comment><comment><AUTHOR> I updated the description of 80/15/5, a career risk management strategy.

<comment><USER19> Several of these have been suggested to me by mentors, many others are new. This is a fantastic list. Thank you for your thoughts and advice.

</comment></comment><comment><USER20> My top piece of advice: Programs behave predictably, when something impossible is happening it's because one of your assumptions is wrong. When that happens you'll find the bug the moment you start testing your full set of assumptions.

For some reason, even though this is invariably true, my friends at school didn't appreciate "I can't understand why I'm seeing this weird behaviour", "One of your assumptions is wrong!" xD

<comment><USER5> There are bugs in compilers. Hardware faults. 3rd party library faults and inaccurate documentation.

Good luck asserting these assumptions and factoring them in your designs.

<comment><USER20> I'm happy to risk verifying those last ;-)

EDIT:

>inaccurate documentation. With the exception of this one, I usually assume that you need to verify the behaviour of a library/feature you've not used before.

</comment></comment></comment><comment><USER21> These are attributes that everyone can, on honest personal judgement, can mistake to possessing themselves to varying degrees. But it might be a useful list to read through when stuck at a problem that is simply not giving way.

Unless we have the chance to learn from and be coached directly by a master, what would be helpful is narratives on how they think and solve problems.

The best I have so far come across in a book is "Coders At Work". [https://github.com/aosabook/500lines](https://github.com/aosabook/500lines) promises to be another. Rich Hickey did great service by talking pragmatically about the meta aspects of programming through Hammock Driven Development and Simple is not Easy. Dijkstra's and Alan Perlis' writing that has been gaining a resurgence in popularity is also of a similar ilk. [http://damienkatz.net/2005/01/formula-engine- rewrite.html](http://damienkatz.net/2005/01/formula-engine-rewrite.html) also is an intriguing story.

</comment><comment><USER22> The article makes a number of good points. The first three points in the "Learning" section resonated very well with me.

Then there's stuff I just don't understand. For example:

> Multiple scales. Move between scales freely. Maybe this is a design problem, > not a testing problem. Maybe it is a people problem, not a technology > problem [cheating, this is always true].

What does he mean by scales?

<comment><USER23> He might be suggesting that you can consciously consider the problem different at levels of detail. You can step back and look at the problem in its wider context ("the big picture") and you can also zoom in and focus on aspects of the problem in more detail.

<comment><USER22> Thank you. I was thinking of scale as a measure of order of magnitude and then it didn't make sense.

</comment></comment></comment><comment><USER24> There is wisdom behind these bullet points. This wisdom could be better communicated through a series of fleshed-out articles with real life examples.

Otherwise, these points are difficult to contextualize, retain, and apply.

<comment><USER25> Good point. Go for it.

</comment></comment><comment><USER26> After reading that, I don't feel a bit smarter then before. That's usually how it goes when you make a bold, universal statement about something and put it into 10 lines of text.

I aknowledge what Kent Beck has done and what facebook is doing but this doesn't deserve to be on HN front page.

<comment><USER27> True, but then long protracted explanations don't necessarily do a better job, they are prone to missing the forest for the trees. The beauty of the short bullet point is that it makes the practitioner think, sort of like a zen koan. It will be utterly useless to someone who hasn't already put in the practice to be on the brink of enlightenment already, but then again, what other way is there to truly learn?

</comment></comment><comment><USER28> (゚ヮ゚) Anyone else knows other paths/checklist from beginner programmer to expert/senior programmer in different domains (front-end,back-end, dev- ops/sysadmin, android, ios, system programming, gaming, 3d, image, video) ?

</comment><comment><USER29> I also think it important to understand the nature of the environment your problem is in, because it so much flavors the approach and the solution.

If in computer and data science, emphasis is on algorithms, data structures and ADTs. But if in business, commerce and industry it's the representation of complex domain concepts, real and abstract, and their interactions that are key.

In some ways there is a fundamental divide between the two. While the ops advice is valuable, for me an understanding of where and how to apply techniques across that divide is one of the biggest impediments to "mastering programming".

</comment><comment><USER30> I just noticed, this note is being served by www.prod.facebook.com? Note : ".prod.facebook"

<comment><USER20> Think dev is called .poke.facebook?

<comment><USER30> Nop, doesn't works. DNS won't resolve.

</comment></comment></comment><comment><USER31> "Good design is about taking things apart." \--Rich Hickey

I think that statement captures several of these. He says it in the context of methodology and "architectural agility" in a great talk called "Simplicity Matters." [0]

[0] [https://www.youtube.com/watch?v=rI8tNMsozo0&t=9m49s](https://www.youtube.com/watch?v=rI8tNMsozo0&t=9m49s)

</comment><comment><USER32> "Move fast and break stuff abstract stuff and build quick Move Fast With Stable Infra"

How about just put in the work and learn the hard way?

</comment><comment><USER33> >Rhythm. Waiting until the right moment preserves energy and avoids clutter. Act with intensity when the time comes to act.

What does this mean ?

<comment><USER34> Don't swing 'til the ball gets there. If it can wait, it probably should wait.

</comment></comment><comment><USER35> This is a great summary. One could change the title to "Mastering Problem Solving" and it would be just as true.

</comment><comment><USER36> Great outline. Given the source I would like to see it taken down a level of detail in the future.

</comment><comment><USER37> It'd be interesting to compare this to "Ask HN: Habits of the master programmer?"

<comment><USER38> Why don't you create a new thread then?

<comment><USER37> Lazy.

</comment></comment></comment><comment><USER39> Old German proverb: In der Beschränkung zeigt sich erst der Meister.

<comment><USER40> A bit of searching found this translation

> The master shows himself first in confinement

Thanks. In the process I found this beautiful poem. [http://johnirons.blogspot.com/2011/09/work-in-progress- trans...](http://johnirons.blogspot.com/2011/09/work-in-progress-translation- of-goethes.html)

<comment><USER41> Not a German, and not a native English speaker, but I would propose the following (depersonalized, inaccurate, paraphrased, bastard...) translation:

        Mastery reveals itself by the limitations of its scope.

</comment></comment></comment><comment><USER42> Why prod.facebook.com?

</comment><comment><USER43> This article should be called 'Mastering large-scale team programming'. In reality there is no single correct approach to programming. All programmers/engineers/developers have different specializations.

Some developers are really good at getting an MVP out the door quickly but their code may not quite work at scale. Others are good at working in large teams on large projects, others work better alone or in small teams. These different types will produce different types of code - the utility value of various programming habbits changes based on team size, project size and urgency requirements.

There could be some 'Master MVP programmers' and 'Master team-player programmers', 'Master large-project programmers'... You can rarely put them all under a single label - As developers we tend to get stuck with particular styles depending on which kinds of companies we have worked for.

It is not quite correct to assume that because a company is financially successful and handles many millions of users, that its methodologies are the only correct way to do things.

Programming is an adaptive skill and should change based on economic/scale requirements.

<comment><USER44> I wouldn't say that this article is describing a correct way to do things. It's more of a set of guidelines to follow, and I'm glad someone wrote them down.

I've been doing these things, but I generally have a hard time concisely describing it. Of course, these aren't hard and fast rules. More of a guide to thinking about problems to help programmers be more efficient and accurate... More precise...

I don't really know how to describe it, but one day, you find yourself doing these things more... Stuff gets easier... Things just start to click.

I'd like to add one more, though maybe it's really just another way of putting one of the other statements.

Stop worrying about all the unknowns in the project. Work on what's known, usually the unknowns will become more clear as you progress.

<comment><USER45> > Stop worrying about all the unknowns in the project. Work on what's known, > usually the unknowns will become more clear as you progress.

Good advice which applies not only to software development. I've found that focusing on what's currently known and on what I can change removes anxiety, allows me to move forward and then usually the unknowns resolve themselves along the way.

<comment><USER46> It works very well, until it doesn't. Then you have a pretty interface, an elegant test suite, and a big black box full of entropy and ignorance labeled "then a miracle occurs".

<comment><USER44> Even when that does happen... and I'd argue that it often does not, if you've done the work to make your interface pretty, and write a precise, accurate test suite, you've usually done the work to make the actual functions neat and orderly...

Even when you end up with a black box full of entropy, it's segregated from the rest of the system. You can feel free to change the rest of the system around it and know that the black box will keep doing it's job, as long as you keep using the well-written API within spec.

But, that's not all you get... because you took the time to write the tests, you can refactor this entropy box to your heart's content... until it starts looking more approachable. You've got your tests around the API, right? Then you don't even really need to change them to do the refactor work. The only reason to change the tests would be if you want the function to do something else (or you missed something, of course).

Take small steps... refactor out a couple lines at a time... run the tests with each iteration. Based on previous experience, you're going to end up with a fairly clear and concise implementation... not to mention performant.

<comment><USER46> Absolutely! Get something working and then keep it working while making small steps.

On the other hand, the example that comes to mind is Ron Jeffries' TDD sudoku solver.

I've seen several systems where the magic black box is doing things hilariously wrong---as long as it works on the test cases and the production results are sufficiently difficult to verify, it'll be accepted as gospel.

</comment></comment></comment></comment></comment></comment><comment><USER47> www.prod.facebook.com

That's new to me.

</comment><comment><USER48> While the author is known (technical coach at Facebook, creator of XP software methodology), I sort of disagree.

You can follow this guide and still be a low value programmer. This guide won't take you to mastery level.

And, there is also a sense of irresponsibility around one item: "easy changes". Easy changes as in, duct tape programming? That's pretty much turning your project into a Jenga tower... you add your "easy change", that incurs technical debt, fix a problem... but lower productivity for following changes. Also sets a bad example for other people to follow.

<comment><USER49> Did you only read the bold text? This is very different from "duct tape programming":

> When faced with a hard change, first make it easy (warning, this may be > hard), then make the easy change

<comment><USER48> Given the fact that duct tape programming is what the majority of people do nowadays, I would be more explicit about what an "easy change" means.

</comment></comment></comment><comment><USER5> Despite hating anything XP, I can strongly relate to this one:

> When faced with a hard change, first make it easy (warning, this may be > hard), then make the easy change.

It aligns well with my natural process: for any problem, spend most time designing and implementing a DSL for it, and then solve it trivially in this DSL.

</comment><comment><USER18> What? Seriously, what?

What argument are you making here? Boxing / Ali was an analogy to demonstrate the widespread respect of the engineering community that KB has earned.

/awkward

To be clear; my post was not about you being boxer.

/awkwardoff

<comment><USER43> You can't blindly accept everything an article says just because it is written by a respected person. It means nothing at all.

Karl Marx was also highly respected until he was proven wrong...

<comment><USER18> I am not blindly following it. I think it is sound practical advice given by a titan of engineering.

I have yet to read anything of yours which says why I _shouldn 't_ listen to Kent Beck.

For every well respected opinion or technology there is always a group of naysayers. A cadre of individuals who offer nothing of insight in return.

In 1906 John Philip Sousa claimed the phonograph would ruin music. Don't be that guy.

Don't be the guy that says GUI's will never take off, that touchscreen phones will not sell, that the Godfather was a bad movie etc.

You are being contrarian for the sake of it. Kent Beck has a massive canon of work which advances the predictability and success rate of software development. You can challenge bits of it, improve it and contribute.

You are being _that guy_ that makes sweeping generalisations which advance nothing.

What, specifically, do you think needs improved in the OP's article?

<comment><USER50> By a titan of software development processes, if there even is such a thing.

Titans of engineering are people like Torvalds, Carmack, Engelbart, Wozniak, Codd, Lamport, Wall and many many others.

Including process people in that list would be mistaken.

<comment><USER18> That's a fair challenge and I can accept I might be over-effusive in my praise.

</comment></comment></comment></comment></comment><comment><USER18> EDIT: Just reviewed your Twitter. It's 2000 tweets of snark and criticism of everything you come across - GoT, other coders, Agile, politics. I doubt we will get anywhere constructive on this thread but my original post remains below.

Original post >>

"Doesn't give him the chops or credibility to tell others how to program or solve problems."

...that cannot be serious. Am actually smiling at that. Also laughing at the idea that modern coders think they have nothing to learn from Grady Booch.

Plinkplonk you are absolutely someone I would never want on my team or contributing to a product I was involved in. Aggressive, combative and dismissive of the precedents that laid the foundations for modern software engineering. You need to mature (my opinion). Your post has not painted you in a flattering light.

But feel free to prove me wrong - in your eyes what DOES give someone the chops to support others with engineering advice? What do they need to have accomplished?

<comment><USER51> If someone has built significant cutting edge software and/or has proven himself to be a 1 percent engineer, I'll gladly listen to her _on matters of engineering_. That doesn't make her an expert on say designing space craft.

The point is Booch hasn't written any cutting edge software. He just sold methodology (and books and consulting). Which makes him an expert in selling books and consulting.

I don't want agile gurus/methodology vendors telling me how to do _programming_. I'll gladly listen to their advice on how to build a career around a methodology. Just a personal preference.

I mean if I wanted to know how to write a 3d game engine, I'll listen to John Carmack or Tim Sweeney, not a methodology consultant. If I wanted advice on investing, I'd listen to someone who has proven chops as an investor - <USER2> Warren Buffet.

again, just my _personal_ preference.

I'll ignore the personal attacks and your comments on my twitter account etc, which has nothing to do with my comments here and is borderline stalker behavior.

Whatever floats your boat. All good. This is the internet

<comment><USER18> Not borderline stalker; was just interested in your experience. Was hoping you would blow me away with cutting edge engineering you speak about. _shrug_

Agile vendors don't tell you how to do your job. They tell you how your job fits within a whole and that whole can be delivered quickly if you play nice with others.

Not surprised you struggle with the concept given your tone. Clearly not a growth mindset and fixated only on your technology.

Nice summary of Booch by the way, neatly side stepping his programming experience and Master's in electrical engineering or his work supporting design patterns. _eyeroll_

The hate is strong in you.

I would also add, with a little glee, Agile vendors are not going anywhere and you will be listening to them for a long time to come; you know why? Your boss listens to them. Don't be bitter at consultants, the game chose them.

<comment><USER51> " They tell you how your job fits within a whole and that whole can be delivered quickly if you play nice with others."

These guys have no special expertise in this either. They haven't (mostly) worked on high performance programming teams or led successful companies or launched killer products. But if you give them a chance they'll try to sell you 'methodologies' on all these and more.

They make their living selling ill thought out ideas to clueless middle managers. What makes them experts in "how your work fits into a whole?"

Lol getting a masters in electrical engineering and having written forgotten books on design patterns makes you an expert in how to 'master programming' and work in high performance teams? News to me!

Ignoring your personal attacks as usual. Heh.

<comment><USER18> You understand Booch did not write the master programming list referenced by the OP. (No doubt you will edit to remove that erroneous reference but _shrug_ )

Saying Kent Beck, Ken Schwaber, Jeff Sutherland etc has not led successful companies or worked in high performance programming teams he he he. That's class.

I hope this post is immortalised :-D

So if Agile is ill-thought out, what is not ill-thought out? By all means, you have the stage...</comment></comment></comment></comment></comment>


Roguelike people - <AUTHOR> http://blogs.msdn.com/b/ericlippert/archive/2011/12/09/roguelike-people.aspx

<comment><USER2> did i just miss the roguelike part?</comment>


Show HN: gifyourself.in - A site for putting your face on GIFs - <AUTHOR> http://gifyourself.in

<comment><AUTHOR> Some technical points of interest, perhaps.

The gif explosion / creation is done server-side using python Wand, Pillow and the excellent images2gif script. Exploding the gif into frames was a giant pain in the ass until I checked out StackOverflow, and the source for Wand, and found the coalesce function a bit hidden. (There are _many_ ways to recreate a gif from it's exploded frames - coalesce handles all the permutations as far as I can tell.)

For the creation tool specifically I tried out several of the Javascript only gif creation libraries and wasn't crazy about the colors they produced, and was concerned about browser support, which in the end ended up being gated by lack of support for either the Blob object, or webcam/getUserMedia on all but Chrome and Firefox.

I haven't given up on using the JS libraries entirely, but I wanted to get this out there first and see what people thought. The requests to create a gif a put on a celery queue and handled by worker nodes to keep the web app from hanging on creation requests.

The live preview in the creation tool fakes a gif by drawing each frame to a canvas, compositing the cropped/erased image to it, and just using a JS timer set to the gif's frame delay to flip-book through them.

All the gifs have been masked over with details of where, on each frame, the face should be placed, how big it should be, and how much it should be rotated.

That's a part of the site that you don't see which makes that not-so-magic happen - the masking tool. This is a tool that uses the same cropping interface as the creation tool to generate the set of coords/size/rotation for the face on each frame. There's some usability stuff there to help make masking a (relatively) quick process too. The masking tool uses the same live preview technique to see how the mask is coming along. Right now only myself and some of the other people I work with have access to the masker, but we're considering how to give more people access. After masking a couple hundred gifs, we've realized there is a craft to it, and that takes a little learning. In the meantime we're taking suggestions for new gifs to mask on twitter @gifyourselfin.

We'll also support multiple masks soon, so you could have a mask for anyone in the scene if there is more than one person to put your face over.

</comment><comment><USER2> ImageMagick has some good tools for manipulating GIFs. We have an iPhone app called Blippy which uses ImageMagick on the server side

<comment><AUTHOR> Wand ([http://docs.wand-py.org/en/0.3.5/](http://docs.wand-py.org/en/0.3.5/)) is a set of python bindings for ImageMagick that was super easy to get set up.

In my experience with this project, it exploded the GIFs lightning fast, but when it came to creating GIFs, it was about 3x slower than the images2gif.py script that I ended up using. (Although those numbers were on a Mac development machine and this runs on Ubuntu in EC2 - I have a to-do to try out Wand/ImageMagick there and see if the performance issue carries over)

</comment></comment><comment><USER3> w00t</comment>


Is the Terrorism Threat Imaginary? - <AUTHOR> http://www.psychologytoday.com/print/50730

<comment><USER2> It's mind boggling that some people still refer to 9-11 as a terrorist attack. Even the rocks know it by now, 9-11 was conceived, planned and executed by US administration as an excuse to steal Iraqy oil. It's happening all over again with Iran, only this time the excuse is that Iran has nucs and we need to save the world from those evil people. How ironic. People have morals these days you see, we can't just go invade other nations when we run out of money, we need an excuse first! Terrorist retaliation, nuc disarming, or something else catchy like that. Because that's what we are, other nations raise taxes to close their deficit, we just invade the weaker instead. As for all the anti terrorism measures that have been introduced since 9-11, it's all a huge bill for the tax payers and a great inconvenience, which according to many security specialists, are completely redundant. Now with the body scanners and the invasive body search we don't even respect human rights or the US Constitution. The lobby of the manufacturing corporations who promote these and the interests of the corrupt officials who are getting their cut is stronger than legislation. Well, let that go ahead and we are opening the door to less privacy rights; more changes will soon follow. Let that go ahead, and we might as well stop calling ourselves a free country.</comment>


How an internal cloud migration is boosting Microsoft Azure - <AUTHOR> https://www.microsoft.com/itshowcase/blog/how-an-internal-cloud-migration-is-boosting-microsoft-azure/ <comment><USER2> This "eat your own dog food" myth at Microsoft never dies, does it?</comment>


Stuck at Fucking Home. I got bored and started compiling lists - <AUTHOR> https://stuckatfuckinghome.com/ <comment><USER2> Nice cooking list!

One suggestion. You should remove the COVID resources.

It's probably a good list but people need a break. It's the only thing on the news at the moment and I'm starting to see it really wear people down.

What I'm getting at is, when I was in the Army in Iraq I heard a lot less news about being in a War and being in Iraq even though i was there, in that war. Everyone knew what the score was and didn't spend a ton of time obsessing on the small stuff that's out of control.

Your call. Nice site otherwise.

<comment><AUTHOR> Other than that one page I don't plan on adding any more. So much in your face I agree about. But it feels almost irresponsible to not link some information at least acknowledging why we're in the situation?

<comment><USER3> j Kenji has been doing a great late night cooking series while he has been stuck at home.

[https://www.youtube.com/user/kenjialt](https://www.youtube.com/user/kenjialt)

</comment></comment></comment><comment><USER4> I'm also stuck at home and busy working on a couple of new PD ebooks for Standard Ebooks (Compton Mackenzie's _Sinister Street_ , and a collection of Vladimir Korolenko short stories). Would be good if you could add it to the free books resource: [https://standardebooks.org/](https://standardebooks.org/)

<comment><AUTHOR> Thanks, added!

</comment></comment><comment><USER5> This is a good idea, but as soon as I saw the domain name, it prevents me from sending it to family and friends.

<comment><USER6> why?

<comment><USER7> In US culture, using "swear words" is still taboo for many people. (I'm not saying it's right or wrong).

<comment><USER8> What do you mean in US culture? Avoiding vulgar language isn't a phenomenon unique to US. If I was in France I wouldn't exactly be saying <putain de merde> around my family, if I was in India I wouldn't be saying <bhain chod, nai kaam karta>, etc.

<comment><USER7> Ok, well, I'm not from France or India so I was only commenting about what I know.

</comment></comment></comment></comment></comment><comment><USER9> Hey, I'd be willing to share my jumbo podcast list with you, if that is a resource you'd like on the site. I tend to not delete any podcast that piqued my interest initially. If it turns out not to be to my taste ultimately, I toss it into an "uninteresting" playlist. This way, I'm not reevaluating podcasts at some point in the future that I've already pushed aside. Right now, I'm at 400+ podcasts, with about 30% having graduated to a "follow this indefinitely" status.

</comment><comment><USER10> We've been looking for a game online like cards against humanity. Thanks for finding one and sharing this!

<comment><USER11> I actually spent a bit last week looking for online CAH and was a bit overwhelmed - I somehow never knew that Cards Against Humanity was released under a Creative Commons license. Makes me want to buy all of the expansions even more, somehow.

EDIT: Just discovered that the CAH site linked by OP doesn't work well on mobile, but found one that does: [https://www.cardsagainsthumanity.online/](https://www.cardsagainsthumanity.online/)

<comment><USER10> Oh! I hadn't seen the CC license. That's great.

I just saw the link on your edit! Going to give these two a try later today. Thanks

</comment></comment></comment><comment><USER12> Where is the section exclusively dedicated to sourdough? Just kidding... nice resource, thanks for sharing it.

</comment><comment><USER13> They should mention the AppleTv service. They've made some of their content free. I started watching "For All Mankind" this weekend, and it is excellent.

The service has horrible play delay and time to quality on my LG OLED, but once it starts streaming and ramps up, it looks great.

</comment><comment><USER14> Nice lists. I made a game for playing Boggle with family that you're welcome to add to the list of games browser games to play with friends:

[https://wordgame.paulbutler.org/](https://wordgame.paulbutler.org/)

<comment><AUTHOR> Nice simple game, but it's not multiplayer (online) as far as I can tell. I was more looking for games to play with friends while safety isolated from one another :)

<comment><USER14> It is designed to be used via screen-sharing on VC call (the instructions cover how). I have successfully played it with up to 6 people over Zoom :)

</comment></comment></comment><comment><USER15> I'd add [https://pandemicvolunteers.org](https://pandemicvolunteers.org) to coronavirus resources. It could provide the best relief.

<comment><AUTHOR> Interesting site, added a new header for volunteer and put a link.

<comment><USER15> And then decided to take it off I guess?

</comment></comment></comment><comment><USER16> I'd add [https://skribbl.io/](https://skribbl.io/) to the games list, it's basically pictionary.

<comment><AUTHOR> Very nice, added!

</comment></comment><comment><USER17> Deserves a header description and/or About page. Without this HN post it's hard to tell what the relation is between the name and the content

</comment><comment><USER18> Thanks for this! The "Chill EDM" playlist on Spotify page links to the same playlist as "Synthwave Sounds".

</comment><comment><USER19> Thanks for this. If you wanted to add another section, podcasts might be a nice fit.

</comment><comment><USER20> I'd like to find online chess with video chat is there such a thing?

<comment><USER21> Hey there. Chess is not ready yet, but we're working on it: [https://www.cyberspaces.app/](https://www.cyberspaces.app/)

</comment></comment><comment><USER22> I would share it with others if the URL was more friendly.

</comment><comment><USER23> Like that Go (board game) was in there.

</comment><comment><USER24> great but no workout list :(

</comment><comment><USER25> I think this site should be text only.

<comment><USER10> On your browser, disable JS, images and stylesheets.

</comment></comment><comment> st-isidore Why the foul language? Completely unnecessary.

<comment><USER26> The bog-standard Wordpress template is really at odds with the domain name. You'd expect a site with a name like this to have a distinct, punchy visual aesthetic, not some generic template.

<comment><AUTHOR> I wish I had any design ability. But the template was free and it looks easy on the eyes to just deliver content.

</comment></comment></comment><comment><USER27> I was thinking of compiling a list of made in non-China items.

<comment><USER28> I'd be interested in such a list - I suspect it may be small, independent companies. Which is probably a good thing to support anyway. Also may help lower carbon footprint a little?

<comment><USER27> My comment is being downvoted but the reason is not some inherent anti-China motives. I have a hard time finding _anything_ on Amazon that's not made in China. That's a horrible state of affairs and we need to diversify manufacturing.

May be there should be carbon footprint score against each item. The sad part is that consumers DO NOT CARE. They are like these mindless brains that see a slightly lower price and they hop on it. Vast majority of the people of the planet do not care whether its made in China or not. They will save $2 for selling their souls.</comment></comment></comment>


How we built a back end system for Uber-like maps with animated cars - <AUTHOR> https://blog.maddevs.io/how-we-built-a-backend-system-for-uber-like-map-with-animated-cars-on-it-using-go-29d5dcd517a <comment><USER2> Nice. You have to choose between fast and realistic. If you run one fix, 15 seconds, behind real time, and compute a route between the last two fixes, the paths will look good. But, as the author points out, when you order a car, nothing will move for the first 15 seconds. The author doesn't say how they dealt with that.

This is an old problem in multiplayer games. The usual solution is that the sending client predicts the position linearly from the last two fixes, and when the actual position differs from the prediction by some constant amount, it sends an update. The receiving end uses the same prediction algorithm, so its positions match the sending end with a maximum error of the same constant amount, (plus some additional error due to lag.) Updates are also sent periodically in case one gets lost, but those are not frequent.

Incidentally, Uber's display of cars on a map on the home screen is totally fake.

<comment><USER3> From talking to an uber engineer, he said that it's not fake, it's just delayed.

<comment><USER4> In my experience, I'd suggest it's delayed something like a month or two...

(Not that I've got a dog in the fight any more, don't forget today's the day to delete Uber!)

<comment><USER5> Why would they display a month old data on your home screen? Either it's realtime/delayed by a small amount of time or it's fake.

</comment></comment></comment></comment><comment><USER6> For those interested, you can build a system like this that tracks sub-second GPS information, and easily scale to 100M+ writes for $10/day with 1KB payload (compare to the 62bytes in the article).

Here is a demo we threw together of it working in real life: [https://youtu.be/7ALHtbC9aOM](https://youtu.be/7ALHtbC9aOM)

Here is a prototype of saving 100M+ writes for $10/day: [https://www.youtube.com/watch?v=x_WqBuEA7s8](https://www.youtube.com/watch?v=x_WqBuEA7s8)

Our sync system: [https://github.com/amark/gun](https://github.com/amark/gun)

And since we are on the topic, I highly recommend this engineering blog post by Discord on how they scaled up append-only writes in a way similar to how our system does: [https://blog.discordapp.com/how-discord-stores-billions- of-m...](https://blog.discordapp.com/how-discord-stores-billions-of- messages-7fa6ec7ee4c7?gi=de801bddfd20#.dzqq7q4o7) .

<comment><USER7> Yes definitely room for improvement. We're pushing at least 8 billion a day through our server.

By the way GunDB looks really cool. Nice!

<comment><USER6> 8 billion a day! That is great! You should write an article and post it. (or if you know the OP you should mention this in the current article). What setup are you using? Thanks - I'd love to learn your tricks.

</comment></comment></comment><comment><USER8> One thing that always annoys me about the Uber UI is that the oversized cars appear to be moving horribly slowly when they are sometimes actually moving pretty fast. Every time I am waiting for an Uber I find myself wanting to scream at the driver to step on the gas and go at least more than 5 mph which is what it looks like on the UI. The scaling makes it hard to tell the actual speed of the cars and the reasons when they slow down when they actually do slow down. I don't have a good solution to this though. Maybe:

\- a car-game-like 3D interface where you can see the view from the driver's seat, moving at the actual sensed speed of the car, with fake (or Street View) scenery whizzing by, so while you are waiting you can see that the driver is actually moving at close to the speed limit.

\- render a bunch of other random cars on the road, emulating the actual real- time density of traffic, so if the guy is chugging along slowly I as the user will blame the traffic, not the app or driver

\- render rain and snow in the 3D view if that is what is slowing the driver, so I will curse at the weather for creating an unsafe situation and not the driver for going slow

\- render ambulances and police cars in the 3D view if a traffic accident is reported, so i will understand that a human is hurt instead of cursing at the Uber app

\- show the state of red lights in real time so that when a driver is stopped i know it is for a red light and not lazing around or lost directions. there are enough Uber cars driving around that based on aggregate GPS statistics they should be able to determine the cycle times and phases of every traffic light on major streets.

<comment><USER9> >I find myself wanting to scream at the driver to step on the gas and go at least more than 5 mph which is what it looks like on the UI.

sorry but regardless of the UI, does this scenario even make any sense? why would your driver be going extremely slow unless there was a good reason for it? I agree that the UI can be a bit misleading with speed but i think this is a bit much

</comment></comment><comment> nevi-me This is an interesting challenge, I'm building something similar for public transport, and the latency in updates tends to make things bad.

On browsers I'm using turf.js to calculate movements and then animate them. I calculate where the bus/train is likely to be in the next 30 seconds, and then send that data through to the user. Then I keep updating the vehicle marker frequently until that 30 seconds time out, or until another update comes in.

I'm struggling to do the same on Android because I haven't found a good turf.js equivalent there.

<comment><USER10> Perhaps React-Native with turf.js will solve this?

Update: Here are React-Native Map components for Android and iOS [https://github.com/airbnb/react-native-maps](https://github.com/airbnb/react- native-maps)

<comment> nevi-me I'm writing the parts of turf that I use in Kotlin for the JVM. Still early work, but I try put in 30 minutes if my tired hours into the project, before I sleep. I'll hopefully have something decent soon enough to make more progress with the vehicles thing.

</comment></comment></comment><comment><USER11> Hello, a question about mapping on mobile, How can one run mobile offline map using OSM with an open source library, their screenshots doesn't contain copyright, so am assuming their own solution.

thank you

<comment><USER12> [https://openmaptiles.org/docs/mobile/mobile/](https://openmaptiles.org/docs/mobile/mobile/)

OpenStreetMap license requires you to display an attribution though.

</comment></comment><comment><USER13> What accuracy people care is the car that you have just ordered. The other times when you see a map of cars you can get away 80% of the time using averages

</comment><comment><USER14> How does one manage sessions for mobile clients when communicating over UDP? Do you just save the client's IP address and address the client by that IP? Are the IPs of mobile devices relatively stable?

</comment><comment><USER15> You don't need to send the full precision lat/lng in every update. Instead, send only the change in position from the last update (in meters), which you can calculate on the client.

You could also further reduce data by indexing the city into a grid, of, say 1 meter squares, or potentially a hilbert curve would be fun to experiment with.

<comment><USER16> Since they use UDP this would not be foolproof

<comment><USER15> Well of course you need a way to deal with that, you could have a tolerance or tolerated error and then if that gets over a threshold you request the full precision location. Still loads more efficient than sending the full precision every time.

</comment></comment></comment><comment><USER17> for geoindices why not use redis?

<comment> nevi-me Or Tile38 [https://github.com/tidwall/tile38](https://github.com/tidwall/tile38), I want to try it out, it looks awesome

</comment></comment><comment><USER18> "Also we found challenge near Kremlin where car appeared at airport." /s

</comment><comment><USER19> Why not PostGIS?</comment>


Why Reddit's been slow lately (dev group post) - <AUTHOR> http://groups.google.com/group/reddit-dev/msg/c6988091fda9672d?pli=1 <comment><USER2> What if instead of looking up each user in the thread to see if they are a friend, they just serve the same page to all users. Then a bit of javascript loads up your friend list from the server and uses dynamic css to change the style of your friends username to the friend style.

That way everyone can share the cache page, and the dynamic icing is separate.

<comment><USER3> Probably better to send the friend list as JSON down the wire with the page otherwise you'll double the number of requests (not something you usually want to do when trying to scale).

<comment><USER4> You could use the client-side store (supported in a bunch of common browsers) as a cache.

<comment><USER5> Or cookies. 4 kB is a lot of friends. Invalidate them every time someone adds a friend.

Both of these however make cache invalidation (in case of multiple browsers/computers) hard—nearly impossible even.

<comment><USER6> Cookies suck for that sort of thing because they are sent over the wire with every request.

</comment></comment></comment></comment></comment><comment><USER7> Apparently Reddit folks don't like Redis too much (private email exchange), but I'm practically sure that Redis could help them so much here...

There are two strategies to mitigate reddit problems using Redis IMHO, one is simple to plug, one is advanced.

Strategy #1: Use Redis as a cache that does not need to be recomputed, instead of memcached.

To do this what they should do is things like, for all the recent "hot" news, to take everything inside Redis and update the Redis side when they write to the database.

For instance they could use a Redis hash for every news to store all the comments of a given news, indexed by comment id for easy update, so every time there is to render the comment page just a Redis call HGETALL is needed to fetch everything, like in a cache, but still with the ability to update single items easily (including vote counters if needed, using HICNRBY).

The same for firendship relations and so forth. Every place can be reimplemented using an updatable cache, starting from the slower parts.

Strategy #2: Use Redis directly as the data store, killing the need of a cache.

This needs a major redesign, but probably it can be done incrementally starting from #1, because when using Redis as a smart cache you write both the code to read and update the cache, so eventually killing the code that updates the "real" database will make Redis the only store, or it is possible to still retain the code updating the old data store just to have another copy of the whole dataset where it is easy to run complex queries for data mining and so forth, that is something an SQL database does well but Redis does not.

I think that David King evaluated Redis in contrast to Cassandra, and he did not liked the lack of cluster solution with failover, resharding and so forth (what we are tying to do with redis cluster), but I think he missed part of the point that Redis can be used in many different ways, more as a flexible tool than a pre-cooked solution, and in their case the "smart cache" is probably the best approach.

If Reddis will reconsider the issue giving Redis a chance I'm here to help.

</comment><comment><USER8> Here's your sign: "7s of that was waiting on memcached."

If memcache is slower than your DB, you're doing something wrong.

<comment><USER9> I don't think you've just told them something new. The problem is figuring out what 'something' is.

</comment></comment><comment><USER10> "A request that I just made on my staging instance took 13s (!) to render the front page. That's on its own cache so it should be slower than the live site, but that's still pretty ridiculous."

I'm actually seeing that kind of speeds on the live site front page.

</comment><comment><USER11> I'm curious as to how they're structuring the data for their comment trees. Does each comment only have one parent? That parent either being another comment or the parent article? Are they using nested sets?

My preferred alternative is to have all comments have 2 separate parent fields. One that always points to the parent article and another that points to the parent comment if it has one, null otherwise.

Structuring the data this way means that you can fetch all the comments for a particular article _very_ quickly and if you wish simply hand that raw data over to the client to be structured using JavaScript, which helps offload some of the work your server would otherwise be doing...

</armchair_development>

<comment><USER11> So I decided to get out of my armchair and have a look at the code. It's a lot to take in and I've never done any work in python but:

It looks like they're already doing part of what I proposed above. Each comment is associated directly with a 'link', and after retrieval the tree is sorted on the server-side.

Personally I don't see any reason why the tree couldn't be sorted client-side, sorting definitely seems to be one of their time-sinks, especially given that each tree has to be sorted a number of different ways (by controversy, heat, age, score, etc...), and given that the trees tend to change often (with each vote, and with each new comment)

<comment><USER12> > I don't see any reason why the tree couldn't be sorted client-side

The sorting isn't the expensive bit, tmk

<comment><USER11> I'd be interested to know what percentage of time it takes up for rendering a comment thread in the live system though.

</comment></comment></comment></comment><comment><USER13>
      But when we render the Comment back to you in that same request we need
      the ID that the comment will have, but we don't know the ID until we write it out.

Wouldn't something like Snowflake help for this particular case?

      Snowflake is a network service for generating unique ID numbers
      at high scale with some simple guarantees.

<http://github.com/twitter/snowflake>

Kellan (from Flickr) has a neat post about _Ticket servers_ : [http://laughingmeme.org/2010/02/08/ticket-servers- distribute...](http://laughingmeme.org/2010/02/08/ticket-servers-distributed- unique-primary-keys-on-the-cheap/)

</comment><comment><USER14> The author of the post also says that the EC2 network is "slow". Does anyone have numbers about the performance of EC2 network in general, and why this is so?

<comment><USER15> A few months ago I read: "The Impact of Virtualization on Network Performance of Amazon EC2 Data Center" (<http://www.cs.rice.edu/~eugeneng/papers/INFOCOM10-ec2.pdf>) which has some performance numbers (latency and throughput) for small and medium instances.

Unfortunately, I can't recall enough of the paper right now to give you the nickle-and-dime overview, but it has graphs you can look at!

</comment></comment><comment><USER16> As a bit of a side note, as a regular user of reddit it felt a bit odd to see this as from "David King".

It says something about the level of interaction between the reddit admins and its users that I recognize him primarily as "ketralnis".

<comment><USER17> Indeed, I had no idea who David King was, but ketralnis is familiar.

</comment></comment><comment><USER18> Reddit is _always_ going through slow phases. I bet those probably coincide with growth phases and they run rather lean (or so I've heard). I'd be more worried if they started getting very fast, that might mean their user base is shrinking and they have too much infrastructure.

</comment><comment><USER19> Start with graceful degradation when things get tough? (Less comments, top friends,...).

<comment><USER20> My initial worry about that would be datastore support- can you really do that efficiently with Postgres/memcached?

<comment><USER19> In memcached, caching smaller things should allow more to be cached. On the Postgres side, when the disks are hard at work any access is expensive but reading less should still help. Depending on the query you can try to get it to read less. In other situations maybe just turn stuff off. I don't know the specifics but simple things like not displaying the exact number of comments may help (counting stuff can be frustratingly expensive sometimes).</comment></comment></comment>


Legacy Java Data Risk - <AUTHOR> http://www.waratek.com/blog/october-2014/legacy-java-data-risk

<comment><USER2> Is Java-the-VM really that vulnerable? There are plenty of attacks on Java- the-web-plugin, but those wouldn't affect corporate deployments.</comment>