Skeuomorph - <AUTHOR> http://en.wikipedia.org/wiki/Skeuomorph

<comment><USER2> If I remember correctly, Ayn Rand detested Skeuomorph's very strongly. Howard Roark (of the Foundainhead) criticizes them on the grounds that they hold back creativity.

I can't say I disagree, though I do kind of like the little handle on maple syrup jars.

<comment><USER3> The Latin Alphabet is riddled with nonfunctional historical flourishes, but that doesn't seem to hold back typography; sometimes constraints can be lenses for creativity, instead of shackles.

<comment><USER4> Innovation in typography? I'm by no means an expert in the field, but that seems like a poor example. I've always imagined typography to be relatively stagnant.

<comment><USER3> Search for [best typefaces 2009], or 2008, or 2007...

Or look at the careers of famous typographers, like Spiekermann or Tobias Frere-Jones or...

It may be "stagnant" as in "nobody's invented a new letter like doublequeue", but there's plenty of innovation within the established forms. Look at HFJ Archer, a slab serif, bound by conventions established almost two centuries ago for 19th-century poster printing, that is something fresh and new in 2007.

</comment></comment></comment></comment><comment><AUTHOR> I don't know if it qualifies, but it should! PageCurl in Apple's iBooks. And those "wooden" shelves.

<comment><USER5> <http://www.useit.com/papers/anti-mac.html> is a 1996 paper by Jakob Nielsen & Don Gentner that criticizes too-literal visual metaphors in the Macintosh user interface. Good read.

<comment><USER6> "The designers of the Phelps farm tractor in 1901 based their interface on a metaphor with the interface for the familiar horse: farmers used reins to control the tractor. The tractor was steered by pulling on the appropriate rein, both reins were loosened to go forward and pulled back to stop, and pulling back harder on the reins caused the tractor to back up"

<comment><USER7> The change in interfaces, particularly metaphors, is really interesting as things go from derivatives (e.g. a mechanised horse) to originals (e.g. a tractor).

It's also interesting when metaphors don't change, failing to keep up with reality, e.g. the floppy disk being used a save metaphor, when floppy disks have not been prevalent for years.

</comment></comment></comment></comment><comment><USER8> I wonder how much material/effort is wasted in our civilization on the entirely non-functional ones that continue to be used, like tiny little cargo cults to the past, each adding a little friction within the engine of modern life, progress, and bettering our world.

<comment><USER9> Yes, but … some of these can be seen as removing the cognitive friction of relearning unimportant things every time their implementations evolve. Rigorous situational efficiency would be inefficient overall, because everyone would lose time to codeswitching.

<comment><USER8> Good point, but that can also be seen as simply moving some things that might be naïvely thought of as "non-functional" into a class of "not obviously so, but yes, functional". The same as with skeuomorphs that are used as social signals. So even being liberal in letting things into that class, there is very likely a residue of entirely non-functional skeuomorphs remaining, right? And, I wonder how much we collectively waste on it.

Perhaps more interesting, I wonder how that value changes over time in cultures. Is it ever a significant drag on older cultures after a while? Does it have secondary effects. Like if you are surrounded by skeuomorphs all the time, does it hamper some learning because the designs of most things aren't really making sense.

<comment><USER9> This is tricky for me to think about because I'm not sure what to count as "functional". For example, is a cozy sense of familiarity and well-being functional? I could argue either side of that.

It seems obvious to me that these things are a drag on culture. But because it seems obvious, I wonder how much I'm missing – maybe I'm just taking too narrow a view of what's a drag v. what looks like a drag but is actually adaptive.

<comment><USER8> Indeed on the tricky bit.

But even so, some dynamics might be discernible in the mess. Such as... consider the set of skeuomorphs defended by the claim to function that they aid by minimizing some switching cost. That defense has something akin to a half-life, when there exists some set of transition steps that takes the design of the skeuomorph, imperceptibly at each step, toward some more efficient design. So indefinitely using the "minimizing switching costs" rationale as giving "function" wouldn't hold up in such cases. Then it seems reasonable to say that any costs which arise from not having moved such skeuomorphs along that path of imperceptible transitions in a timely fashion would be a indefensible waste if that was the skeuomorph's only claim to functionality.

</comment></comment></comment></comment></comment><comment><USER10> Also known as kitsch. <http://en.wikipedia.org/wiki/Kitsch>

<comment><USER5> Not quite the same. They're overlapping sets.

<comment><USER10> Yeah, kitsch especially is quite fuzzy, but the way I understand it most of this "form imitating function" falls under it.

</comment></comment></comment><comment><AUTHOR> It turns out this blog post is about skeuomorphs in the Apple UI: [http://speedbird.wordpress.com/2010/06/25/what-apple- needs-t...](http://speedbird.wordpress.com/2010/06/25/what-apple-needs-to-do- now/)

Right now, number 40 under New. Should be voted up, I think.

</comment><comment><USER11> So that's what those tiny pockets are for, pocket watches.

<comment><USER7> I've always referred to it (and used it) as a change pocket, as have jean manufacturers.

<comment><USER11> How on earth do you get coins out of that tiny pocket?

<comment><USER12> Handstand.

(Or fingers.)

</comment></comment></comment></comment><comment><USER13> That hubcap has a non-functional knockoff (aka spinner), too.

</comment><comment><USER14> <http://www.rekeeb.com/2009/08/09/on-skiamorph/>

</comment><comment><USER12> I suppose now the cat's out of the bag.</comment>


We Need New Ways of Treating Depression - <AUTHOR> https://www.vox.com/the-big-idea/2018/2/25/16997572/causes-depression-pills-prozac-social-environmental-connections-hari <comment><USER2> If this is a way to treat depression, maybe dialing back the crap way we treat each other is preventative. I've been angry for a long time that I have to take medication because most of my life was full of people who seemed to get some sort of perverse pleasure out of making me feel bad for things I cannot control (like being female, nearsighted and unattractive). Somehow it's not possible to simply disagree with someone else and state your contrary opinion, but rather to escalate quickly to aggression and personal attacks. Somehow it's not possible that we can organize ourselves so that a greater number of people can have their physiological needs met, much less feel safe and heaven forbid we should feel love/belonging or have a modicum of self-esteem because how would advertisers ever sell anybody anything? And along comes the internet where anyone is entitled to say anything from a distance and not have to look into the eyes of the human being they're taking a scrap of dignity from.

<comment><USER3> _...I have to take medication because...of people who seemed to get some sort of perverse pleasure out of making me feel bad..._

In my head I boiled your comment down to that, and it hit pretty hard. I have had people encourage me to take anti-depressants because of my reaction to the way they're treating me.

<comment><USER4> I'm on your "friends" side with family members. You made me reconsider some aspects of the situation.

</comment></comment></comment><comment><USER5> There's a story Andrew Solomon tells that's not unlike the Southeast Asia anecdote. Andrew traveled the world trying to understand how other cultures experience depression as a way to deal with his own depression

In one African village, he asked the residents what they thought of western depression treatments. They said "why don't you bring people outside, so they can feel the sun on their skin? Why don't you dance with them, so they can feel energy of others? Why, instead, do you shut them in a dark room, alone with a stranger, to talk about things that make them sad?"

It's an interesting talk, and one that illustrates just how little we know about depression

<comment><USER6> > Why, instead, do you shut them in a dark room, alone with a stranger, to > talk about things that make them sad?

FWIW, this isn't really how therapy goes. At least from my CBT experiences, its a few minutes of talking about what we're currently struggling with, then decoding those topics to learn how we distort our experiences and memories towards the negative / stressful.

Then usually the "homework" would be small actionable steps to build up habits to become aware of these distortions, as well as habits to make other healthy choices.

Not discounting Andrew's story one bit, just putting a bit more light on what modern therapy aims towards.

<comment><USER7> The general idea is true though. For a depressed person, we aim to isolate them with a clinician instead of surrounding them with friends. We even use "therapy" as a kind insult: "You should go to therapy!" as if mental illness is something to be shamed.

The overall notion is that there's something wrong with people who are depressed, and that we'd rather wash our hands of it than help them. We have similar attitudes toward the homeless and the incarcerated. It's a very puritan/Calvinist attitude, that "certain people" are innately bad, but pervasive in even progressively minded Americans.

<comment><USER8> Friends/therapist is a false dichotomy, any good therapist encourages socializing.

Depressed people are not mentally healthy, it's a condition that can lead to suicide. Being sad is not bad, but when someone is diagnosed with depression, or any mental disorder, it's because it's affecting their lives negatively.

Also the rooms have do have lights in them.

</comment></comment></comment></comment><comment><USER9> > We offer, and are offered, drugs as the first, and often last, recourse.

This is one of the many mental health memes I wish would die. I've lived my entire life with several close family members and friends who have severe mental illnesses. I have been to hundreds of appointments across dozens of providers. I have never NEVER seen a doctor give a patient a once over and then prescribe meds.

I understand there are bad psychiatrists out there. Just like there are bad mechanics, bad accountants and bad everythings. But I believe the vast majority of psychiatrists understand the limits psychoactive medications. I think it would be farely rare that a psychiatrist doesn't also discuss lifestyle changes and recommend some kind of talk therapy along with medication.

<comment><USER10> I think many psychiatrists prescribe first because people who are clinically depressed have such a high rate of suicide that it's better to first reduce the risk pf death before further treatment.

I'm not saying that applying that principle so broadly is a good thing, but I can see where they're coming from.

<comment><USER11> Sometimes antidepressants can increase the risk of suicide, however. This is a commonly enumerated side effect in their advice leaflets. One theory of depression is that it's evolved to take away our motivation to kill ourselves in the face of extreme adversity.

<comment><USER9> True, the link between antidepressants and suicide is a current area of study.

[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4034101/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4034101/) [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3353604/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3353604/)

In no way do I want to diminish how serious these drugs are. They can have a profound effect on a person's behavior that occurs in a very short period.

Finding a medication regimen that works for a person is a serious undertaking. It often takes years. A person may have to taper on and off dozens of different regimens to find a good effect while minimizing side effects. The constant personal changes a person experiences through this process can strain relationships, ruin careers and much worse.

</comment></comment></comment></comment><comment><USER12> Caveat lector: Johann Hari, the author of this piece, was involved in a major integrity scandal in 2011. He resigned from his job at _The Independent_ after being accused of habitual plagiarism and admitted to vandalising the Wikipedia articles of journalists who had criticised him.

[https://en.wikipedia.org/wiki/Johann_Hari#2011_scandals](https://en.wikipedia.org/wiki/Johann_Hari#2011_scandals)

His recent book _Lost Connections_ , on which most of his recent articles about depression have been based, has faced widespread criticism for misrepresenting the evidence on depression and how it is treated.

[https://www.theguardian.com/science/brain- flapping/2018/jan/...](https://www.theguardian.com/science/brain- flapping/2018/jan/08/is-everything-johann-hari-knows-about-depression-wrong- lost-connections)

[http://www.independent.co.uk/voices/johann-hari- depression-a...](http://www.independent.co.uk/voices/johann-hari-depression- anti-depressants-psychiatrists-pills-therapy-change-lifestyle-job- psychology-a8151606.html)

[https://anotherangrywoman.com/2018/01/08/five-things- wrong-w...](https://anotherangrywoman.com/2018/01/08/five-things-wrong-with- johann-haris-comeback-book-that-i-spotted-from-the-extract-alone/)

</comment><comment><USER13> We need to stop giving people reasons to be miserable then. I know too many millennials working two or three crappy service jobs for peanuts, never going to the doctor because being a server or Uber driver doesn't provide health insurance, and constantly ha-ha-only-seriously joking about becoming alcoholics for it to be just a coincidence that so many people are depressed. Oh, and I'm sure our disgusting sugar-laden diets aren't helping anything either. But maybe some basic social safety is necessary? I'd be pretty miserable too if I were afraid a single ambulance ride was going to bankrupt me (as it all too often does to Americans).

</comment><comment><USER14> Here's a nifty idea.. start researching cheap, low harm, but powerful drugs again, instead of banning the research.

Perhaps some new ways of treating depression using LSD or suchlike will come from the research. Perhaps not. Hard to know while the science is banned.

[https://www.maps.org/research/other- research](https://www.maps.org/research/other-research)

</comment><comment><USER15> I think that the effects of food/digestion are still hugely overlooked as an underlying cause/catalyst of mental illness in general, and not the other way around. Here's a clinical psychologist and professor of psychology who discovered the same thing for both himself and his daughter [1]. They only eat meat now, basically.

[1] - [https://www.youtube.com/watch?v=A6g_geYeL4U](https://www.youtube.com/watch?v=A6g_geYeL4U)

</comment><comment><USER16> Social Prescribing has only ever had a negative outcome on me, as well as most medications. Zoloft made me extremely suicidal, Lamotrigine for mood stabilization made me lose my hair. The only medication that's ever worked for me is addictive, and prone to abuse. It helps with my severe social anxiety, and prevents rumination. Because of the addictive nature of it, I do not take it.

I understand that things such as "social prescribing" may help some, but it is detrimental to me. I have no desire to be forced around a group of people that I have no known common interests, and may have none.

I feel that reading the majority of discussions to treat depression fall short in my case, as a lot of them involve other people or outdoor activity. My general disregard for other people and existence as a whole tends to be an issue.

I'm sure this can help some, but it seems to just be what most people understand already.

<comment><USER17> > Zoloft made me extremely suicidal

Were you on an upswing in your mood?

There's a tough period with anti-depressants where people are on an upswing to a more positive position. They haven't yet broke free of overwhelming suicidal thoughts and low mood, but now have energy and motivation to actually do things. Unfortunately, that means suicidal thoughts that seemed too difficult now appear possible.

It's a really interesting and tough situation. Being suicidal can actually indicate things are working properly, but will still need 4 to 6 weeks to get you to a more positive place.

<comment><USER16> I was actually quite low. I didn't want to put it as harshly as I explain it to people close to me, but it took me from a position of "I want to die, and probably will kill myself semi-soon." to "My shotgun is loaded, 41 steps away from me. In a flash the world could be gone, and my thoughts would vanish and I would be at peace."

The prior thought process was accompanied with self-destructive methods. Abandoning friends, work, hobbies, etc. My real emotional escape has always been video games. They keep my thoughts from wandering, and I pour everything in to them. I believe my use of them in that way accompanies my skill at them. (Top 10 PUBG 2 seasons ago, A+ ESEA, Global Elite in CS, top 50 crusader D3 S13, etc.) My accomplishments in video games really help my suicidal tendencies, but they also hamper them. My depression seems to sway between a desire for success, freedom, skill, and a general over-arching hate of the meaningless-ness of existence. On a downswing it can depress me, on an upswing it can inspire me. I don't know enough about the topic from a professional perspective to determine how common that is for people.

<comment><USER17> This is exactly where the "suicide warning" on anti-depressants come from.

The "I want to die" thought and the "my shotgun is loaded" thought are at their core, the same "I don't want to live". However, the later has motive and intent behind it.

The whole goal of anti-depressants is basically to give you motive and intent. In many cases, that can be really good but it also means you have motive for the suicidal thoughts that still linger around.

</comment></comment></comment></comment><comment><USER18> I've been saying it for years - depressed? One-way plane ticket to another culture, preferably completely foreign: solved.

And I've seen it work, time and again. So many times, I cannot be swayed: if you're depressed, you need to move. The deeper the depression, the more convinced you are that there is no solution: the further you need to fly, friend.

No, its not easy. (Except it is). Yes, you will have to learn a new language (except that is fun and very rewarding once you do it). No, your culture is not important, you can shed it in an instant - all it takes is that boarding pass, man.

<comment><USER19> Funnily enough I became depressed from precisely this move. I don't think it is bad advice, however. But it did make me chuckle.

</comment></comment><comment><USER20> This story is by Johann Hari who has an interesting TED talk about addiction [0]. He put addiction down to the amount of connections that people have and seems to be arguing something similar in this article too. Googling bought up this criticism of the video [1] for some perspective (with Hari, to his credit, answering the criticisms).

[0]: [https://www.ted.com/talks/johann_hari_everything_you_think_y...](https://www.ted.com/talks/johann_hari_everything_you_think_you_know_about_addiction_is_wrong)

[1]: [https://www.thefix.com/content/4-things-hari-gets-wrong- abou...](https://www.thefix.com/content/4-things-hari-gets-wrong-about- addiction)

</comment><comment><AUTHOR> This article about depression is also on the front page at the moment. Seems good to link for more references and discussion:

> > [https://news.ycombinator.com/item?id=16491986](https://news.ycombinator.com/item?id=16491986)

</comment><comment><USER21> I can not talk about how things is done in other countries... but everyone who reads Psychology (and/or psychiatry) in grade school knows about Aaron Antonovsky and the "sense of coherance" theory. Everyone in health care who study assistant nurse and up knows about this theory.

So this is not something new or unknown about. It is not biology or social.. it is biology and social. Both play a part.

I live in a Scandinavian country and we are very aware that loneliness is an important cause for depression. The problem is.. you can't force people to be social. Family might be the problem. So drugs can be a solution until you find a more permanent solution.

</comment><comment><USER22> Not a mention of plant-based medicines and psychedelic, spirit-centric treatments of depression? There's enough data at this point that this seems willfully obtuse. We need new ways, yes, and they're out there. These new ways need champions.

Ayahuasca changed my life and banished two decades of born-into depression. I have seen dozens of people transform thanks to this medicine. I've seen similar, incredible transformations from Psilocybin. Daily meditation keeps me in balance and singing tunes of contentedness. They're out there!

</comment><comment><USER23> I have doubts about the authors intentions: Look up the wikipedia article and in the past he has done things of questionable integrity to be popular. He is a good storyteller and there is strong criticism from the medical professionals about his skewed views about ineffectiveness of current treatment methods. He does not cite enough references for such a hevayweight topic. I have no problem in him presenting a new perspective, but this is more of getting into the bestseller book list by telling you what you wish to hear.

</comment><comment><USER24> The article should read more like "We need new ways of identifying and defining depression".

</comment><comment><USER25> www.brokenbrain.com is what you should look at.

</comment><comment><USER26> Ancient wisdom and modern science support the idea that exercise and nurturing are highly effecting in fighting depression. I once spent a day in a log cabin splitting wood, dancing and baking bread and thought to myself if everyone in the world could do one of these things every day most of the world's problems wound evaporate. My specific favorite prescription for the slings and arrow of outrageous fortune is an aerobic, geometric, tribal form of dancing that is challenging but easy to learn with a subculture that welcomes and celebrates beginners - contradancing [1]. I also recommend listening to uplifting music such as Stan Roger's Mary Ellen Carter [2]

1 [http://www.burningmancontradance.com/home/contraintro](http://www.burningmancontradance.com/home/contraintro) 2 [https://www.youtube.com/watch?v=Fhop5VuLDIQ](https://www.youtube.com/watch?v=Fhop5VuLDIQ)

</comment><comment><USER27> How about god and hoping for paradise. World's made to break you</comment>


Apache REEF: data-processing tasks: data shuffle, group com, aggrega, checkpoint - <AUTHOR> https://reef.apache.org/ <comment><USER2> As with most Apache projects, I cannot tell what purpose it has by reading the project page. Can anyone enlighten?</comment>


"Mum and the Sothsegger": Game of Thrones and Medieval Poetry (2014) - <AUTHOR> http://www.theparisreview.org/blog/2014/06/15/mum-and-the-sothsegger/

<comment><USER2> This article is from 2014, so don't worry about having missed some episodes when it t ells you the season finale is tonight.</comment>


Generalized Knights - <AUTHOR> https://lemoing.ca/blog/knight.html <comment><USER2> Now that computers can be cheaply trained to play chess at greater than human skill level without any pre-existing knowledge of the game, has anyone looked at the question of whether the rules of chess are optimal or non-optimal under some measure of interestingness and simplicity? Like, there was some evolutionary pressure on the rules of chess to be simple and yet yield interesting games in the early days before the rules had solidified. It's now possible to take an arbitrary chess rules variant and cheaply train a machine to be (with high confidence) at least as good as a grand master would be in the universe where those rules had persisted for a thousand years. Are there better rules out there?

<comment><USER3> Not sure if this is what you are asking, but Bobby Fischer thought the current chess rules led to boring games so he invented Fischer Random Chess.

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

It makes the games far more complex and dynamic since the pieces are placed somewhat randomly. There are other variants which remove castling which makes the game even more dynamic as it prevent castling to secure your king from the middle of the rank.

<comment><USER4> How about this simple rule, has this been tried?

To begin with each player puts one piece of their color on the board on their turn where-ever they want.

When all pieces are on table, the player who placed the last piece gets the first move, to compensate for the fact that the other player had the advantage to place the first piece on the board where-ever they wanted to.

<comment><USER5> It seems like you'd end up with a lot of pawns placed near the end of the board, quickly (instantly?) turning into queens.

<comment><USER6> Then add a rule where pawns are limited to the middle rows of the board, amd/or reduce the amount of pawns

<comment><USER4> That would seem to work.

Another approach could be that yes you must fill the first two rows of your side initially, but players would take turns in doing that piece by piece. You would see how your opponent places their army piece by piece on their side and you would adjust your placements accordingly.

</comment></comment></comment></comment></comment></comment><comment><USER7> I first found it helpful to see how many moves it takes a knight to jump from one square to another by looking at the vertical and horizontal axes:

      |        2
      |        3
      |        2
      |        3
      |2 3 2 3 K 3 2 3
      |        3
      |        2
      |        3

Then by looking at the diagonals:

      |4       2       4
      |  2     3     2
      |    4   2   4
      |      2 3 2
      |2 3 2 3 K 3 2 3
      |      2 3 2
      |    4   2   4
      |   2    3     2
      |
      |

Finally looking at the map:

      |
      |8| 4 3 2 3 2 3 2 3
      |7| 3 2 3 4 1 2 1 4
      |6| 4 3 2 1 2 3 2 1
      |5| 3 2 3 2 3 K 3 2
      |4| 4 3 2 1 2 3 2 1
      |3| 3 2 3 4 1 2 1 4
      |2| 4 3 2 3 2 3 2 3
      |1| 3 4 3 2 3 2 3 2
      | +</comment><comment></comment><comment>----
      |   a b c d e f g h

<comment><USER8> What is the K in that last graph (F5) and why did it move compared to previous?

<comment><USER7> K is the knight or just a knight on a chess board. The numbers represent how many moves to get to each square. Hope this helps

<comment><USER9> A question I had (which might be the same as the one asked above) was why you chose to place it off-center.

<comment><USER7> It could be anywhere, the numbers will translate as well. Try to do it by hand as an exercise.

</comment></comment></comment></comment></comment><comment><USER10> A bit unrelated, but Onitama [1] is a game based on maximizing/leveraging the "weirdness" you see in the knights. On every turn you select between two choices of movement. Difficult to describe here, but it's a really fun game.

[1] [https://boardgamegeek.com/boardgame/160477/onitama](https://boardgamegeek.com/boardgame/160477/onitama)

<comment><USER11> It's a two-player turn-based perfect information game. You've got five possible moves, four of which are "in play" (two each), and one of which is not. One player picks one of their cards, moves one of their pawns according to one of the card's possible destination squares, then swaps the card they just used with the "out of play" one.

You win if you take your opponent's "king pawn", or move your "king pawn" onto the enemy's vacated throne. All other pawns are disposable, as in Chess. The throne (and king pawn starting location) is in the middle of a side of the 5x5 board, opposite the enemy's throne, with two normal pawns either side of it to cover the entire edge. The king pawn has no superpowers.

<comment><USER12> That's a good synopsis of the rules.

Here's an attempt at the implications this has. It's pretty hard to lose by having your King captured, so at least at my level, what can decide games is how safely gets their king further during the inevitable large trading of pawns that happens in the middle.

</comment></comment></comment><comment><USER13> The mathematics seem valid to me but the underlying concept of 'knights are weird' just doesnt ring true.

Knights move precisely the way they do because there whole concept is to be able to threaten any other piece without being threatened.

The knights movement is precisely designed to e the simplest movement possible that can fulfill this roll.

The knights ability to jump over pieces comes from the fact that there are always two ways for the knight to get to a square so no one piece can block a knight... I do understand that in theory 2 pieces could block a knight but that's the justification for its magical jumping ability.

<comment><AUTHOR> When I referred to knights as weird, I was thinking more of how their movement patterns are incongruous with rooks/bishops/queens that move in a straight line but are blocked by pieces in the way. Their weirdness is what makes them useful (uniqueness may have been a better word).

I liked the way another commenter described it below: knights can move to the closest squares other pieces can't move to.

</comment></comment><comment><USER14> A fun tech side of this post is that the random walk visualization is an SVG that is generated live on the page, and hence new each time. Very cool!

The code: [https://lemoing.ca/scripts/knight.js](https://lemoing.ca/scripts/knight.js)

<comment><AUTHOR> Glad you appreciated it!

</comment></comment><comment><USER15> I really love the live animations, and that they don't start until you scroll to them. However as I was reading I found myself deliberately keeping very close to the bottom of the page so that I didn't trigger an animation too early and have to split my attention between it and the text. A hover-to-start function, or a pause button, would have been even better in my opinion.

Just a bit of feedback in case you're thinking of doing similar articles in the future, which I hope you are, because this was fantastic.

<comment><AUTHOR> I know what you mean about the distracting animations! I tried to set it up so that the animations would pause if they weren't in focus. Having an option to manually trigger the animations would be a good next step.

I definitely appreciate the feedback! I'm hoping to write similar articles in the future so this is definitely helpful.

</comment></comment><comment><USER16> While knights move similarly, involving other rules about their movement, in Shogi and Xiangqi, I also played a chess version, which I think was Korean, (now looked it up: Ah, it is called "Janggi") with a program once. There the knights moved differently.

As a chess and chess variants player, who thinks about geometrical features of the game and pieces, especially the knight, one will have thought about most of the things described in that post, or they will seem immediately clear: "Yes ofc, that is because ...". However, if one is not a mathematician or looks at these things in detail, one might not have used the mathematical terminology or have known how to describe some criteria for a generalized knight reaching squares.

I find it also interesting, for how many chess players chess and software development in ones spare time go together. Chess can serve as a source for many interesting projects.

<comment><USER17> In shogi, the 桂馬 moves like the knight but only the two forward most moves; it can still jump. However, in shogi it can promote (most pieces in shogi can promote).

In xiangqi, the 馬 moves like the knight, in any direction, but it can be blocked (it is considered to go one orthogonal and then one diagonally outward); it is possible that one 馬s threatens the other, but not other way around because the opponent's one is blocked. (The rule that the kings are not allowed to look at each other can also have this non-mutual attacking effect, but 馬 does it even independently of that rule, and of the river.)

</comment></comment><comment><USER18> I don't think the knight is any more weird than the pawn. It's just weird in different ways. Pawns can move up and capture on an angle. Can en passant, can become another piece.

The King and rook can castle which involves moving multiple pieces and over each other.

So there's a lot of weirdness. But that's not to say this isn't a fascinating or worthwhile investigation.

<comment><USER19> Pawns can also change to arbitrary pieces if they reach the end of the board (and I guess a Knight might be the only piece worth changing into other than a queen?)

<comment><USER20> I've found bishops to be more useful in end games because they can block whole diagonals and thus I will gladly exchange my knights for the opponent's bishops. Knights can be easily outmanoeuvred - it is easy to render a knight useless for one move and thereby gain some space to turn a check against you into a more favorable position.

<comment><USER21> But if the endgame has blocked pawns, the knights vs bishop is a lot more nuanced.

</comment></comment></comment></comment><comment><USER22> [https://graebor.itch.io/field-of-fate](https://graebor.itch.io/field-of-fate) This chess game prototype has some interesting variant pieces and a couple of other creative features: traits and relationships. It's not particularly well balanced, but interesting to play with.

For example it has acrobats which jump to a square in a 3x3 square a certain distance away. It has a variant of a Bishop that rather than moving in a diagonal moves in an extended knights move style bumpy diagonal.

One of the things that comes out of this is that part of the power of these pieces is how many squares they can reach (as a proportion of those available on the board), and a generalisation of pieces' moves to being slightly closer to arbitrary functions mapping squares to each other on the board.

</comment><comment><USER23> This red to green color scheme isn't so great for colorblind people like myself. I prefer blue to red.

        // Break at scripts/knight.js:369 then run
        sC = sequentialColor;
        sequentialColor = (low, high, gap, long = false) => sC(240, 0, gap, long);

</comment><comment><USER24> Since this is HN, I'd like to tie this into thoughts I've had on programming languages for years, which unfortunately I'm not skilled enough to rigorously prove.

I know OOP is out now-a-days, but bear with me cause I don't know of any equivalent functional papers/books to describe this idea as well. Elemental Design Patterns [1] shows a way of relating the formal lambda calculus of OOP relationships to design patterns by defining the set of the core operation relationships between types/objects/fns/etc. If you treat all objects/types/functions/etc as a cartesian grid, those core relationships define a basis vector that allows you to combine different operations that create the famous OOP design patterns. And in fact I've always thought of that basis vector the same way as the movements of a chess board, and I've wondered if there's other moves you could add to provide an easier way of hitting all squares.

Since a programming language selects specific syntax to navigate these relationships, if you could describe a language in terms of a lower level basis language, would it make it easier to see which patterns are missing from a language to help move from one concept to another? Could this help design committees select better language constructs that don't do the same things, or conflict in some way? And I'm going to go out here on a limb and hypothesize that a language is Turing Complete if it provides language constructs to allow you to hit every square on the grid, but again not enough skill to prove it myself.

Anyways, I've never thought about the modulo math of these operations like in the case of a Knight's move, so this was super interesting! Does anyone know of any good papers/talks on type theory mixed with modulo spaces, cause I'm certain you could build a different basis for more functional patterns using category theory, and now I'm curious how it might tie in.

[1] [https://www.eecs.yorku.ca/course_archive/2006-07/F/6431/Stot...](https://www.eecs.yorku.ca/course_archive/2006-07/F/6431/Stotts.pdf), [https://www.amazon.ca/Elemental-Design-Patterns-Jason- Smith/...](https://www.amazon.ca/Elemental-Design-Patterns-Jason- Smith/dp/0321711920)

</comment><comment><USER25> You have night riders in fairy chess (which is a type of chess composition). [https://en.wikipedia.org/wiki/Nightrider_(chess)](https://en.wikipedia.org/wiki/Nightrider_\(chess\))

<comment><USER16> Very cool piece! Maybe I should try fairy chess at some point. Thank you! The explanation why it is possible to checkmate using 2 nightriders and the king is also immediately obvious, which makes them even more interesting.

</comment></comment><comment><USER26> Appreciate the post! I'm currently reading the Cryptonomicon and whole- heartedly recommend it to others for reading.</comment>


My Bank is a Security Vulnerability - <AUTHOR> http://matthodges.com/2012/06/my-bank-is-a-security-vulnerability/

<comment><USER2> I suspect not. Your bank unlike some random website likely salts their passwords, will disable your account after a few failed attempts, and will ban IPs after a few failed attempts spread across accounts, tracks who you've sent and received money from so they can reverse transactions that are fraudulent, and artificially rate limits the whole process so that it can't get out of hand too quickly.

The OP (ostensibly) using the same password at their bank and at LinkedIn however _is_ a security vulnerability.

</comment><comment><USER3> Unfortunately, nothing all that new:

[http://michaelkimsal.com/blog/mind-blowing-security- practice...](http://michaelkimsal.com/blog/mind-blowing-security-practice/)

IMG -> [http://michaelkimsal.com/blog/wp- content/uploads/2011/06/Scr...](http://michaelkimsal.com/blog/wp- content/uploads/2011/06/Screen-shot-2011-04-06-at-6.34.33-PM.png)

</comment><comment><USER4> The author has completely misunderstood the problem. The problem is not using passwords that are too short. The problem is sharing passwords between sites. 12 characters is plenty, but no password length will protect you if you use the same password everywhere.

Also, your bank is not the most important password you have. That would be your email, which is used to reset all other passwords.

<comment><AUTHOR> As the author, allow me to address this.

I agree with your statement that sharing passwords between sites is a bad idea. And I don't do it. But I would assert that longer passwords of wider character sets will be harder to crack if a database is compromised--as was the case with LinkedIn. If my password is 8 characters, alphanumeric, it doesn't matter if it's original to that site. If there's a compromise, I'm not going to be in a good place.

Also, my bank doesn't allow for password resets via email. But I would agree that my email account is at the top as well. Fortunately, Google is much smarter about their password rules.</comment></comment>


No One Minding the Store - <AUTHOR> http://mjtsai.com/blog/2015/11/12/no-one-minding-the-store/ <comment><USER2> This is a pretty colossal failure. I was watching a sports game with my son last night, using the Mac connected to our TV, and in the middle of the game Movist abruptly quit with the modal dialog everybody is seeing[1].

My dad emailed me today because his guitar program suddenly demanded signing into the app store (and of course, he didn't remember the password...).

At work, tons of random people came up to me (since I work on our internal OS X apps) wondering how to fix the bogus app-is-damaged alerts and incessant repeated sign-in demands.

And these are just user problems! Read those exasperated quotes from a veritable Hall of Fame veteran Mac programmers! If the Mac App Store is terrible for users (and it _totally_ is), it is a fucking insulting abomination for developers.

Apple has never been good at this stuff, and they are proving that they still aren't.

[1]: [https://twitter.com/dancounsell/status/664739577832321024](https://twitter.com/dancounsell/status/664739577832321024)</comment>


The Mathematical Hacker (2012) - <AUTHOR> http://www.evanmiller.org/mathematical-hacker.html#HN_Repost <comment><USER2> Farsightedness. Things that are too close cannot be focused on clearly.

Step back. Lets talk Ohms law and "electronics people". Some systems level folks care only about microwave RF scattering parameters and smith charts. Others just use NEC tables vaguely derived from Ohms law but all that matters to them is passing inspection. Some consider Ohms law a dumbed down version of Maxwells equations for fools. Some, believe it or not, actually use Ohms law directly. There is no "right or wrong" other than grouping them all together as "electronics people".

In a similar way its pretty dumb to lump language designers, AI researchers, CRUD frontend devs, and generic code monkeys all under "programmer". The engineering field went thru a spinoff phase over a century ago where we no longer have "engineers" we have MechEng, ChemEng, EE, etc. I suspect in a hundred years it'll be considered humorously quaint that we used to lump all these vocations together under "programmer" even though they don't fit.

</comment><comment><USER3> I have spent the last 3 or 4 years self-studying mathematics, and what got me interested in it is essays from PG, articles by Yegge, and most of all reading SICP (and then reading "What is mathematics?", which in a lot of ways seemed a natural continuation of SICP). The argument he builds is really, really, weak:

He invents some concepts like "Lisp tradition" out of blue sky, based on a sample of three people, who he misrepresents and who aren't even serious Lisp programmers (except PG), and then fantasizes what he thinks the "traditions" (my ass, like old Lisp masters are convincing young adepts to not learn math or something) represent, so discussing this seriously is beside the point. Is the average C programmer better at mathematics? If anything, the books introducing Lisp programming go much more into modelling complicated domains, including mathematics, compare SICP or PAIP to K&R or your typical programming intro book nowadays.

Then, he seems to imply that focusing on recursion is somehow less mathematical. Recursion is a lot like mathematical induction, and inductive definitions are ubiquitous in mathematics. Also, a lot of mathematics is non- constructive and mathematicians aren't in general that interested in doing efficient computations, so it's more about knowing algorithms and numerical methods. So his big revelation reduces really to the fact that people doing numerical computations should learn numerical methods, or basically "know your domain", hardly a revelation. Or is it just a cry for programmers to learn more mathematics? But then the guys he criticizes have already done a much better job encouraging people to become interested in mathematics.

<comment><USER4> > _" What is mathematics?"_

Are you referring to the book authored by Richard Courant ([http://www.amazon.com/dp/0195105192](http://www.amazon.com/dp/0195105192))?

<comment><USER3> Yes, it explains clearly a lot of the mathematical concepts that are subjects of some examples in SICP, and it is as rich in insights. Those are my two most favourite books ever, and studying them over a period of few years gave me as much as my whole undergraduate university degree I think.

</comment></comment></comment><comment><USER5> Previous submissions:

[https://news.ycombinator.com/item?id=4796586](https://news.ycombinator.com/item?id=4796586)

[https://news.ycombinator.com/item?id=4915328](https://news.ycombinator.com/item?id=4915328)

Also:

Refuting "The Mathematical Hacker": [https://news.ycombinator.com/item?id=4921953](https://news.ycombinator.com/item?id=4921953)

<comment><AUTHOR> Fantastic - thank you. Interesting discussions, and I hope people take the time to read the article, threads, refutation, and other comments.

I look forward to any additional comments and contributions people may choose to make here.

<comment><USER6> Colin, I'm curious about your take on the essay. I have to admit that while I did read it, I did not engage with it deeply because I felt that the author created strawman views, particularly with regards to the people mentioned and the "Lisp school of programming." Since I found the premises so confused, I didn't have the energy to disentangle the real point from them.

(Part of my curiosity on your take comes from the fact that you commented on a similarly themed essay I wrote some time back.)

<comment><AUTHOR> I've put it on my list of things to write about. It's a long list, but I hope to knock a few things off it over the holiday. Thanks for asking - I'll post here if/when I get something done.

</comment></comment></comment></comment><comment><USER7> As a Lisp hacker, I am somewhat stunned to learn that the world suffers from too much Lisp philosophy and that Lisp is unmathematical. Not to mention that Eric Raymond is a spokesman for Lisp.

Actually there is a somewhat valid and interesting point in that essay, obscured by crap. There are differences between numerical computing culture and symbolic computing culture; people should know both. But from where I sit hardly anyone these days is familiar with symbolic computing while everyone either claims to be or wants to be a "data scientist", that is, do numerical machine learning. Nothing wrong with that, but I have a hard time seeing numbers as the underdog in this fight.

<comment><USER8> I think what he argues against is a third culture, where the focus is on implementation of an algorithm in the code, rather than on the algorithm itself -- and generally, the algorithm is what matters more. Just a couple months ago I've seen some code that spent most of the time traversing the entire (large) data structure and counting elements satisfying certain conditions, while 5 minutes of looking at the actual math was all that was needed to see that the count was a simple function of known quantities.

But, his valid point is indeed obscured by a lot of crap and strawmen :(

</comment></comment><comment><USER9> The Fibonacci example is flawed, in that the given definition, in terms of phi = (1 + sqrt 5) / 2.0, is inaccurate even for moderately-sized inputs. A standard, O(n) definition for computing fibonacci numbers is

      >> let fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
      >> let fib n = fibs !! fromIntegral n

The constant-time approximation is

      >> let fib' n = let phi (1 + sqrt 5) / 2.0 in round (phi^n / sqrt 5)

Around n = 80 the constant-time solution starts giving incorrect results

      >> fib 80          -- exact O(n)
      23416728348467685
      >> fib' 80         -- approximate O(1)
      23416728348467676

<comment><USER10> In all fairness, if there were a type of algebraic numbers, the calculations would be exact. (But probably not O(1) anymore.)

And of course the sane solution is to use exponentiation by squaring on the 2x2 matrix whose elements are all 1s, except the right-bottom one, which is 0. Not surprisingly, (1 + phi) is an eigenvalue of that matrix.

<comment><USER9> Indeed! In fact, it occurs to me that you can get something of a 'best of both worlds' solution between the elegant mathematical solution and the exactness of the recursive solution very easily in Haskell, by defining the field extension* Q(√5), i.e. the rational numbers extended with the square root of 5

      import Data.Ratio

      -- The number (a :+ b) represents (a + b √5)
      data Q5 = Rational :+ Rational deriving (Show)

      instance Num Q5 where
        (a :+ b) + (c :+ d) = (a + c) :+ (b + d)
        (a :+ b) * (c :+ d) = (a * c + 5 * b * d) :+ (a * d + b * c)

      phi = (1 % 2) :+ (1 % 2)

It's now enough to notice that the coefficient of √5 in phi^n is half the n'th fibonacci number, so define

      fib n = let a :+ b = phi^n in round (2 * b)

to get

      >> fib 10
      55
      >> fib 20
      6765
      >> fib 80
      23416728348467685 -- exact result in O(log n)!

* [http://en.wikipedia.org/wiki/Field_extension](http://en.wikipedia.org/wiki/Field_extension)

<comment><USER11> This is mind-blowing. This comment is the best answer I've seen yet to the question, "Why learn Haskell?".

<comment><USER12> The only reason I haven't actually implemented a number type like this in Perl 6 (someone proposed it to me years ago) is I didn't really it had such a lovely and practical application.

<comment><USER12> Props to Haskell, though -- p6 makes it easy to do, but Haskell is definitely more elegant here. Though maybe if I keep playing with it...

</comment></comment></comment></comment></comment></comment><comment><USER13> There is a calculational school of programming in which algorithms are derived from specifications in a presentation of first-order logic adapted to program derivation. It does not seem to be popular on HN. _" Programming: the derivation of algorithms"_ by Anne Kaldewaij is a good source for this. A derivation of an efficient algorithm to compute Fibonacci numbers is given, as well as for me the most memorable implementation of binary search.

Miller should have used Kaldewaij's O(log(N)) algorithm to compute the n-th Fibonacci number, given below.

      def fib(n):
        """Lifted from Kaldewaij."""
        a,b,x,y = 0,1,0,1
        while n != 0:
          if n % 2 == 0:
            a,b = a * a + b * b, 2 * a * b + b * b
            n = n // 2
          else:
            x,y = a * x + b * y, b * x + a * y + b * y
            n -= 1
        return x

As Kaldewaij remarks, the algorithm is harder to understand without its derivation.

Of course there is TAOCP by Knuth, who added a supplement on probability to the mathematical preliminaries.

Miller's suggestion that programmers should know calculus, statistics and linear algebra is sound, though perhaps pedestrian. There is no end to the mathematics one might apply. The article omits logic and dependent type theory. The Curry-Haskell-Lambek isomorphism theorem on the equivalence between the category of cartesian closed categories and functors and the category of simply-typed lambda calculi and translations is basic in the study of functional programming languages. Ramsey's theorem has been applied to program termination. I myself am interested in applications of game theory-- though I am not giving away my secrets.

<comment><USER14> That algorithm can be de-obfuscated (see my top level post for the intuition). The above is equivalent to calculating a power of a 2x2 matrix, and since matrix multiplication is associative, we can use the squaring trick.

In python (I left out the code for matrix multiplication for brevity) this becomes

      def nth_power_assoc(comp, f, n):
        """Reduce n copies of f with associative operation comp (short for composition, not compare)."""
        if n < 1:
          raise ValueError
        if n == 1:
          return f
        if n % 2 == 1:
          return comp(nth_power_assoc(comp, f, n - 1), f)
        else:
          g = nth_power_assoc(comp, f, n / 2)
          return comp(g, g)

      def fib(n):
        M = ((1, 1), (1, 0))
        M_n = nth_power_assoc(mmul, M, n)
        return M_n[0][0]

<comment><USER13> Yes, of course, that's how the algorithm is derived. I have to say I prefer the "un-de-obfuscated" version, though it wasn't intentionally obfuscated--the code is the way it is in Kaldewaij's derivation from a matrix multiplication.

</comment></comment></comment><comment><USER14> I would say a bigger problem with not knowing the foundations of any field well, is you can fall victim to the errors of the people who do understand it and interpret it for you.

In the case of recursion, I think the author does not go far enough. The problem with recursion is that the fact that a given recursion is O(n) is usually quite opaque, while for a loop it is obvious. This is a much more significant concern than the fact that the change of state from one iteration to the next is implicit, rather than explicit. However, you can avoid both recursion and mutable state by using map and reduce, e.g.

      def fibonacci(n):
        initial_state = (0, 1)
        state_change = lambda s: (s[1], s[0] + s[1])
        final_state = reduce(lambda s, _: state_change(s), xrange(n), initial_state)
        return final_state[0]

The problem arises because even though recursion is relied on heavily in the foundations of mathematics, mathematicians also like to use the weakest axiom system they can in a given situation. Therefore they use set theory when they really have to, and first order arithmetic (which includes recursion) most of the time. But computer programming does not usually even need recursion, and so we shouldn't use it except when we have to.

EDIT: seeing the O(log(n)) solutions, I started to wonder if there is a way to see this without knowing about numbers of the form a + b * sqrt(5). There is, and you can also see it clearly from my solution.

By observing that the way I use reduce is just applying a function n times, you only need to see that the function is a linear transformation on R^2, to see that the problem is just calculating a matrix power. It is trivial to construct the matrix power in log(n) using the usual tricks.

</comment><comment><USER15> Mathematics will take up precisely as much space as it 'needs to' in computer science. The fact that you're arguing for some kind of effort in getting it more space says to me you're as misguided as the people who say it has no place. Just let it happen: If it's needed, it's needed. It's not a matter of principle. It's a matter of practicality.

<comment><USER16> > _Just let it happen: If it 's needed, it's needed. It's not a matter of > principle. It's a matter of practicality._

There's underlying premise behind what you suggest, which is that things turn out optimally by themselves with no need for any human effort and supervision in getting them a certain way.

I don't thing this idea is true to history.

</comment></comment><comment><USER17> Except that the "better" solution posted _isn 't_ better in many programming languages.

For example: Python. It has infinite-precision integers. As such, although his "better" formula starts to diverge from the actual answer at n=71 (308061521170130 versus 308061521170129) while only getting worse from there, the "naive" solution keeps working - albeit with O(n) behavior.

      def fib(n):
         return round((pow(0.5 + 0.5 * pow(5.0, 1/2), n) -
                        pow(0.5 - 0.5 * pow(5.0, 1/2), n)) /
                       pow(5.0, 1/2))
      def fib(n):
          a, b = 0, 1
          for i in range(n):
              a, b = b, a + b
          return a

You can do it with the decimal library as well, but you have to adjust precision on-the-fly to get the required precision.

This is a better solution if you're willing to allow the additional complexity: [http://willwhim.wpengine.com/2013/04/02/a-fibonacci-a-day- fi...](http://willwhim.wpengine.com/2013/04/02/a-fibonacci-a-day-fibonaccin- in-olgn-steps/)

</comment><comment><USER18> He lost me when he claims that "Lisp culture is hostile to mathematics". I mean, has he heard of Maxima? Axiom?

<comment><USER16> I'm not deep in Lisp's culture, but his claim might still very much hold.

The fact that you can name two math-related Lisp projects doesn't mean that those play a big role in "Lisp culture" in general.

How important are Maxima and Axiom for the average Lisper?

Are they pillars of the Lisp culture or outliers? There very well might be a thriving 1% math-loving Lisp community and a 99% who are hostile to math.

Those are the right questions to ask, not if counter-examples merely exist.

<comment><USER19> > The fact that you can name two math-related Lisp projects doesn't mean that > those play a big role in "Lisp culture" in general.

Macsyma for example was one of the first big and very useful Lisp applications which brought down Mainframes and Minicomputers of that time.

Macsyma led to: optimizing compilers with good maths performance in Lisp, the addition of many numeric data types to Lisp (bignums, floats, complex, ratios, ...), Lisp-based workstations, ports of Lisp to many architectures just to run Macsyma, ... Common Lisp then was standardized with an extensive numeric tower - which was reused for other languages like Scheme or Haskell. Even today a free version of Macsyma, called Maxima is used and maintained.

> Are they pillars of the Lisp culture or outliers? There very well might be a > thriving 1% math-loving Lisp community and a 99% who are hostile to math.

Many Lisp users apply mathematics. Traditionally either directly with Mathematics applications (even RPL on the HP calculator stands for Reverse Polish Lisp) or in application domains like AI (signal processing, image processing, machine learning, etc etc.).

<comment><USER10> Lisp's numeric tower is, if anything, a great example of how _not_ to do mathematics. It is just too coarse-grained to be useful: it lumps into a single giant structure every possibly imaginable number. On that basis, you cannot easily constrain yourself to working on a more specific algebraic structure of interest. If you need a total order, you are screwed up: the numeric tower includes complex numbers. If you need to work on a quotient ring, you are screwed up: the numeric tower includes floats.

Haskell's relatively fine-grained distinctions between numeric types is nothing like Lisp's numeric tower.

<comment><USER20> > Haskell's relatively fine-grained distinctions between numeric types is > nothing like Lisp's numeric tower.

Ugh; we're not calling out Haskell's numeric hierarchy as a _good_ example, are we?

(Well, maybe it's a good example of how to handle _numbers_ —although I find the lack of a positive-integer type a pain—but it's certainly not a good example of how to handle general algebraic structures, which is what it seems to pretend to be. What in the world is `sign` doing in there, for example?)

<comment><USER10> > Well, maybe it's a good example of how to handle numbers—although I find the > lack of a positive-integer type a pain—

In another subthread I mentioned the absence of a Semiring type class, which should be a superclass of Ring (Haskell's Num) and provide addition, multiplication and fromNatural. So, yeah, I am not entirely happy with Haskell's standard library either, but the situation in other (general- purpose) programming languages is even worse.

> but it's certainly not a good example of how to handle general algebraic > structures, which is what it seems to pretend to be.

How so? The standard library may be flawed, but the core language is perfectly capable of handling general algebraic structures. The only legitimate point of pain I can see is that a type or tuple of types can only be an instance of a type class in at most one way, for which the solution (admittedly, rather ugly) is to use newtype. A non-ugly solution would be to use something like Standard ML's module system, but in no way it would improve the situation to move closer to Common Lisp.

<comment><USER20> > How so? The standard library may be flawed, but the core language is > perfectly capable of handling general algebraic structures.

I mean algebraic structures in the mathematical sense you mentioned (rings, groups, &c.), not in the computer-science sense of algebraic data types.

<comment><USER10> > I mean algebraic structures in the mathematical sense you mentioned (rings, > groups, &c.)

I know you meant those. And I meant those as well.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> Mathematics is the foundation of Computer Science. The field was created by mathematicians.

This is why all the schools of Computer Science I have ever encountered teach maths to their students.

The truth is, you can be a programmer without understanding the theory of computation, or logic, linear algebra etc.

But you will be a wiser, more competent, flexible programmer if you know the maths. And there are some things you can only do if you know the maths.

</comment><comment><USER22> This was a necessary post

I am appalled by the relative "distance" several programmers have in relation to math

You can sometimes feel the pain when the person that made something _doesn 't know math_ (especially when it involves math, of course).

But the most people know is "how to calculate fibonacci with a recursive function". yawn

Math may be part of the "intelligence" of the business. Getting a CRUD interface unfortunately is usually part of the problem, but several companies have an automated intelligence that is based on a math background (even if you can use an existing library)

<comment><USER2> "I am appalled by the relative "distance" several programmers have in relation to math"

If you're familiar with the adage that people unfamiliar with unix are doomed to reinvent it, poorly, there is an analogy with people unfamiliar with math are doomed to reinvent it, poorly. Even if they insist they "dont use math".

An interesting foil the article did use would be to bounce ProjectEuler off Raymond, Graham, Yegge. I'm a huge fan of project euler.

</comment></comment><comment><USER23> Wait... this guy is trying to defend the usefulness of math with _fibonacci numbers_ ? I wish him luck with that.

There are elements of math all over computer programming. I like the blog of Jake Vanderplas - an astrophysicist at U Washington - who liberally mixes Python and mathematics as applied to his field. jakevdp.github.io/blog/

I just got interested in image processing - one of the branches our bloggers says is specialized. The image processing textbooks use fourier analysis and convolutions to get information out of images. This is probably how instagram works.

Functional programming is another area that using mathematics - in this case category - to build an alternative to object oriented programming. To the train eye tutorials like [http://twitter.github.io/scala_school/](http://twitter.github.io/scala_school/) and books like [http://homotopytypetheory.org/book/](http://homotopytypetheory.org/book/) have something in common.

Mathematics looks irrelevant to coding because mathematicians are not using programming. Math requires thinking very hard about the algorithms they are using. This is time one could spend coding or drinking with friends.

</comment><comment><USER24> The author is fairly obviously suffering from selection bias when claiming that "Lisp programmers tend to be ignorant of applied mathematics."

In the past I've been part of the overlapping communities to some degree, and that wasn't my experience at all.

</comment><comment><USER11> I found this article so stimulating when it first came out that it led to me writing an alternative analysis: [http://lee- phillips.org/lispmath/](http://lee-phillips.org/lispmath/)

<comment><AUTHOR> Now with its own submission: [https://news.ycombinator.com/item?id=6954218](https://news.ycombinator.com/item?id=6954218)

It would be interesting to see a proper discussion of that, too.

</comment></comment><comment><USER25> I agree with him that mathematical literacy should be more emphasized for a "hacker" \-- someone who solves a problem. Obviously, mathematical knowledge comes in handy for any hacker tackling on physical phenomena. That does not mean, however, mathematics is the most important tool at hacker's disposal. I think the author just wanted to say that understanding mathematics helps solving a problem, but he went overboard to make it sound like someone who does not understand mathematics is a second-rate hacker. I don't believe that hackers are sized by mathematical aptitude.

</comment><comment><USER26> There is still tons of drudgery in software engineering (eg web scraping). Which makes me believe there are lots more machine learning revolutions to come. The are all, of course, math led.

<comment><USER27> Well, web scraping can be fun, too! But depends on what you know about the page. If you don't know anything, it's tough. But if you have an idea about how it's structured... (see below)

[http://www.crummy.com/software/BeautifulSoup/bs3/download/2....](http://www.crummy.com/software/BeautifulSoup/bs3/download/2.x/documentation.html)

<comment><USER26> I did a probabilistic approach before:- [http://edinburghhacklab.com/2013/09/probabalistic- scraping-o...](http://edinburghhacklab.com/2013/09/probabalistic-scraping-of- plain-text-tables/) Companies like skyscanner employ loads of people to keep all the scrapers fresh.

</comment></comment></comment><comment><USER28> For this discussion, I think it might be useful to separate two ideas.

First, there is the math you need in order to be able to program. This varies by programming language. (For Haskell, you'd better know some abstract algebra. For C, all you need is simple arithmetic.)

Second, there is the math you need in order to be able to write a particular program. This varies by the program you are trying to write. Since math connects with itself in many ways, you can often solve a problem using unexpected mathematical techniques, so for these purposes, it's best to know a lot of them.

Now, it seems to me that Miller's point might be that the Lisp (or perhaps functional programming) community has to focus more on the math knowledge they need in order to be able to write programs in their language. This leaves them less room for learning the broader techniques that would make them more able to write particular programs.

(Note well: I am not necessarily agreeing with Miller. I am merely stating what I think he is trying to say. In particular, since math areas relate to each other, knowing abstract algebra well may in fact turn out to be a help on the broader math, rather than a hindrance. To some degree, it depends on whether the average member of the "Lisp community" learns the math needed for functional programming, and says "Cool, that was useful, I think I'll learn some more math", or whether they say, "That used up all the time I have to burn learning math - I guess statistics (or whatever) will have to wait for next week/year/decade".)

<comment><USER29> > _For C, all you need is simple arithmetic._

I would say _C and its standard library_. For example, you have to convert an element of argv that contains only the numerical characters from a char[] to an int. This requires a knowledge of power series in order to perform this confidently. If you have access to stdlib.h, all you do is use strtol() or one of its little brothers.

</comment></comment><comment><USER30> > Lisp programmers tend to be ignorant of applied mathematics.

As a Lisp programmer and a mathematician myself I must disagree. I spent years working on mathematical applications using Lisp dialects, initially drawing inspiration from computer algebra systems like Axiom, Derive, Maxima, and Reduce and later drawing inspiration from ontologies and knowledge bases like SUMO and Cyc. All of these systems are heavily math based and they are based upon Lisp.

</comment><comment><USER19> > Lisp programmers tend to be ignorant of applied mathematics.

Please don't get your knowledge from some more or less useful bloggers.

Raymond a Lisp user? What had he done in Lisp? Yegge? Mostly an Emacs user with Emacs Lisp usage. Unfortunately his Lisp knowledge mostly ends with Emacs Lisp. Yegge would not recognize a Lisp, even if you hit him with Lisp Machine Manual over the head. Only Graham was and is a real Lisp user and hacker. OTOH there are too many Lisp and mathematics users.

Actually if there is a language with Mathematics background, then it is Lisp.

People like McCarthy, Minsky, Sussman are/were mathematicians.

The MIT Lisp hacker culture had lots of mathematicians from Joel Moses to Bill Gosper.

Lisp spawned symbolic mathematics which has been used in all kinds of areas with thousands of applications.

Macsyma, Axiom, Reduce, Derive and several other Lisp written maths applications have been used in many applications. The whole AI domain is based on all kinds of diverse mathematics written in Lisp: logic, statistics, probability theory, neural networks, signal processing, ...

Even students who are reading SICP are usually complaining that most of the examples are math related.

Let's see some actual Lisp applications:

* [http://www.lispworks.com/success-stories/netfonds-primetrade...](http://www.lispworks.com/success-stories/netfonds-primetrader.html) Real Time Stock trading. Applied maths.

* [http://www.lispworks.com/success-stories/inspiredata.html](http://www.lispworks.com/success-stories/inspiredata.html) Data visualization. Applied maths.

* [http://www.lispworks.com/success-stories/brs-mle.html](http://www.lispworks.com/success-stories/brs-mle.html) Machine Learning. Applied Maths

* [http://www.lispworks.com/success-stories/memetrics-xos.html](http://www.lispworks.com/success-stories/memetrics-xos.html) Marketing Analysis: Applied Maths.

* [http://www.lispworks.com/success-stories/raytheon-siglab.htm...](http://www.lispworks.com/success-stories/raytheon-siglab.html) Signal processing: Applied Maths.

* [http://www.franz.com/success/customer_apps/mechanical_cad/mt...](http://www.franz.com/success/customer_apps/mechanical_cad/mtu.lhtml)

      Iseogeometric Analysis of aircraft engines. Applied Maths.

* [http://www.franz.com/success/customer_apps/data_mining/pepit...](http://www.franz.com/success/customer_apps/data_mining/pepite-DM.lhtml)

      Predictive analysis: applied maths.

and many many others.

It's just that these Lisp users tend to publish their works not as blog posts, but in domain-specific journals and/or as applications.

<comment><USER31> Looks like he was wrong on the Lisp front then. But actually all your examples kind of strengthen one of the points of the article (for me). That is that of we want to get things done, make a difference, then we should be focusing on applied maths and not the lambda calculus and category theory. Only a very few people are needed to focus on those things. For the rest of us a focus on those things means taking our eye off the ball to the detriment of what we work on (as an industry).

I like your point about the blog posts. If you want to find out how to really make things they're often not where it's at.

<comment><USER32> I couldn't disagree more strongly. I think systems built on the lambda calculus are building nothing less than a new form of constructive mathematics, taking it squarely out of philosophy and into the realm of practicality. Theorem provers will only get stronger, and they will change a lot about how mathematics is done.

I do finite element methods myself, and Rust has helped a lot in writing allocation-free code (meaning allocation-up-front really), and it has benefited a lot from functional/induction-centric languages.

</comment></comment></comment><comment><USER29> > _But I think that most programmers who are serious about what they do should > know calculus (the real kind), linear algebra, and statistics._

What does he mean by calculus of the real kind? I parsed that as referring to calculus of real variables, as opposed to complex analysis. One of the reasons that complex algebra is taught in colleges and universities is that real and complex algebra are related. Gerolamo Cardano ran into it around 450 odd years ago, so it isn't exactly an obscure area of maths.

<comment><USER28> I believe that he meant real and/or complex calculus, as opposed to lambda calculus.

</comment></comment><comment><USER19> > But rarely in these discussions will you find relevant mathematical > considerations. If the goal is to compute a Fibonacci number or a factorial, > the proper solution is not a recursive function, but rather knowledge of > mathematics.

THE introduction to the Lisp culture, SICP, discusses exactly this on page 35 (first edition).

See also:

[http://mitpress.mit.edu/sicp/full-text/book/book- Z-H-11.html...](http://mitpress.mit.edu/sicp/full-text/book/book- Z-H-11.html#%_sec_1.2.2)

</comment><comment><USER33> One cannot frame the position of someone on a topic from a quotation or two, and then have the ironic audacity of calling that person myopic.

</comment><comment><USER34> No, the OP mostly fails to 'get it'.

First, beating up on Lisp is next to irrelevant to the role, potential or current, of math in business or computing.

Second, the OP fails to make a solid case for the power of math to make a powerful, valuable contribution to the solution of real problems for which we do believe we need software. In particular, in spite of the claim of the OP, I doubt that linear programming did much if anything to defeat Germany in WWII; why? Because both the Kantorovich Nobel prize for his work on the 'transhipment' problem and Dantzig's work on his simplex algorithm came after WWII was over.

Third, the OPs recommendation for math for applications is too meager; what he listed is all good, but we need more to be as successful as we should wish.

Here's a simple description of the potential of math for 'information technology' (IT) business, i.e., the money making kind: We have a lot of input data and want to process it, that is, manipulate it, with software to generate output data that is valuable in business, the money making kind.

So, a question is how to process the data? We want powerful means that will convert the input data to valuable output data; did I mention valuable in the sense of business, the money making kind?

Well, the traditional means in business IT has been to take some work that is well understood just as manual work, that is, in principle could be done manually. Then take those means and write software to do the corresponding data manipulations. There nearly always the means were just intuitive, obvious.

So, what IT did with the input data was nearly always just intuitive, i.e., what was well understood from manual efforts. Some of the big examples were bookkeeping, accounting, payroll, order entry, inventory control, materials requirements planning (MRP), customer relationship management (CRM), airline and hotel reservations. Here, again, we have means well understood manually, and IT wrote software to do essentially the same thing.

So, we are taking input data and manipulating it to get valuable output data. So, for more valuable output data, we want more powerful means of manipulating the data.

So, where do we find the more powerful means? E.g., we are flying airplanes and want to get the work done, that is, meet the published schedule, but at minimum cost. Turns out, can do much better, save maybe 15% of direct operating costs, where just the fuel savings alone are finger lick'n good, with integer linear programming set partitioning, i.e., quite a lot of applied math, including one of the early and main leads to the question of P versus NP.

Another example? Okay, how to climb, cruise, and descend an airplane for minimum cost within a given time window. There are various approaches, but a start is deterministic optimal control theory, which is some quite good and advanced applied math.

E.g., once the FedEx Board wanted some revenue projections. A mess up had the representatives of crucial Board Member General Dynamics (GD) pack their bags and get plane reservations back to TX, which would have killed FedEx. Here's what pleased the GD guys and saved FedEx: We know the present revenue, and we know the revenue at our planned target market. So, the question is how to interpolate between these two. So, let t denote time, say, in days, y(t) the revenue at time t, and b the revenue per day when are serving all the planned market. Then make a 'virality' assumption, that is, that the rate of growth in revenue is directly proportional to (a) the number of current customers talking and (b) the number of potential customers listening (or the corresponding revenue). With y'(t) the calculus first derivative of y(t), that is, y'(t) is the rate of growth in revenue, in dollars per day, we have that there exists some constant k so that

         y'(t) = k y(t) ( b - y(t) )

There is a closed form solution via freshman calculus, and the result is a lazy S curve that rises asymptotically to the full market revenue b. So, with this bit of math, there is only one guesstimate, k. So, draw some curves for various values of k and from other considerations pick a reasonable value of k. Or estimate k from the data on the growth so far. Done. The GD guys stayed, and FedEx was saved. True story.

There are many more examples, and many more to be found and executed.

Net, the role of the math is to find more powerful means of processing the input data and, thus, yield more valuable output data, valuable in the sense of business, the money making kind.

For the relevant math, there is nearly no limit. Fortran, Lisp, C, recursion, etc. have essentially nothing to do with the value or role of the math. The math is before the software development, leads to telling the programmers what to program, that is, what data manipulations to do. The data manipulations can be programmed in nearly any programming language although some languages are much easier for the programmer than others.</comment>


Show HN: I couldn't find a Mac TODO in my Menubar, so I made it - <AUTHOR> https://www.mactodo.app/?ref=hn <comment><USER2> I had this idea one week ago, you beat me to it. Congratulation on the release!

</comment><comment><USER3> I'm not sure you looked that hard...</comment>


September roundup of Azure and AWS releases - <AUTHOR> https://n4stack.io/2018/10/02/cloudstackd-september-newsletter/ <comment><AUTHOR> Plenty of releases from MS Ignite - AWS saving their bevy of updates or Re:invent.</comment>


Document as you go - <AUTHOR> http://joerussbowman.tumblr.com/post/9039099142/document-as-you-go

<comment><USER2> "pretend the next guy is a psycho path with a baseball bat who knows where you live"

That'll helps to motivate you to write good documentation. And interestingly, many times it may be you referring to your old documentation.

There's a parallel here with programming, writing good comments, documentation, and unit tests.

Nice post</comment>


Yahoo's Recently Acquired Task Tracking Service Astrid Will Go Dark On August 5 - <AUTHOR> http://techcrunch.com/2013/07/06/astrid-goes-dark-august-5-goodnight-sweet-squid/ <comment><USER2> This is infuriating. Typical of Yahoo's ham-fisted, clobber-them-over-the- head-with-an-extremely-blunt-instrument approach to things -- 'acquihire' a company that's doing very well and give its users 90 days ( _90 days? really?_ ) to get the eff out.

If there's someone at Yahoo on here, explain this to me - Do they really do this for the engineering talent? To get the makers of Astrid to stop working on the thing they built, and make them work on Yahoo! Mail, or something like that? Because a lot of those services seem way too far behind the curve to start working on them now.

On the other hand, if they had just made Astrid into "Yahoo! Tasks" I (and thousands of other users) would have just kept it on my phone and browser. Yahoo is missing out on a decent opportunity here.

<comment><USER3> I worked on the Facebook team that did acquihires for awhile and yes, this is basically it. Hire kid doing awesome, innovative new photo startup, have him build your photos feature and then watch them quit the second they vest, repeat. Does it happen? Yes. Is it a good idea? I can't imagine it is.

</comment></comment><comment><USER4> This is a real shame. I have used astrid since the original Motorola Droid was the cool new phone. I purchased the add-ons. It was a great piece of software, and a useful web service that worked like I wanted. And it had no recurring service fees.

Now I have to find a new program. At least they allow me to export my data.

But I definitely dislike when acquired companies dump their product.

The sad thing is, if Yahoo had a replacement with one click move ready, I would be happy to move. But I am certainly not going to transition back to yahoo if I find a service that I like.

<comment><USER5> This is really a strange move. Yahoo have acquired a company with so many users, and now they just sending them away.

<comment><USER6> from what little I understand about these acquisitions, Yahoo was buying a well-oiled, productive team, not a product or customers.

</comment></comment></comment><comment><USER7> I switched from Astrid to Due Today (Android) synced with ToodleDo.com a long while back. It's solid and has great widget selections. It's much more powerful than Astrid, Wunderlist, Any.do, etc and lets you do a full GTD setup if you want. You can also just ignore the more advanced bits if they don't interest you. It may be overkill for some folks, but it works well for me.

</comment><comment><USER8> Today I tried wunderlist and any.do as well. After two hours of playing with them I'll stick to wunderlist. It is more like Astrid, I really don't like the gesture based stuffs in the any.do. Not to mention that wunderlist has a usable website, where any.do only has a chrome extension.

</comment><comment><USER9> I just downloaded Astrid for the first time about 2 months ago. It's the only to-do app that I've consistently used. It's a shame to have received an email this morning about them closing their doors.

</comment><comment><USER10> Astrid is recommeding migrating to Wrike, Wunderlist, Sandglaz or Any.Do. Can people comment here on the relative merits of these or other apps?

<comment><USER11> I've used Any.Do. It's a fairly sparse UI, and somewhat intuitive (if not immediately obvious). That said, I also use OmniFocus, so for what I use it for, I didn't want it to be full-featured.

</comment></comment><comment><USER12> I loved Astrid. Deleted it as soon as I read this article and now I hate Yahoo just a little bit more.

</comment><comment><USER13> We are always talking about pivoting and fail fast so why get upset when Yahoo! starts practicing what we are preaching.

<comment><USER14> "failing fast" \- if they were failing why did yahoo buy them? they weren't failing - they succeeded - why pivot?

pivoting and failing fast are ways to quickly deal with finding a working operations model. It worked so well yahoo bought them. Then closed it down.

???

<comment><USER15> Is 4 million users a financially viable long term business? How much would you pay annually for Astrid? Would you keep using it if they added a bunch of advertisements to the free edition? A single app isn't a company in the long run.

The decisions around evolving or shutting down a product / service is more complicated than your comment suggests.

<comment><USER16> I wonder if people would pay $10 a year. Because then that's potentially $40m a year income.</comment></comment></comment></comment>


Federal Court: The Fourth Amendment Does Not Protect Your Home Computer - <AUTHOR> https://www.eff.org/deeplinks/2016/06/federal-court-fourth-amendment-does-not-protect-your-home-computer <comment><USER3> At what point are there consequences for bad decisions by judges? At what point are there consequences for bad decisions by prosecutors?

At some point, judges and prosecutors have to be held account for decisions that are clearly unconstitutional or against the law.

Where are the checks for these institutions? Appeals courts and whatever bodies oversee prosecutors is not enough.

<comment><USER4> _" Where are the checks for these institutions?"_

The Constitution allows federal judges to be impeached by Congress:

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

<comment><USER3> That's not working out.

</comment></comment></comment><comment><USER5> From the decision (linked in the EFF article):

 _For example, hacking is much more prevalent now than it was even nine years ago, and the rise of computer hacking via the Internet has changed the public 's reasonable expectations of privacy. ... Now, it seems unreasonable to think that a computer connected to the Web is immune from invasion. Indeed, the opposite holds true: in today's digital world, it appears to be a virtual certainty that computers accessing the Internet can - and eventually will - <USER2> hacked._

That's what you get when you combine the doctrine of "expectation of privacy" (which essentially confounds Is and Ought) and the insecurity of today's software.

<comment><USER6> Yeah, that's crazy. "In Crimes ville, houses are routinely broken into and looted, so the Fourth Amendment doesn't apply in Crimesville"

</comment></comment><comment><USER7> what does that do for the unauthorized access laws?

<comment><USER4> The question decided here was whether certain government actions violated the Fourth Amendment (which talks about the government needing a warrant to conduct a search). That has nothing to do with a non-government actor gaining unauthorized access to a computer system - that's still illegal.

<comment><USER7> I would think "no expectation of privacy" implies that a computer is a public space. Wouldn't that make it difficult to say that an access was unauthorized?

<comment><USER4> The decision talks about the expectations of privacy of _criminal defendants_ , and weighs the interests of privacy against the interests of law enforcement.

The information that that the government malware obtained in this case was metadata, like IP addresses. The decision cites precedents which say that since the user's IP address is already shared with third parties (e.g., ISPs and any web site that the person goes to), it's not private information. Presumably, once the government got the IP addresses, it correlated them with ISPs' records and obtained warrants to physically seize the computers and search them for child porn.

In my opinion this is an overreach on the part of the government, but it doesn't claim that a private computer is a public space, or even that the government can read files on people's computers without a warrant.</comment></comment></comment></comment>


Advanced Mesos Course - <AUTHOR> http://open.mesosphere.com/intro-course/ <comment><USER2> I would be very interested in hearing about anyone's experience managing mesosphere dcos compared to kubernetes. My company is exploring our options in the container orchestration space and have been testing out kubernetes on aws in the past week. Getting started with kubernetes was pretty easy, but there seems to be so much magic behind kube-up.sh and very little documentation about what exactly it does. We have concerns about troubleshooting any issues that come up in the future since we don't really understand what all is going on behind the kube-up curtain.

<comment><USER3> I'm (probably) the primary maintainer of kube-up on AWS. kube-up does a lot of tedious AWS configuration that I/we haven't documented. But there's really no magic involved; it is standard AWS, except for the fact that we use VPC alternative routing to assign each node a private /24 CIDR. There's a lot of tagging of resources as well, primarily so that we can find them later to delete them as part of kube-down, but also to support multiple kubernetes clusters in a single VPC.

Now that we are post-v1 I'm certainly hoping to replace kube-up with something more readable and maintainable (or at least start replacing it). Hopefully we'll find something which better promotes reuse between the different clouds, and hopefully we can document it a bit better as well. The split between kube- up and Salt is also not exactly elegant.

If there are any particular questions you have about how the magic happens, I'd be happy to try to answer them (or feel free to file issues and tag me on github); this will help me make the docs better.

<comment><USER2> Thanks for the response justin. I sent you an email with a couple comments to the address in your profile. Assuming my team decides to go with k8s, I'd be interested in helping create some of that documentation.</comment></comment></comment>


This Is How China Succeeded Stopping the Virus - <AUTHOR> https://www.linkedin.com/content-guest/article/you-still-dont-understand-how-china-succeeded-stopping-mario-cavolo/ <comment><USER2> This is true, sort of, but unfortunately only a part of the story. Wuhan (and its province) was treated very differently than other provinces. Tests were actually moved to less hard hit provinces, away from Wuhan, since hard lock down long term was used for Hubei/Wuhan. They didn't really need tests, therefore. But the biggest difference - which shows up in a youtube animated chinese govt film - zero trust, zero escape if you were a contact. You were detained (in a "hospital" with no treatments available)even if you were a contact who tested negative; for two weeks. No self-isolation, citizens were never trusted to behave. It says lots about our press that none of this even gets discussed during the media's wall to wall covid coverage. Who cares what worked. Who cares that prone position worked in China, either.

<comment><USER3> That's how it should be to be honest. In critical situation people cannot be trusted and procedures must be enforced. Even if most people would follow the rules, the issue is that a minority always wouldn't, with devastating consequences in these circumstances.

I also believe that anyone arriving in China now is kept in isolation in a hotel for 2 weeks whether they like it or not. No "please self-isolate", just 'soft' detention.</comment></comment>


In Defense of Coffeescript - <AUTHOR> http://adambard.com/blog/in-defense-of-coffeescript/

<comment><USER2> Good article, but I wanted to point out that the looping and comprehensions stuff isn't really much different with ES5's array methods.

The first example can actually be written as the much more readable:

      myArray.forEach(function (item) {
        // do something with item
      });

While the second example can be written as:

      var myNewArray = myArray.map(modify);</comment>


US Army picks up UK-made hoverbike for troop transport, surveillance - <AUTHOR> http://arstechnica.com/cars/2015/06/us-army-picks-up-uk-made-hoverbike-for-troop-transport-logistics-surveillance/

<comment><USER2> I don't see that a battery-powered device is going to have sufficient energy density and turn-around time for military use. I suppose one option would be to have a gas or kerosene powered generator instead of batteries.</comment>


Map: How much $100 is really worth in every state - <AUTHOR> http://www.washingtonpost.com/blogs/govbeat/wp/2015/07/08/map-how-much-100-is-really-worth-in-every-state-2/

<comment><USER2> What I've also noticed is that pricing at stores is 'adjusted' to the market in a particular area. For example, the cost of a set of tires for your car varies by zip code. If you search for tires, a lot of store websites ask for your zip code before presenting a price. If one has a second home in a low cost of living area like the South or the Midwest, and a main residence in a High Cost of living area such as the east or west coast, a lot of money can be saved by purchasing goods in at your low cost residence, then moving them to your high cost residence.

<comment><USER3> This really makes it difficult to figure out what something is worth. You can often charge a lot more for something in a richer neighborhood. [http://steampunkworkshop.com/warehouse-13-18/](http://steampunkworkshop.com/warehouse-13-18/)</comment></comment>


Superbrothers: Sword & Sworcery sales statistics - <AUTHOR> http://www.capybaragames.com/2013/07/a-sworcery-infographic

<comment><USER2> The big distorting effect here was that it was available for a long time on iOS before other platforms -- if you wanted the game, initially you had no choice other than iOS. And despite it being significantly more enjoyable on a touch screen, it was ported to Android last out of all the platforms supported.

Anyone know of a major game that had simultaneous releases on both Android and iOS at the same price?

 _e:_ Oh, another factor: it was available through the Humble Bundle on Android _before_ it was in the Play store.

I guess I should also mention that it's a pretty fun game. :)

<comment><USER3> That plus the fact that Android tablets aren't really used and the game is much better on a tablet than a phone.

<comment><USER2> Well no, that's exactly what you _want_ to find out from data like this. :)

(Well, what I was curious about, anyway.)

</comment></comment></comment><comment><USER4> If you guys are interested in more data, here's the sales stats for our game Dustforce: [http://hitboxteam.com/dustforce-sales- figures](http://hitboxteam.com/dustforce-sales-figures)

It's a non-mobile game, and has also been on the Humble Bundle. The article has a lot of details like dollar amounts and sales over time.

<comment><USER5> Also, your game didn't spam people constantly to tweet their progress or have the high amount of pretentiousness. Though, I'm sad you never implemented the level boss battles into the game.

<comment><USER6> #sworcery was pretentious? It seemed to me to be a game that took itself very un-seriously in some ways. I can't remember them, but I do recall laughing hard at some of the things that happened even in the first few hours of play.

<comment><USER7> I think jmomo is referring to the way the cigar-smoking businessman introduces the game as a "psychosocial audiovisual experiment" or something with pretentious wording like that. I personally wasn't bothered by that because I didn't get the idea that the developers were making the claim seriously.

</comment></comment></comment></comment><comment><USER8> Honestly I can think of way more interesting ways to visualize the data than through pie charts. Perhaps they fear showing too much data, but it actually seems quite poorly done with so much interesting data.

I'd be really interested to learn what sort of trajectory the humble bundle had and to what degree each event had a short or long-term impact. I'd be interested to compare profit to the number of units over time.

</comment><comment><USER9> As much as it might put a dampener on the whole "look how many sales we made" thing, I'd be curious to see any piracy statistics if they had any.

<comment><USER10> With the amount of money this small studio made, piracy was most likely a non- issue, especially considering they made the game _free_ at one point.

</comment></comment><comment><USER11> I am amazed that someone somewhere is still using cassette tape. Literally the worst format for music ever.

And I speak as someone who enjoys using old junk.

<comment><USER12> It's hip with the kids as a bizarre nostalgia item. Can't understand it myself. At shows, you'll often see bands selling cassette tapes with download codes, sometimes as their sole physical media option. It's become way more common in the last five or six years outside of the punk scene. As technologists, it's useful for us to remember that people don't always choose the most technically sound solution.

</comment></comment><comment><USER13> I wonder if the other games on Humble Bundle 5 have similar sales stats between customers paying full price on iOS and the sale price on Google Play.

<comment><USER14> That's a great point.

Since you can't get iOS games in the humble bundles, that demographic of buyer isn't represented...

</comment></comment><comment><USER15> I came looking for a Linux/Windows/OSX breakdown. I was disappointed.

<comment><USER2> Desktop sales were mostly through Steam and the HumbleBundle, which both include all platforms.

The bundle does track total money spent per platform (you can specify which you want your purchase to count towards): [http://support.humblebundle.com/customer/portal/articles/281...](http://support.humblebundle.com/customer/portal/articles/281031-prior- bundle-statisticsd)

</comment></comment><comment><USER16> I'm really surprised that only 1% of sales is from the Mac App store. A good wake up call for me, certainly. Now I want to see a game that is on iOS and XBox live, and the differences in revenue.

</comment><comment><USER17> Pretty interesting statistics. The one that caught my eye was that Mac App Store accounted for 1% of revenue. That seems low, but damning enough to discourage Mac game development in general? SBSS was out on iOS for a good while (it seemed) before the Mac port...it had a huge push of publicity and rave reviews, so I would suspect that everyone who was conceivably interested in the game got it for iOS. And the universe of people who have a Mac but not either an iPhone, iPod, or iPad, must be pretty small.

The Android numbers don't seem that different compared to other lopsided iOS vs Android sales statistics.

<comment><USER18> My guess is that Mac users got it through Steam, not the Mac store.

<comment><USER19> Actually, most Mac users likely got it through the various Humble Bundles which all included a Mac version. I picked it up through HIB V even though I had the iOS version because it included several other fantastic games that I did not have.

</comment></comment></comment><comment><USER20> I'm glad to see the high usage of Bandcamp.

</comment><comment><USER21> Too bad that the game is hideously boring ...

<comment><USER22> not so much, it is indeed a strange game but i liked it, mostly for its style, one of the better game of the humble bundles :)

<comment><USER21> I didn't finish it. I lost interest ...

</comment></comment></comment><comment><USER23> Why does my Mac copy keep trying to update itself for Retina?</comment>