Why I Became an Entrepreneur (the Long Story) - <AUTHOR> http://www.metamorphblog.com/2010/08/why-i-became-an-entrepreneur-the-long-story.html

<comment><USER2> _I had never before felt bounded by social class, by economics, by mother fucking money.

I remember when it hit home: I was taking a graduate seminar on Afghan Politics. After class one day, I struck up conversation with a girl sitting next to me. She asked about my background. "I used to fight forest fires," I explained, thinking I was so cool.

Her forehead crinkled. She stopped for a second, then responded: "Oh. I didn't know they let people like that, you know, in here."_

Wonderful. And Columbia has a $6 billion endowment[1] on which they pay absolutely NO TAX. They also recently used eminent domain to seize a portion of Harlem.[2] Columbia, Harvard, and every other elitist, non-profit-for-tax- purposes-only private university should have its tax exempt status revoked.

1) [http://colleges.usnews.rankingsandreviews.com/best- colleges/...](http://colleges.usnews.rankingsandreviews.com/best-colleges/new- york-ny/columbia-university-2707)

2) <http://news.google.com/news/search?q=columbia+eminent+domain>

<comment><USER3> I actually work for Columbia and my brother graduated from their engineering school, SEAS. Now I think it's called Fu, no joke. Yes Columbia is elitist, like the other Ivys, but they do let a number of poor people in (like my brother) and give them just enough money to make it affordable with loans. Could they do better, ya I think so. But eh, what are you gonna do about it? In reality, if you are willing to become indebted to student loans and have decent grades/test scores you can get into a number of elitist institutions of higher education that will give you some sort of hardship discount.

In regards to your second point, I also happen to live just a few blocks from where that whole eminent domain thing took place. Believe me, it's quite blighted but has been on the up and up in the last 5 years or so. The handful of people who held out were operating storage facilities, gas stations and mechanics shops. One of the property owners is himself a developer developing property in Westchester. Every single one of them were offered a considerable amount of money to relocate. I've seen the plans, I've been to the meetings. Columbia will bring a ton of jobs and money to the neighborhood many, many times more than the current state of affairs. Not only that but I believe they will also be opening a grade school of some sort open to children from the area. Oh, the campus will also be focused on science and technology. You know, things that have a better ROI for society than storage bins.

<comment><USER4> > One of the property owners is himself a developer developing property in > Westchester.

So? (Even if his projects also involve eminent domain that wouldn't make Columbia's actions acceptable.)

I realize that you'd like an argument, but this really is indefensible.

> Every single one of them were offered a considerable amount of money to > relocate.

And yet, they refused. So Columbia is resorting to thuggery.

> Columbia will bring a ton of jobs and money to the neighborhood many, many > times more than the current state of affairs.

In other words, Columbia could pay more.

> Oh, the campus will also be focused on science and technology. You know, > things that have a better ROI for society than storage bins.

There are lots of places where they could build. And no, Columbia's convenience really doesn't matter.

There's always a good excuse to hose someone.

<comment><USER5> I don't know the specifics of the case in question, but in general it should be considered legal and ethical to repurpose blighted property, whereas you seem to think it isn't. Well, it's been a fact of American law for a long, long time.

If an owner allows valuable property to fall into blight, he is not fulfilling his very minimal civic duties as a property owner.

<comment><USER4> > I don't know the specifics of the case in question, but in general it should > be considered legal and ethical to repurpose blighted property, whereas you > seem to think it isn't.

You're assuming that blight means "poor condition" or somesuch. The problem is that the operating definition is "property owned by the politically weak that is desired by the politically strong". That's how blight condemnations actually work.

Note that the person trying to defend Columbia says that the property was in poor shape but the current owners have fixed that. His argument is that they're engaged in the "wrong" sorts of biz, not that it's actually in disrepair.

Their reward for fixing actual blight is to have their property taken away....

> Well, it's been a fact of American law for a long, long time.

Since when does that make it good?

</comment></comment></comment></comment></comment><comment><USER6> I studied at Columbia and I have to say his tales of class snobbery are a bit over the top. Me and a lot of my friends were poor and did not feel ostracized about it.

And although there were some rich kids and Saudi heiresses in class, the displays of wealth were more likely to be subject of jokes than the other way around. I remember people made fun of one girl because she took a cab to school every day (we would usually walk to school or use the subway).

In general the students in my class considered themselves progressive and enlightened so any snobbery towards poor people was very unlikely to be popular.

I think the writer had some bad luck in that he joined a program witch was considered to be a cash cow for the university so he ended up with a lot of rich kids. Although now that I think of it, my program was also to be considered a bit of a cash cow.

If there is anything wrong with the way the school treated him, it is the fact that no-one pulled him aside to tell him something like "hey kid, this program is for rich kids and financial aid will be harder to come by, so try to find something else."

</comment><comment><USER7> The line that seemed most weird:

>> In 2007, I acquired a girlfriend

<comment><USER8> And in 2008 he disregarded females and acquired currency.

I believe that's how the meme goes.

</comment></comment><comment><USER9> This is the most incredibly self-indulgent piece I've read all month.

<comment><USER10> I hate to judge a book by its cover, but I could've told you that just by looking at his haircut.

<comment><USER11> His response to his haircut: [http://www.metamorphblog.com/2010/06/my-mohawk- and-being-the...](http://www.metamorphblog.com/2010/06/my-mohawk-and-being- the-speakertext-ceo.html)

"Simply, I decided that I was going to be a high-profile person and create a high-profile company with a very strong and meaningful brand.The mohawk, the blog, the plentiful f-bombs, etc. are all just a part of who I am as a person, but I also choose to accentuate that part of my personality for strategic reasons."

<comment><USER10> Yah, what kind of decision is it to become a 'high-profile person'?

</comment></comment></comment></comment><comment><USER12> As impressive as the story is - it sounds very typically American. A boring American has the normal story you know. An interesting American has this story or some variation of it - maybe immigrant parents, maybe poor childhood, maybe doing something social, maybe struggling to get into college, maybe rich friends one is jealous of. Lots of American movies I'm watched have this story.

Everyones story has a narrative that is a lot more interesting, but all the magazine reading and the movie watching you do forces your narrative into a typical down-up-down-up scheme, because it seems like that's the right story to tell.

There is that story of those African boys who ran across the savannah and some of their friends were eaten by lions. that is a non-traditional and interesting narrative. Being top in Columbia is just about standard for an american narrative.

I'm not hating on the story - but I just think that it's not that different from many stories I've read.

<comment><USER13> >I'm not hating on the story

I think it's not the flow of the narrative as much as it is the "drama for the sake of it." I mean, the way it reads, Matt seems like the guy who came up from nothing, on food stamps and government cheese. Not some son of a professor.

I mean, I don't care where you come from, but most people mow their own lawns. That ain't hardship, in my opinion. And, his stories of being dejected for being not rich was kinda cloying, especially for someone who has done as his dad has and clawed his way out from a lower-middle working class background in a school where most people didn't mow their lawns because they didn't _have_ lawns.

That said, he did do forest fireman work. And, he was a Paramedic. That's pretty cool. In other words, it's the choices he's made that's semi- interesting, not that he was forced down those paths he chose. He has a rebellious streak, and it's discordant with his abilities and drive for achievement in school and entrepreneurship. And, I think the takeaway (at least in his eyes) is he's not some stuff-shirt stiff when he easily could be given his abilities and work ethic.

<comment><USER14> That is a great point. Just reading how he framed his life story, he sounded like a kid who was given so many opportunities to succeed and turned them down because he was spoiled. But if you look at the actual things he's done not through his words, he tried things that very few people would attempt. Actions, not words?

</comment></comment></comment><comment><USER15> I have been an entrepreneur for over fifteen years, with one mild success and a few spectacular failures. And I must say I enjoy this article more than the rest of the articles combined in terms of explaining why entrepreneurs become entrepreneurs. The reason has nothing to do with hardship, wealth or upbringing. Anyone can become an entrepreneur. You must first possess a demon deep inside that needs to get out. The author clearly has one and my own experience is that entrepreneurship is his only cure. Good luck.

</comment><comment><USER16> don't give up on journalism, it's only dead to those who aren't great writers, and this guy is a great writer.

</comment><comment><USER17> Good read.

<comment><USER18> Definitely, I like the way it is written. I don't know how to describe it, but it feels like an entrepreneur wrote it. It has a feel to it.

</comment></comment><comment><USER11> Very impressive story. Would love to hear others' stories on why / how they became entrepreneurs.

</comment><comment><USER19> I think Matt would have made an _fucking_ great investment banker. ;)</comment>


Media barons threaten to spike UK.gov's audacious copyright grab - <AUTHOR> http://www.theregister.co.uk/2013/01/15/con_copyright_judicial_review/ <comment><USER2> Anyone got a link to the other side of this story? I'm happy to believe that the Tory/Liberal coalition is doing something stupid, or even something evil for the benefit of big business, but ironically this overwrought and fact-free propaganda piece in favour of expansive copyright (which is standard MO for Orlowski) actually makes me think they may be onto something good if it annoys him so much.

<comment><USER2> Doing some Googling of my own, I found this article from the government dept. responsible which (amusingly) calls out another Register article on this topic by the same author as being inaccurate.

From reading this side of things the orphan works idea seems like a bit of a damp squib to me but it's certainly got some folks very worked up in the comment sections of these blogs. Apparently it's all a conspiracy to let Google steal your photos or indeed to "nationalise a large part of the creative sector".

[http://discuss.bis.gov.uk/enterprise- bill/2012/07/30/30-july...](http://discuss.bis.gov.uk/enterprise- bill/2012/07/30/30-july-uk-copyright-accessing-orphan-works/)

[http://blogs.bis.gov.uk/blog/2012/08/02/uk-copyright-and- orp...](http://blogs.bis.gov.uk/blog/2012/08/02/uk-copyright-and-orphan-works- the-facts/)</comment></comment>


Time Warner Cable Claims Netflix Isn't Playing Fair - <AUTHOR> http://www.huffingtonpost.com/2013/01/17/time-warner-cable-netflix_n_2495826.html

<comment><USER2> This is just ridiculous. Every company makes decisions about what features they provide to users based on many different factors. Netflix isn't saying you can use their service with their ISP just that they've made a decision to not support these features with them.</comment>


Learn to Code: 13 Tips That Could Save You Years of Effort - <AUTHOR> https://medium.com/javascript-scene/learn-to-code-13-tips-that-could-save-you-years-of-effort-92ce799a3e1f <comment><USER2> Great tips! I did a lot of this myself in my journey to where I am today, and still do in fact.

Never stop learning!</comment>


How to assess the eCommerce value of any SEO keyword - <AUTHOR> http://simontorring.com/seo-keyword-value/

<comment><USER2> What are your thoughts on automating and scaling the process that's been described? We want to build it into www.knowmyrankings.com in the next few weeks.

-Mike @ SutroReasearch

<comment><USER3> Hey Mike,

I love scaling and automating, so my current setup is an Excel keyword opportunity model with the various business metrics described (CR, AOV etc) along with my basic costs for optimizing each keyword or landing page (x dollars for writing, x dollars for link acquisition giveaways etc). The model returns an ROI for the first month right away, so I normally just pull 50-100 keywords through the model each time I have time to take on new optimization campaigns and pick the most obvious opportunities.

If you are feeling a bit more ambitious an idea could be to combine this with some sort of relative score of competitiveness of the current SERP for each keyword, which could make the decision process even easier. Nick Eubanks of www.seonick.com has written about this before, however with other metrics than I use myself.

Feel free to reach out on firstname.lastname@example.com if you need any help or input.

\- Simon

<comment><USER2> Simon,

We've been talking to both existing customer's and prospective SEO agencies around California. Many are asking for exactly what you're describing: 'to combine this with some sort of relative score of competitiveness of the current SERP for each keyword'.

I'll reach out to you personally! \- Mike

</comment></comment></comment><comment><USER4> Seems like you could use a similar process for adwords type campaigns.

<comment><USER3> Yes, however the mechanics for SEM are a bit different because you still have the ability to track which keywords (ads) ended up creating the incremental revenue, an option that has been taken away from SEO's over the past year's roll out of GA's (not provided) data.

I am not an SEM expert, but I think this kind of technique could be interesting to explore: [http://www.seobook.com/business- lessons](http://www.seobook.com/business-lessons)

\- Simon</comment></comment>


How Khan Academy Is Changing the Rules of Education - <AUTHOR> http://www.wired.com/magazine/2011/07/ff_khan/all/1

<comment><USER2> For a long, long time it has been possible to organize classes so that students work at their own pace,

<http://learninfreedom.org/age_grading_bad.html>

and indeed my mother must have learned that way in the rural one-room school for grades 1 through 8 that she attended during the Great Depression. It's good that now pervasive technology is helping teachers relearn that children who occupy the same classroom don't all have to literally be "on the same page" at the same time. That allows more able (or more motivated) learners to move ahead of the meager expectations of the United States curriculum,

<http://educationnext.org/teaching-math-to-the-talented/>

an improvement that is long overdue.

"Critics argue that Khan's videos and software encourage uncreative, repetitive drilling."

I agree that the Khan Academy exercises currently are just that, exercises, and have suggested here on HN that the Khan Academy exercise writers do the hard work of building genuine online problem sets.

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

Fixing the nature of the online exercises and turning them more into problems would help with one defect noted in the article: "Of course, kids who've grown up on computers are quick to spot the weaknesses in Khan's system. They discovered ways to cheat on the drills: In the logarithms unit, for example, they noticed that the third multiple-choice answer was always the right one." But as the article points out throughout, what online reporting and pratice has allowed is for children who are already attending school anyhow to use their class time to discuss what are actual PROBLEMS for each learner, with interaction with a live teacher, saving drill for times of the day when the teacher is not available. That's not a bad improvement at all.

I should mention that in my own family we spend money on the ALEKS program

<http://www.aleks.com/>

for our homeschooled children, and we find that very helpful. It has many of the same strengths of the Khan Academy program (but is not free, nor does it have audio explanations) with a more complete syllabus and more challenging problems. The "knowledge spaces" theory underlying ALEKS

<http://www.aleks.com/about_aleks/Science_Behind_ALEKS.pdf>

is quite interesting and will probably have to be reflected by any complete K-12 mathematics program anywhere in the world. None of our children actively enjoy ALEKS, but they acknowledge that it is helpful for learning math, and I teach about the more cool aspects of math in the in-person math classes I teach through my local nonprofit organization.

<comment><USER3> Cognitive psychologists (unlike education PhDs, who rarely have a clue) argue that drills create a solid cognitive foundation for students to apply the material to other areas. "Deep" problem solving is a good IQ test, but doesn't improve IQ. "Shallow" problem solving lets students master the elements of the subject, which does increase their intelligence.

<comment><USER4> > "Deep" problem solving is a good IQ test, but doesn't improve IQ. "Shallow" > problem solving lets students master the elements of the subject, which does > increase their intelligence.

As you have defined the terms here, what you say makes no sense to me. It seems to imply as a direct corollary that solving deep problems does not make you any better at deep problems, whereas solving shallow problems does make you better at deep problems. I can believe the last half so long as it is only a supplementary form of training (a crude analogy might be of a virtuoso musician practicing scales), but the first statement beggars belief and is contrary to all my experience.

<comment><USER3> Professional mathematicians peak in their 20s, just after they stop solving "shallow" questions, and start poring over "deep" ones. Pianists peak just before their fingers are unable to physically hit the keys at the rate they used to. But then, unlike pianists, professional mathematicians have something of a conceit that playing the same scale a second time is a trivial waste of time.

Of course, intelligent people are drawn to "deep" problems. Being willing and able to solve "deep" problems is practically the definition of academic intelligence. Actually, most people like "deep" problems more than shallow ones, but only intelligent people have the mastery of the basic techniques required to takle the deeper problems.

I'll admit this is all very much [citation needed] stuff, though. I'm not certain.

<comment><USER5> _Professional mathematicians peak in their 20s, just after they stop solving "shallow" questions, and start poring over "deep" ones._

Citation? Wiles proved FLT at age 40. Perelman proved Poincare at age 39. Richard Hamilton was 50 at the time.

But even with that great mathematicians START doing deep problems early in life. By the time their 25 they've been doing deep problems for a decade at least. Terrence Tao, for example, was doing calculus at age 7. He got a gold at IMO at age 13. These great mathematicians like Tao, Goedel, Neuman have long gone beyond grill and drill math before age 20. So the notion that they just recently stopped solving shallow questions is absurd.

<comment><USER3> Lehman's Age and Achievement is the source of that meme. It may be downright wrong, though.

</comment></comment></comment></comment></comment></comment><comment><USER6> "Critics argue that Khan's videos and software encourage uncreative, repetitive drilling—and leave kids staring at screens instead of interacting with real live teachers."

I don't know where these critics have been, but that description sums up most of my math instruction in school.

<comment><USER7> Amen. My math instructors were great---I can't say the same for the methods they had to use.

</comment></comment><comment><USER8> I posted a comment there but it never showed up, I guess because it had some links in it.

I mainly recommended reading some educational research that could help improve the khan academy's work.

Especially research in math education.

See for example a report by Harold Wenglinsky called 'Does It Compute?" that found much better learning gains when kids did exploratory math activities and simulations and spreadsheets and so forth. When they did drill activities, their performance actually decreased. <http://www.ets.org/Media/Research/pdf/PICTECHNOLOG.pdf>

Then there are these two books (which are free online), the first of which I'd recommend everyone interested in creating educational activities read:

How People Learn <http://www.nap.edu/catalog.php?record_id=9853>

How Students Learn <http://www.nap.edu/catalog.php?record_id=10126>

In math, it helps to use gestures and embodied analogies and representations of many concepts. In other areas like science and history that helps, too, but also students have a lot of strongly persistent misconceptions that have to be brought out into the open in your videos or text, plus it helps to have supplementary constructivist learning activities like simulations, games, and modeling/design tools (including programming).

</comment><comment><USER9> The thing that revolutionized my learning was wanting to create computer games. Not only does that motivate me to learn math, but it prompts me to start developing my own theories of reality to test within games.

</comment><comment><USER10> This article got me thinking about the constructivist theory of education... and I realized that as a self-taught programmer, this theory hasn't worked for me except in very limited ways. I think constructivism works within a certain radius of mastered knowledge. No amount of 'fumbling around' is going to allow me to write a parser, or an operating system. Even for something that I have (or had) the motivation to do, which is to write a very simple learning game [0], the lack of knowledge was a show-stopper.

I think constructivism works for tasks that are _just_ outside of your scope of knowledge. So if I really wanted to create a rails app, I could do that, since that's what I've been doing.

[0] <http://news.ycombinator.com/item?id=1032484>

</comment><comment><USER11> "The idea is to invert the normal rhythms of school, so that lectures are viewed on the kids' own time and homework is done at school."

That's exactly right - there is no point for human teacher to do what video can do better.

Human teacher show help students when they stuck during exercise.

</comment><comment><USER12> any ideas why this page crashed my ipad browser?</comment>


Ask HN: Why the Facebook hate? - <AUTHOR>

The company has taken a few bad steps but it doesn't seem like they are as evil as music industry, for example. Sure, the media hypes up their potential but how is it their fault? Or is it that we just need to hate someone and might as well be them? Apple has proprietary hardware and locks everyone out but no one complains about them. Google tracks _everything_ I do on the web and shows me really targeted ads but no complains there (search for diamond rings and then notice your ads). Microsoft has done its share of bad things.<p>At the end of the day it is a business. Is it wrong for them to make money? Also, before you point out the bot problem, I'd like to see some device numbers. I run a popular site and a lot of my visitors don't have JavaScript turned on. <comment><USER3> People do complain about all the example companies you mention. DuckDuckGo exist to provide an alternative search engine and one of their campaigns is "don't bubble me". Apple is condemned for various policies; their odd process for accepting or rejecting apps is one example.

And Microsoft (Microshaft / Micro$oft / etc) has been vehemently hated by large numbers of people.

I don't hate FB. I dislike the ever changing user interface. I dislike the sneaky changes to privacy settings. I hate many of the apps - and facebook's lack of action to help keep its users safe.

The user interface at the moment is strongly making me not like FB. I set stories to "Most recent" because I want it to stay at most recent. I have to keep resetting it every week or so. Unfortunately there's no alternative - <USER2> use facebook you use the facebook website. This is something that's gently weird to me. I'm used to services which run on a defined standard, and which allow you to chose a client.

Maybe this is something that "the next Facebook" will do - define a tight RFC for social networking and provide a good quality browser based client, but allowing competition to provide other clients.

</comment><comment><USER4> for me its the difference in how they sell your personal information.

1\. google is more like a sandbox, businesses just tell them who they want to advertise too, and they'll act as a proxy.

2\. Facebook openly sells/hands over your information without any type of control (look at beacon or their special deals with certain api users)

3\. Apple does it in a more devious way IMO, in that with IOS they know applications are taking personal information, contacts and locations and never notifies the end user this is happening. In IOS 6 they are making the changes to allow you to control this but this is only after they are losing some market share.

<comment><AUTHOR> Yes, Beacon was a shit show. However, anything recent?

Also, tell me more about #2...

You and I can both create an ad and see all the data that is shared, which really is none because it is all general targeting.

APIs are publicly documented and I'm sure the Europeans (and FTC) would crack down on them if they had any special deals.

If anything, Google allows re-targeting, which shares a lot more data than Facebook seems to.

Also, I didn't know about #3.

<comment><USER4> #2 - [http://techcrunch.com/2010/05/11/yelp-security-hole-puts- fac...](http://techcrunch.com/2010/05/11/yelp-security-hole-puts-facebook- user-data-at-risk-underscores-problems-with-instant-personalization/)

Facebook actively hands over your data to partners

Google does retargeting the right way. I don't how you make the assumption google shares more, cause google is very open with their ad retargeting. It never shares any personal identifiers just general aggregate data.

#3 .. People won't admit it but its a fact.

</comment></comment></comment><comment><USER5> I don't understand all the hate either. 900 million active Facebook users... it's safe to say that most people in the world love it. An average of 7 hours per month spent on the site - that's massive.

</comment><comment><USER6> mainly because I'm (irrationally) jealous of their success.

</comment><comment><USER7> Because they have sucked up (and will continue to) valuable time that humanity could've spent on other worthwhile endeavors. It's 2012, where's my colonies in Mars, damn it?

</comment><comment><USER8> It's built on PHP.

</comment><comment><USER9> Mostly [http://www.nytimes.com/2012/07/24/technology/silicon- valley-...](http://www.nytimes.com/2012/07/24/technology/silicon-valley- worries-about-addiction-to-devices.html?_r=2&pagewanted=2&src=twr) ?

And its bogus advertising model that leaves our closest friends babbling about their sex lives rather than their creative endeavors. That Facebook compels negative consumption: the consumption of Friends' consumption, rather than the consumption of Friend's production. For instance:

Status Update: "X made me feel bad." Comments: "First!", "[meme response]", " _like_ ", etc.

All of that happens, of course, and ads are still soaring throughout all of that. Facebook is basing its model on the idea of someone interjecting "sound ads" throughout your socializing with people; it's advertising Tourette's.

And it's built on PHP.

<comment><AUTHOR> I use Facebook to keep in touch with my family who live in different parts of the world. Yes, there are my friends who post asinine stuff but I kinda view that as normal conversation that I would have with my close friends.

Also, this really struck a chord with me: Does Facebook Cause Loneliness? Short answer, No. Why Are We Discussing this? Long Answer Below. (<http://technosociology.org/?p=1035>)</comment></comment>


School Districts Are Banning Teachers from Using DonorsChoose - <AUTHOR> https://slashdot.org/submission/9377742/school-districts-are-banning-teachers-from-using-donorschoose <comment><USER2> This doesn't seem particularly unreasonable. This is a poor method of funding education, and rife with all sorts of potential for abuse. Not to mention that generally we want the poor kids in the district to be funded as well as the rich kids, and this mechanism will work against that.</comment>


Aaron Swartz case an issue in Massachusetts Senate race - <AUTHOR> http://www.boston.com/news/local/massachusetts/2013/03/23/aaron-swartz-case-issue-mass-senate-race/9vQsMYEFGFYWkwMsZRLC1L/story.html <comment><USER2> Its nice to see the GOP getting behind this rather than the Dems. I dont mean to bring up politics, but this article invokes the discussion. I would have expected this kind of support from the Dems but not the GOP. Biggest reason I say that is because the online community has mostly always swung to the left rather than to the right.

<comment><USER3> Hello spoiledtechie,

I wanted to mention why I downvoted. I am worried someone will misunderstand if I follow usual protocol and skip commenting.

The reason I downvoted your comment is because I think it crosses the "interesting to hackers" and "politics" greyline. As you know politics permeates society and avoiding all politics is just not possible. I understand that your comment was in good faith and not in the least bit antagonizing. I am conservative as well and it is always nice to see politicians doing the right thing. Double so if a group has often ignored their founding principles.

The core reason for my objection is that we must be active in the fight against conversation degradation. To this end I hope we will avoid politics even if the article itself is political.

<comment><USER4> > To this end I hope we will avoid politics even if the article itself is > political.

So if the article is about politics, specifically, and how that involves tech, what's to be done? A comment thread about kung pao chicken? That's not useful.

</comment></comment></comment><comment><USER5> Until there are TV & radio ads addressing the issue, I wouldn't count on the case taking up too much mindshare.

Let's see if it comes up during the debates in Springfield (a poor city with a large minority population).

</comment><comment><USER6> They are making use of Aaron's case for their own purposes.

<comment><AUTHOR> Yes. They are trying to win our votes by taking our side. How devious.

<comment><USER7> They're crying crocodile tears for Aaron, I'm sure. :P

You say that as if politicians haven't taken positions in the past just to win elections (with no intention of following through, or without changing their beliefs on the larger issues raised).

<comment><AUTHOR> And I'm sure the tears of Democrats are genuine :p

Politicians certainly fail to follow through on their promises. But by publicly supporting an issue they give opponents a way to attack them if they don't follow through. So there is some worth to making a public commitment, especially if it is frequent and loud.

<comment><USER7>
      | And I'm sure the tears of Democrats are
      | genuine :p

Personally, _any_ politician that jumps on this is just trying to ride it into (or back into) office. Just another way to sling mud at "the other guy."</comment></comment></comment></comment></comment>


How Not to Request a New Feature - <AUTHOR> http://blog.climbitapp.com/how-not-to-request-a-new-feature

<comment><USER2> This seems like a great way to request a new feature just because it gets you talking about it.

You are going to tell your team, friends, and other users this story. Just by telling them about this a-hole customer is immediately going to bring the feature into the conversation. What if everyone you told snaps back with 'Well, he may be a dick, but thats a great feature' or 'That feature sure is stupid!'. This feature request just got more attention than any of your previous users requests.

The best feedback I get is from my asshole customers. They are vocal and upset. Something didn't go their way and they are unhappy. If I can fix that I get more happy customers.

Also, my polite customers are generally too happy/polite. Its hard to get feedback when they love your product. They'll put in pretty good feature requests and talking to them is always easy. It makes me feel really good when people love my product, but its really hard for them to tell you how much feature xyz sucks. Generally, we have to look at the logs to see what people are using/not using when it comes to happy/fanboy customers.

Of course, it is not ok to act like a dickhead. Being well respected is usually the best way to get things done.

<comment><USER3> But the key is that they are your asshole _customers_.

It's one thing to say, "this app is not for me unless it has feature X." Or, "I just bought your app, but it kills me that I can't do X." It's entirely different to go pirate and use it anyway when feature X is lacking. I agree with the author that such a person is not worth pursuing as a customer.

<comment><USER4> The author of the original post here. I think in effect you're both right. As a result of HN picking this up I've received a few more feature requests and votes for route areas today, all of them thoroughly pleasant and supportive. And I noted them all, responded and appreciate them deeply. But it's the comment that sparked the blog post that I keep mentally coming back to, and by association that particular feature request.

Sadly it reminds me of the recent story about the guy selling eyewear online who loved the terrible comments he received on Get Satisfaction because they allegedly gamed his Google rank. I irks me to think that being a dick is an effective strategy in this way.

That said, you're absolutely right in that someone like this is not worth the effort as a customer per se, despite the validity of their request. The app is targeted to a fairly niche community and for the most part it's a pretty awesome community. I know with certainty that person is not representative and thus can be safely ignored.</comment></comment></comment>


Monopoly was invented to demonstrate the evils of capitalism - <AUTHOR> http://www.bbc.com/capital/story/20170728-monopoly-was-invented-to-demonstrate-the-evils-of-capitalism <comment><USER2> This is a duplicate of a previous, very, very lengthy discussion. [https://news.ycombinator.com/item?id=14819622](https://news.ycombinator.com/item?id=14819622)

</comment><comment><USER3> Monopoly is set up as a zero-sum game, hence it is not representative of capitalism at all. Free markets are not zero sum.

That's easily shown. Give me $20 of art materials, and I will turn out something I have to pay someone to haul away. Give it to Picasso, and he'll turn it into a million dollar creation.

In fact, the entire software industry is based on creating value out of nothing.

<comment><USER4> Monopoly is set up as a zero sum game, exactly like actual capitalism is.

If we give you $20 if art materials, we can't give Picasso those materials because you already have them.

The world is finite. Resources are finite, and infinite expansion is impossible.

<comment><USER5> > The world is finite. Resources are finite, and infinite expansion is > impossible.

If you were right, the $10 trillion China added to its economy annually (you know, just ~$64 trillion of new GDP that didn't exist before, over the next five years) - in just the span of ~16 years, would have had to come out of someone else's pocket, which would have caused extreme collapse in numerous other major economies to make room for it. That of course didn't happen at all, the rest of the globe's GDP expanded along with China in real terms.

For all realistic practical purposes - since we're nowhere near maximum resource utilization - that has yet to be an actual problem and we're up to 7.x billion people now. Every serious problem to that expansion, we've managed to solve, enabling continued expansion (see: we were all supposed to starve to death decades ago).

Back in reality - and out of the realm of theory that only exists in a strict vacuum - Capitalism is the exact opposite of a zero sum game. That has been proven by the radical improvement in living standards at the median for all the developed nations, all of which heavily utilize the free market economic system (including all of the Scandinavian nations, none of which are actually Socialist at all).

If Capitalism were a zero sum game, China would not have just enjoyed the greatest, fastest mass standard of living improvement in world history thanks to its modest adoption of the free market, and its blatant shift away from Statism.

The free market largely won globally, and thanks to that, the world has less poverty, war, violence and starvation than at any other time in history.

<comment><USER6> > the world has less poverty, war, violence and starvation than at any other > time in history.

Is this true, though? Certainly as a percentage of global population things like poverty and hunger are in decline but some of this can be attributed to population increases. There were 795 million hungry people in 2015 [1], but this is more people than were alive in 1750. It stands to reason that 300 years ago there were considerably fewer individuals living on the brink of starvation.

[1] [http://www.npr.org/sections/goatsandsoda/2015/06/01/41126502...](http://www.npr.org/sections/goatsandsoda/2015/06/01/411265021/there- are-200-million-fewer-hungry-people-than-25-years-ago)

<comment><USER7> In raw numbers, but the rate is what's important.

<comment><USER6> Why?

<comment><USER7> If 5 billion people are on the planet and 10% are in poverty, its probably better to be that 10% (trending downward) than it would be if you had 1 billion people at 40% poverty (trending flat).

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> I think this article misses the point of Georgism: that the land tax replaces all other taxes.

In other words, while land belongs to the government (people), individuals are entitled to the entire product of their labor (as well as returns on capital). Georgism is simultaneously extremely Communistic and Capitalistic.

</comment><comment><USER9> Has anyone here actually played Monopoly as an adult?

My memories from childhood are of it being quite fun, and slow.

While managing a hostel a few years ago I played hundreds of games with hundreds of adults - with adults it's extremely cut-throat and downright nasty. I estimate 75% of games ended with people yelling and screaming, after less than 4 times around the board.

It's amazing to watch how nasty it gets, and how everyone takes it so personally.

<comment><USER10> My memories of playing it as a child is kids crying and whining. I think this game is designed so nobody really wins, they just slowly bleed the losers until they have a breakdown and quit.

Playing it as an adult, it was mostly an excuse to drink, and people had the sense to quit before the breakdown part.

</comment></comment><comment><USER11> What she didn't realize what she ended up demonstrating was the reality of pareto distributions.

Dr. Jordan Peterson does a good detailing of this phenomenon.

[https://youtu.be/TcEWRykSgwE](https://youtu.be/TcEWRykSgwE)

</comment><comment><USER12> Whatever the alleged reason, Monopoly looks to me like it was invented as a fun game rather than a allegory for anything at all. It does seem to be trying to resemble actual economic activity at all.

For example the Banker is not only a kind of public service, but is performing a service only vaguely related to what banks do. And in what world do you need to own a whole neighbourhood before you can put a hotel anywhere?

Now Bohnanza ([https://en.wikipedia.org/wiki/Bohnanza](https://en.wikipedia.org/wiki/Bohnanza)) has some resemblance to real capitalism, but is also too much fun to a lesson in anything.

<comment><USER13>
        Whatever the alleged reason, Monopoly looks
        to me like it was invented as a fun game ...

I'd call Monopoly a lot, but a "fun game" it is not. It's a hugely frustrating game and I'd be happy to never play it again for the rest of my life.

</comment></comment><comment><USER14> I am delighted to have the chance to learn what the Hacker News community thinks about capitalism.

</comment><comment><USER15> "You don't win... you just do a little better each time." \- Cleveland, Family Guy ( [https://youtu.be/liRioOpF5sw](https://youtu.be/liRioOpF5sw) )

</comment><comment><USER16> I would have paid more attention to Monopoly if I had known life would actually play out in precisely the same way.

</comment><comment><USER17> If she wanted to demonstrate "the evils of capitalism" it's pretty ironic that she decided to name the game with problem that can only exist in non- capitalist systems and is the flagship product of communism/socialism.</comment>


Ask HN: How do you deal with so many project management systems? - <AUTHOR> I deal with a lot of clients, many of them have their own internal systems and teams, and they add me in to their projects.
I've noticed that now my life consists of having multiple Basecamp, Trello and Asana projects all open in different tabs at the same time.  Then they want me chatting in Skype, or they text and email.  And I have to remote with Join.me, Zoho, GotoMeeting.
No longer are project management systems keeping me organized, it's turned into a mess.
Do you deal with this too?  Are there any solutions out there that can interface with all these major systems at once? <comment><USER3> Don't treat your customers' project management systems as your own organization tools.

Instead, treat them as deliverables and manage your own organization elsewhere.

<comment><USER4> I've found the same applies to corporate organization tools. I manage my tasks separately with "update JIRA" being one of those tasks.

<comment><USER5> I hope you at least leave notes about what you do. Few things are more infuriating than seeing a complex task assigned to someone, and the next entry is "Solved." and the ticket closed. Great that the problem was solved, but the corporate organization tool exists to make solution information more available to others with the same problem.

In a way, ticket systems are another type of documentation, along with man pages and KB articles and persistent chat (like Slack).

<comment><USER6> Well he does, in his own systems. Not in yours. Is my guess.

<comment><USER7> Sure, though adding in note is a kind of signaling -- a social mechanism that helps teams come together. If someone is working as a contractor, is relatively isolated from the team, then there probably won't be a need or even a desire for the contractor to add notes to the client's management system, for the sake of signaling to the in-house development team. On the other hand, some sort of notes tend to make many non-technical clients feel better and be on top of things. (And some people are confused by signaling; a good communicator would be able to suss that out).

</comment></comment></comment></comment></comment><comment><USER8> We actually ran into the exact same problem while juggling multiple projects and ended up creating Taco - [https://tacoapp.com](https://tacoapp.com). Taco aggregates your Basecamp, Trello, Asana and 35+ other services into a single screen so you can prioritize your day across multiple services. Works especially well with a new tab Chrome extension.

Haven't found the best way to consolidate applications for real time services. Although, I've found that it hasn't been too difficult to get people to hop on the Slack train. I've been in the same problem with video chat - <USER2> Hangouts, Facetime, GoToMeeting, Skype, etc. Would love to hear what other people use.

<comment><USER9> Just some feedback - it drives me nuts when services aren't clear what their pricing is. If it's free, fine. If it's paid, fine. If it's free now but you plan on charging later for premium features, fine. But IMO you _have_ to be upfront about it.

There's nothing on the homepage, no pricing page, nothing. It makes me nervous to sign up without this information.

<comment><USER10> This, a million times over.

I went looking... it's not on the site, not in the knowledge base, not on the blog.

There is absolutely no pricing information.

Does Taco not charge anyone? If you do charge, give me a ballpark, a range even... it doesn't matter so long as you give it.

Am I signing up for something without that info? Er... no.

<comment><USER8> Taco is free for now, but we expect and hope to charge $5-$10/month at some point - cheap enough be a fantastic value for anyone who uses it even occasionally, but also not a free service that you rightly don't want. We're still figuring out when we should flip the switch but in the meantime, you are right, we need to do a better job of explaining possible future pricing.

<comment><USER11> So the plan is to generate an initial spike in demand from a group of people marginally interested in something they can get for free, then alienate your core users, who would have been happy to pay from the outset, by introducing a fee, but only once the service is sufficiently overburdened supporting free users ? Well they say any plan is better than no plan... but....

Turn this upside down now, think about 100 users paying $50 a month for something they depend on, I bill $100/hr, if you can save me an hour a month I'm winning, once you have $5000 a month every month think about the next 100, keep going, sounds like your product has a use, don't make the free mistake, it's been highlighted here many times, good luck!

<comment><USER12> +1 on this... I'd say do a 30-day trial period, then around day 25 ask for billing information... If you have tracking/analytics in place you know how many users are returning once signing up, and you have a better indication of conversion after use.

If you're going to have a free tier, I'd say limit it to N service integrations (3-5), but definitely make your core users paying close to the start.

If I had a need for something like this day to day, I'd definitely pay... Actually, I'd suffer for a while, then try it, then suffer again, then pay... but that's me and I'm kind of cheap/frugal. Most people will start paying once they see and feel the value.

Also, it's much easier to field requests from a few hundred paying users than thousands of non-paying ones. It's very hard to do conversion from free after the fact... many businesses have failed, burned, burned out, and left their best (paying) users in a lurch following this model.

<comment><USER11> +1 for all that although I'd be tempted to get the billing info on sign up and offer a 'throwaway' good deal for the uncertain, so, say $50 a month, or try 10 days for $3

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> A big text file, with a heading for each day.

In go tasks, troubleshooting attempts, outcomes, links, etc. Then I copy+paste into github issues, commit messages, and wiki articles as needed (part of my deliverables, as @LeifCarrotson puts it).

* No vendor lock-in, no lag, no migration issues.

* Never have duplicate typing because of copy+paste.

* Get a daily history of your work going back into time in a light, portable, ubiquitous format.

* Recover from accidentally hitting the back button while writing a Jira ticket.

* Be able to precisely answer "What did you work on last week" (or last Monday when you logged out of VPN, or anything else)

I have to move the text from my file into the tracking tool(s), and that could be a downside. But I like having a layer of translation there. It lets me select and rephrase snippets that will communicate best in each environment.

Example: [https://gist.github.com/SimplGy/a516c54a81fb24f807f9512fed82...](https://gist.github.com/SimplGy/a516c54a81fb24f807f9512fed820935)

<comment><USER14> I've been doing this in Evernote for years -- one note for each month, and now I've switched to Quiver which provides a somewhat better experience.

<comment><USER13> Quiver looks really interesting, thanks for sharing. I love that you can export as plain text or markdown. The idea that this would count as "no vendor lock in" to me hinges on exactly _how_ the text export works -- when exported, can I go back to a text-only experience pretty easily, or will I have 1000s of separate text files for each "cell". Sort of a tangent, but hey.

</comment></comment></comment><comment><USER15> That's not easy to answer. You need them but you need to limit them as well. Also you have to be cautious of ADD coworkers who introduce new tools every week, 'hey look I found a new Trello integration, ...'

Main rule: avoid anything synchronous as much as possible such a chat, Slack, group chat, Skype, just turn that shit off; if someone wants to catch you he will call you on the phone

You need some project management tool for progress tracking and for enabling good specs, but only one; so get either Trello or Asana but not both; though can have have both for different dept.s and task types

</comment><comment><USER16> Juggling systems is goofy but as long as they're web based it's easy, go old school

+customer data folder ++customer name > links to trello,slack go here +++project name > links to trello etc. go here

then I have a todo.md or todo.txt using imdone-atom with snippits, gives you a text based kanban, you can open project folders with atom --add c:\customers\abc\project1 and alt-t for tasks

also alt-j is journal where you can try to kanban all customers if you're ocd

documentation should not go in a ticket system, it should go in a wiki

my fav is a combo of integrated apps like trello/slack, jira/confluence, github/gitter

tasks are todo/doing/done and done includes closing their ticket system and updating their wiki or whatever they're using like a wiki

</comment><comment><USER17> 1\. As others have said, don't treat the tools provided by your clients as "organizational tools", treat the communication via those tools as a part of the deliverable they are paying for. If they have a convoluted system, ensure you are paid accordingly if it will take you a long time to use it the way they are asking.

2\. Use Browser Profiles, and have a differently named user for each client, with different default tabs and authentication states. When you need to work on "Client A", simply click your name in the top-right of Chrome, select "Client A", and a new window will open with all of your important tabs open.

3\. Documentation isn't just for code! For each client, keep a dossier of your contacts at the organization, their preferred method of contact, etc. This document can also act as "usage notes" for their internal or provided systems. It's helpful to have a document like this be the default opened tab when hopping into the Browser Profile for a specific client.

</comment><comment><USER18> We face this problem as well. We are working across multiple systems and sometimes unable to take advantage of the various triggers/reports etc we had setup in our own JIRA, which meant we had to work harder to deliver to the same standard.

So, we developed a robo-advisor to deal with it called stratejos ([http://stratejos.com](http://stratejos.com)). stratejos takes care of house keeping (like making sure the tools are being used as expected) and provides project analytics on top of this. We're currently in beta, would love to hear the problems people are having so we can solve them.

With the skype/chatting/etc this is probably something you just have to deal with, as someone else said, its part of being a consultant.

</comment><comment><USER19> This isn't a new problem. I used to have to enter my time in 3 places. Once for the client's corporate system, once for the project-based system, and once for my company's system. As much as we like innovation, this is part of the case for standardization. :-)

The mental model I follow is:

1 - Figure out if you can fight it. If it's a fight you can win, push to standardize. If it's one you can't, don't waste your time.

2 - If you don't fight it, figure out which have data that is really being used, and which people are just going through the motions. For the data that's being used, keep it current and think through the input. For data that's not, don't kill yourself.

3 - Always have your own #s so that you can answer what's really going on.

</comment><comment><USER12> One suggestion, and I'm not how hard it is to setup a new account with a real phone number, or moving the number. But setup Google Voice, and use hangouts to manage your text messages. You'll be able to run hangouts on your desktop, and type your text messages, not to mention copy/paste wherever they are needed.

I find that it's really nice to be able to handle texts while I'm working directly on my computer, or wherever I am. Does phone calls as well, if you're using a headset with a mic. Hangouts also does video calls and screen sharing, but nobody else seems to use it much. I actually like it a lot, even though the video quality leaves a lot to be desired.

Edit: been a happy user since it was Grand Central, before the Google buyout.

</comment><comment><USER20> I feel your pain. A few weeks ago I was even asked to track my time in a clients system. First thought was "but I send you invoices with my time in them."

Second thought was, "why don't you pay your staff to enter time from my invoices?"

Third thought was "I'll have to bill you a stupid hourly rate to enter my time in your system."

Right now I'm stuck at the third thought and they've agreed, but I haven't started doing it yet and don't want to. Their systems are their systems and mine are mine.

<comment><USER21> I sympathize, but honestly, the fourth thought - that you don't want to do the data entry the client has agreed to pay you for - is a bad thought that you need to evict from your brain ASAP. You should want to do it. It's a good deal - you get paid the same rate for easy work that you would get paid for hard work. We technologists sometimes get bad thoughts in our heads that are variants of the idea that we have the power and responsibility to optimise the entire universe, but in reality of course we have no such thing, and we need to get rid of those thoughts and draw appropriate boundaries.

<comment><USER20> You're right. I think it's aa timing thing. In June-August or December I'd be happy to get to invoice for simple admin work. But I seem to be slammed Jan- May every year (lots of weekend work, business travel) so it just seems excessive right now.

You are also correct that we want to optimize everything. Sigh.

<comment><USER22> Have you considered a personal assistant for it?

If the output would be the same whether it was done by you or someone else... well, why not explore _not_ doing it yourself?

</comment></comment></comment></comment><comment><USER23> I'm curious whether big companies like Google or Facebook have a standard project management process or software used by all teams. I work at Mozilla and every team is doing their own thing, which can make collaboration difficult. We have Bugzilla bugs, GitHub issues, wikis, Mana (Confluence's wiki), Google Docs and spreadsheets, Trello, Smartsheets, Aha, and JIRA. Even when people agree there is a problem, no team wants to be the one to change their process.. :)

</comment><comment><USER24> One thing about Project Management that had always struck me why is this space so fragmented and why there is no clear winner? You can create a project management tool now with a new perspective and I am sure you will have customers for it.

My hunch suggests that there will be soon a Project Management tool that has growth trajectory similar to "Slack" or who knows it might be "Slack" itself.

</comment><comment><USER25> Consider using a different user per account - the gain having a dedicated chrome / safari password. Auxiliary gain, this will keep you more focused on one client at a time.

</comment><comment><USER26> Google Docs was honestly the best system I have used to date. Skim the others. Put the important stuff from them in a Google doc. Important stuff at the top (everything else will naturally fall into less important). Highlight extra things as you see the need. No farting about having to learn yet another system that doesn't quite meet your needs.

(Might be worth adding that all the companies I have worked at for the last few years were under resourced).</comment>


Deutsche Bank, BofA, JPM Are Drawn into Danske Probe - <AUTHOR> https://www.bloomberg.com/news/articles/2018-11-16/deutsche-bank-bofa-jpm-are-said-to-be-drawn-into-danske-probe <comment><USER2> Look at the mass of comments in here shocked at the newfound lack of ethics in these institutions!</comment>


Show HN: Interactive Calculus via LaTeX - <AUTHOR> https://ximera.osu.edu/mooculus <comment><AUTHOR> Tools: [https://github.com/ximeraproject](https://github.com/ximeraproject)

Source: [https://github.com/mooculus](https://github.com/mooculus)

Linear algebra: [https://ximera.osu.edu/laode/linearAlgebra](https://ximera.osu.edu/laode/linearAlgebra)

<comment><USER2> I really like the interactive exercises. I teach math at a community college and would like to create interactive exercise sheets for some of my classes. I'm not familiar with Github and poked around a bit but I could not figure out how the answer checking was done. In one problem I did the answer was 6 and I was pleasantly surprised the answer 5+1 was counted as correct. Do you know how this is done?

<comment><USER3> I'm one of the developers of Ximera.

Expression equality is handled by [https://github.com/kisonecat/math- expressions](https://github.com/kisonecat/math-expressions) using a few heuristics, which is necessary because Richardson's theorem says this problem is undecidable. The main trick is to regard the expressions as complex-valued functions, find a point where the value is (nearly) equal, and then check for numerical equality in a neighborhood. (Doing this over the complex plane addresses the problem that many common expressions like sqrt(small number-x^2) have a restricted domain over the reals).

We rely on unit tests from Chris Sangwin (who wrote the textbook _Computer Aided Assessment of Mathematics_) to ensure that we're adjudicating expression equality mostly correctly.

<comment><USER2> Thanks for the response and info. I looked at the README and it seems like you all use Javascript for this. I was thinking maybe Maple or Mathematica was used. I'm impressed with the calculus notes/exercises I saw. It looks professionally done. The fonts/colors are nice.

I'm going to try to make some stuff myself. I would mostly do it for developmental math, college algebra, and trig. I haven't dug too deep into how to make my own stuff using Ximera but I'm hoping I won't have to write Javascript myself to handle checking expressions.

<comment><USER3> Maple and Mathematica are not open, and it's important that not only the resources be open-source, but also the underlying technology stack, because we're trying to not only teach students mathematics but the most engaged students need to "look under the hood" and learn how the technology works.

So we do support SageMath for more complicated answer validation. This depends on the public SageMath cell servers, which provides cloud-hosted SageMath and enables things like \sage{derivative(x*x,x)}. It's also more performant to rely on JavaScript.

For developmental math, answer validation is somewhat harder than for calculus, because often you want to distinguish between say (x+1)^2 and x^2 + 2x + 1.

We run workshops on how to use Ximera. The next one is at UFlorida in October. If you're interested, there is some travel support available. Contact us at firstname.lastname@example.com

</comment></comment></comment></comment></comment><comment><USER4> Can't see how is this better than using sweave

<comment><AUTHOR> Can sweave be integrated with a learning management system?

Ximera allows authors to write online interactive texts, that can serve as the HW system for a class.

The student's work can be directly sent to the grade book via LTI.

Moreover, you can simultaneously produce a PDF that looks like a traditional text.

[http://www.lulu.com/shop/the-ohio-state-university-math- depa...](http://www.lulu.com/shop/the-ohio-state-university-math- department/calculus-1/paperback/product-23763734.html)

Which nobody _needs_ to buy, since the PDF generating the text is freely available.

<comment><USER5> There are some R packages that allow for development of e-learning materials, these are Rmarkdown based so similar to knitr rather than sweave, but basically the same idea. The downside is the lack of symbolic support in R. Ximera does look interesting however. A second question I would have is how this would compare with Jupyter interactive notebooks which have LaTeX support and automated grading as well as symbolic algebra capabilities? Nevertheless additional tools are always welcome.

<comment><USER3> I don't think Jupyter offers a facility like $\frac{\answer{2}}{4} = 1/2$ for putting answer blanks in the middle of mathematical expressions. For sagemath, code like \sage{derivative(f,x)} also works, even inside an \answer.

An activity in Ximera has state, and this state is synchronized (via Fraser's differential synchronization) with all open clients, so the instructor can watch a student while they work in Ximera, and even edit the page alongside them.

<comment><USER5> If I understand your comment, correctly, then grading facility in Jupyter allows something like that I believe. My question related more to any symbolic/computer algebra capabilities Ximera may have, or does it just allow for interactive documents without computational tools?</comment></comment></comment></comment></comment>


Amazon and Pricing/Seller Experiments - <AUTHOR> http://scottwhigham.posterous.com/amazon-and-pricingseller-experiments

<comment><AUTHOR> I ended up buying on ebay after all of that. I just didn't want to pay $35 more because I took the time to investigate what, for me, is a sizeable and important purchase. Bought the camera on ebay for $916 and the mic for $123 - overall it was $100 savings not buying from Amazon

</comment><comment><AUTHOR> Sonofabitch - Amazon is really messing with me today. They have increased prices on two items today by a total of about $35.

</comment><comment><AUTHOR> This was odd - happened to me for the first time at Amazon. Oh - and I'm trying out Posterous as well to see if I like it :)</comment>


Student-built tree-planing robot prototype [video] - <AUTHOR> https://www.youtube.com/watch?v=Le86A5KUAHE

<comment><USER2> Great to see fellow BC students working on their passions

</comment><comment><USER3> It is a highly entertaining watch

</comment><comment><USER4> Tree-planting.

FTFY.</comment>


RecordBreaker: Automatic structure for your text-formatted data - <AUTHOR> http://cloudera.github.io/RecordBreaker/

<comment><USER2> _The future is ubiquitous online connectivity, cloud storage and streaming — not memory cards. These portable storage cards require careful file management, something Apple wants users to avoid._

I agree with most of the points the post makes but this sounds like Apple marketing-speak. Whatever the "future" might be, storage cards are a major plus in any current tablet. Apple wanting users to avoid file management and opting for their cloud service is not an argument in favor of the Ipad.</comment>


Go as an alternative to Node.js for Very Fast Servers - <AUTHOR> http://techblog.safaribooksonline.com/2013/02/22/go-as-an-alternative-to-node-js-for-very-fast-servers/ <comment><USER3> I played around with a go server to do some simple scaling numbers - <USER2> at possibly using go to implement a large-number-of-idle-connections notification server.

I found the (good) result that I could spawn a new goroutine for each incoming connection with minimal (~4k) overhead. This is pretty much what you'd expect since a goro just needs a page for it's stack if it's doing no real work. I had something like 4 VMs each making ~30k conns (from one process) to the central go server with something like 120k conns.

I found one worrying oddity however. Resource usage would spike up on the server when I shut down my client connections (e.g. ctrl-C of a client proc with ~30k conns).

Reasoning about things a bit, I _think_ this is due to the go runtime allocating an OS thread for each goro as it goes through the socket close() blocking call. I think it has to do this to maintain concurrency. So I end up with hundreds of OS threads (each only lives long enough to close(), but I'm doing a _lot_ at the same time).

Can anyone comment:

\- is this guess as to the problem likely to be correct?

\- is this "thundering herd" a problem in practice?

\- are there ways to avoid this? (Other than not using a goro-per-connection, which I think it the only idiomatic way to do it?)

My situation was artificial, but I could well imagine a case that losing, say a reverse proxy, could cause a large number of connections to suddenly want to close() and it would be a shame if that overwhelmed the server.

<comment><USER4> > I think this is due to the go runtime allocating an OS thread for each goro > as it goes through the socket close() blocking call. I think it has to do > this to maintain concurrency

I _highly_ doubt that it is creating a thread per goro on client disconnect. If you have a minimalish example of this, the golang mailing list would be _very_ interested in working with you to identify what went wrong and create a patch if it is an issue with the Go implementation.

<comment><USER5> Blocking system calls spawn OS threads in Go, which can be cached and recycled for new goroutines. You don't see this if you code to pkg/net because it multiplexes i/o with a select/kqueue goroutine, but you'll see it right away if you code directly to the syscalls.

Close isn't a blocking call, though.

<comment><USER6> Close is annotated as a blocking syscall in <http://golang.org/src/pkg/syscall/syscall_linux.go#L810>

Is there a guarantee on Linux that close can't block? (I suppose it depends on the file type and the definition of blocking.)

<comment><USER5> Only if SO_LINGER is set.

</comment></comment></comment></comment></comment><comment><USER7> _While JavaScript drags the scars of its hasty standardization around with it, Go was designed very thoughtfully from the beginning, and as a result I find that it's a pleasure to write._

This is very true. Go is a pleasure to write. In fact, it's such a pleasure then when you hit something that wasn't really well designed it's horrid.

<comment><USER8> Can I ask what language you are used to? I hear how nice go is as a language a lot, but coming from haskell, go is hideous in comparison.

<comment><USER9> Go is going to look hideous to you because you're probably expecting functional things like list comprehensions (which Go doesn't have) and a very intricate type system allowing for things like generics (which Go doesn't have either).

Go code will look a little less DRY to you as a result, which is a fair criticism, but it makes up for that by being incredibly opinionated (that's a good thing), being incredibly easy to prototype in, _and_ being incredibly easy to refactor painlessly.

<comment><USER8> >Go is going to look hideous to you because you're probably expecting functional things like list comprehensions

Nah, list comprehensions are just syntactic sugar and not used much in haskell. Python seems to encourage their use a lot, but you hardly even see them in haskell code.

>a very intricate type system allowing for things like generics (which Go doesn't have either).

That is definitely one of the big problems, but I take issue with the characterization of that as needing "a very intricate type system". Parametric polymorphism is very simple, and has been a completely solved issue for a very long time. There is simply no excuse for a brand new language to be decades behind on something so easy to do right.

>being incredibly easy to prototype in, and being incredibly easy to refactor painlessly.

Those are actually two of the other big issues going from go to haskell. Go is harder to prototype in, and it is easy to add bugs when refactoring because the type system is so poor.

<comment><USER9> > Parametric polymorphism is very simple, and has been a completely solved > issue for a very long time. There is simply no excuse for a brand new > language to be decades behind on something so easy to do right.

Go _has_ addressed this; their approach is Go's interfaces, which combines the best of all worlds: duck typing with static type checks and type inference.

> Go is harder to prototype in, and it is easy to add bugs when refactoring > because the type system is so poor.

This is where we'll have to agree to disagree. It's definitely _not_ harder to prototype in - and I say this as a functional programmer - and if you find the type system to be inadequate when refactoring, it sounds to me like you're trying to write idiomatic Haskell in Go. Go's type system, by design, stays out of the way - if you're writing Go idiomatically, you really shouldn't be thinking very much about the types as you write them.

As for generics, this gets beaten to death on _every_ single Go post on HackerNews. Yes, Go would ideally have generics. Yes, there are tradeoffs involved. Yes, those tradeoffs have been explained by the Go developers at length. Yes, they would be open to including them in the future, if somebody addressed the existing concerns. No, nobody seems to mind that they're missing from the language as-is, given those tradeoffs.

<comment><USER8> You are contradicting yourself about parametric polymorphism. First you acknowledge it doesn't exist, then you claim a limited workaround solves it.

>It's definitely not harder to prototype in - and I say this as a functional programmer

Have you used haskell to make the comparison?

>if you're writing Go idiomatically, you really shouldn't be thinking very much about the types as you write them.

I don't understand where you are coming from here. I am not thinking about types, that is why I need the compiler to point out when I mess them up. The problem is go has such a limited type system, that you have to change much more code when you refactor, and the type system is inadequate for catching many errors, in particular dealing with error handling. The combination makes go worse for refactoring than haskell. It is certainly much better than python for example, but you seem to be convinced that go is the top of the spectrum and nothing can exist above it.

<comment><USER10> I have been wanting to learn Haskell for some time. Is Real World Haskell still the best book for the language? Could you point me to some well written libraries/projects that are considered idiomatic haskell? Would appreciate the pointers.

<comment><USER11> There's lots of books: Hutton, Hudak, Thompson, Richard Bird. I have a ugly draft/link dump for learning

[http://isthishaskell.blogspot.com/2013/02/tips-on- learning.h...](http://isthishaskell.blogspot.com/2013/02/tips-on- learning.html)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> _> The biggest promise that Node makes is the ability to handle many many concurrent requests. How it does so relies entirely on a community contract: every action must be non-blocking. All code must use callbacks for any I/O handling, and one stinker can make the whole thing fall apart. Try as I might, I just can't view a best practice as a feature._

Nonblocking I/O isn't just a "best practice" in the sense that consistent indentation is a "best practice," it's a core tenet of the Node ecosystem. Sure, you could write a Haskell library by putting _everything_ in mutable- state monad blocks, and porting over your procedural code line-for-line. It's allowed by the language, just like blocking is allowed by Node. But the whole point of Haskell is to optimize the function-composition use case.

The Node community has the benefit of designing all its libraries from scratch with this tenet in mind, so in practice you never/rarely need to look for "stinkers" unless they're documented to be blocking. And unless they're using badly-written blocking native code, you can just grep for `Sync` to see any blocking calls.

</comment><comment><USER13> Node: Everyone knows JavaScript, there's a massive community, there are tons of libraries, and you get very good performance

Go: No one knows this language, there's a small-but-growing community, there are enough libraries to get a lot done, and you get even better performance

Java: They are paying me (money!) to write in this language

<comment><USER14> The Go community on Reddit is already bigger than the Node community: <http://www.reddit.com/r/golang> (3730) <http://www.reddit.com/r/node> (3581)

<comment><USER15> And the Google+ Go community is growing fast and is already larger than the sub-reddit. <https://plus.google.com/communities/114112804251407510571>

<comment><USER16> You do see a correlation right?

</comment></comment></comment></comment><comment><USER17> I've been using Go a lot lately. It's difficult to overstate just how much simpler it makes writing highly-concurrent server-type programs. Entire classes of bugs, issues, and puzzles just vanish.

<comment><USER9> I've been using Go a lot recently as well, and it's rapidly become my go-to language (no pun intended) for a lot of problems, even when concurrency is not involved.

The biggest thing Go gives me is that it's _really_ easy to manage code bases that grow organically - refactoring a project that grows from 50 LOC to 5000 LOC is almost painless in Go - no other language that I've seen has dealt with this aspect of code development so well.

<comment><USER18> What about Go makes it easy to manage and refactor large codebases? I don't do much Java, but whenever I've watched someone use Eclipse for refactoring, I question why I'm still using vim, because it is just magic and does everything for you.

<comment><USER9> I should probably write a blog post about this, because it's a combination of a number of things. Primarily, the compiler is incredibly strict and opinionated, so it's impossible to make certain small errors like assigning to lvalues that are never used, importing packages that are never used, etc.

Secondarily, gofmt makes code very standardized and easy to skim. It takes Python's 'only one (obvious) way to do it' one or two steps further, by forcing _everyone_ to to write their code the same way. This makes refactoring a lot easier because you don't need to read as much code each time in order to understand what's going on (or at least, you can mentally parse it much faster).

Finally, the context-free grammar combined with a strong, static type system means that migrating code from an old (incompatible) version of Go to the most recent one can be done painlessly with the 'go fix' tool. This isn't your py2to3 tool - this accepts valid (old) Go code as input and reliably produces valid (up-to-date) Go code as the output.

That last bit isn't actually used in refactoring manually, but I make note of it because very few languages give you anything close to this level of reliability with code modification, which speaks volumes about the design of the language's grammar.

<comment><USER19> But go ecosystem still doesn't have anything even close to refactoring abilities of Java/C# IDEs. Say, move Java class which is in use in 100s places from one package to another is just few mouse clicks in Eclipse and a lot of pain in case of Go.

<comment><USER20> Not really. Go comes with code rewriting tools, unsurprisingly since they were used to update the standard library and 3rd party code when the language changed before Go 1.

I don't want to use a language that doesn't come with a parser in the standard library anymore.

<comment><USER19> So, is it possible to move/rename class/method/field smoothly using those tools? Extract code block to new method?

<comment><USER21> the gofmt tool has a replacement feature:

`gofmt -r 'InitialName -> FinalName'`

<comment><USER19> Documentation looks quite incomplete(<http://golang.org/cmd/gofmt/>). Will it change all imports and usages of class/method/field? Will it resolve all signature polymorphic calls?

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> _> There's no arguing about whether to use semicolons, or putting your commas at the front of the line — the language knows what it wants. It's a built-in hipster suppression mechanism._

Major point for saving man hours right there.

</comment><comment><USER23> The fact that Node.js is being used in this equation says a lot about how much impact and penetration it has achieved in a rather short while.

Personally I hope that Go does just as well, if not a lot better. I am a bit of a fan of both.

<comment><USER24> I think it says more about the bias of the writer, he seems to assume that Node would be the default choice and that something like erlang/scala/clojure/go would be alternatives. That may be true for someones sideline project.

<comment><USER25> If he's a HN reader, he's probably assumed that Node is the default choice these days, based on the articles that come up.

</comment></comment></comment><comment><USER26> Clojure is another nice alternative for fast servers, and using a concurrent, immutable and functional language is a huge win. http-kit is a good example of such server: <http://http-kit.org/>

</comment><comment><USER27> Here's a haskell comparison (hint: it does very well).

<https://gist.github.com/jamwt/5017172>

Haskell was ghc 7.6.1 with ghc --make -O2

Go is go1.0.2 with "go build".

<comment><USER28> As noted above - with ridiculously large values for ab this one crashes (although I didn't compile with O-parameters). I think this (and the other haskell solution) ran out of resources.

Both the go and nodejs versions completed without problems.

I was a little disappointed -- I was actually hoping I'd see comparable performance -- even if it is a silly test.

I think it is interesting that simple, idomatic code in go and nodejs didn't crash -- not sure what assumptions might be "wrong" in the underlying haskell code (I'm guessing if anything should be "fixed" it is in the web server libraries used).

</comment></comment><comment><USER29> I have never understood the focus on speed as a selling point for Node. It may well be very fast, but it seems to me that the primary selling points would be the ability to share code between client and server and that you can start coding server side without learning a new language if all you know is JavaScript.

<comment><USER30> Compared to Python and Ruby, node.js is quite fast by the simple virtue of having a JIT (in the most common implementation anyway; of course there are JITs for Python and Ruby but they aren't the mainline implementation).

<comment><USER31> Which is a shame, since PyPy is really an excellent project.

</comment></comment></comment><comment><USER32> I was curious, so I actually ran both of the servers from the article on my little MacBook Air. The results are below.

First, go:

        $ ab -c 100 -n 10000 http://localhost:8000/
        This is ApacheBench, Version 2.3 <$Revision: 655654 $>
        Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
        Licensed to The Apache Software Foundation, http://www.apache.org/

        Benchmarking localhost (be patient)
        Completed 1000 requests
        Completed 2000 requests
        Completed 3000 requests
        Completed 4000 requests
        Completed 5000 requests
        Completed 6000 requests
        Completed 7000 requests
        Completed 8000 requests
        Completed 9000 requests
        Completed 10000 requests
        Finished 10000 requests

        Server Software:
        Server Hostname:        localhost
        Server Port:            8000

        Document Path:          /
        Document Length:        1048576 bytes

        Concurrency Level:      100
        Time taken for tests:   10.085 seconds
        Complete requests:      10000
        Failed requests:        0
        Write errors:           0
        Total transferred:      10489017384 bytes
        HTML transferred:       10487857152 bytes
        Requests per second:    991.62 [#/sec] (mean)
        Time per request:       100.846 [ms] (mean)
        Time per request:       1.008 [ms] (mean, across all concurrent requests)
        Transfer rate:          1015729.90 [Kbytes/sec] received

        Connection Times (ms)
                      min  mean[+/-sd] median   max
        Connect:        1    2   0.8      2       6
        Processing:    21   99   5.6     98     137
        Waiting:        1    3   2.7      2      41
        Total:         25  101   5.6    101     139

        Percentage of the requests served within a certain time (ms)
          50%    101
          66%    102
          75%    103
          80%    103
          90%    105
          95%    106
          98%    108
          99%    112
         100%    139 (longest request)

Secondly, node.js:

        $ ab -c 100 -n 10000 http://localhost:8000/
        This is ApacheBench, Version 2.3 <$Revision: 655654 $>
        Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
        Licensed to The Apache Software Foundation, http://www.apache.org/

        Benchmarking localhost (be patient)
        Completed 1000 requests
        Completed 2000 requests
        Completed 3000 requests
        Completed 4000 requests
        Completed 5000 requests
        Completed 6000 requests
        Completed 7000 requests
        Completed 8000 requests
        Completed 9000 requests
        Completed 10000 requests
        Finished 10000 requests

        Server Software:
        Server Hostname:        localhost
        Server Port:            8000

        Document Path:          /
        Document Length:        1048576 bytes

        Concurrency Level:      100
        Time taken for tests:   15.765 seconds
        Complete requests:      10000
        Failed requests:        0
        Write errors:           0
        Total transferred:      10487558651 bytes
        HTML transferred:       10486808576 bytes
        Requests per second:    634.31 [#/sec] (mean)
        Time per request:       157.653 [ms] (mean)
        Time per request:       1.577 [ms] (mean, across all concurrent requests)
        Transfer rate:          649639.92 [Kbytes/sec] received

        Connection Times (ms)
                      min  mean[+/-sd] median   max
        Connect:        0    1   1.7      1      11
        Processing:     2  156  34.7    159     272
        Waiting:        1   47  29.7     42     136
        Total:          2  157  34.7    161     273

        Percentage of the requests served within a certain time (ms)
          50%    161
          66%    174
          75%    182
          80%    187
          90%    198
          95%    209
          98%    221
          99%    227
         100%    273 (longest request)

Not only does go serve the traffic more quickly, but it also has a much lower standard deviation between slow and long requests. Impressive.

<comment><USER33> I'd be interested to see your numbers benchmarking with `siege' rather than `ab'.

<comment><USER34> I really love 'siege'. I wonder if you can get it show you response-time percentiles (or whatever they're called). I mean this (from `ab`):

        Percentage of the requests served within a certain time (ms)
          50%    161
          66%    174
          75%    182

</comment></comment></comment><comment><USER35> I run node/express for most of my web servers and each takes up about 10-15mb RAM. They're very basic no fluff. Anyone know what comparable mem footprint in Go?

<comment><USER31> Here's a quick paste from a server of mine:

        ps aux | grep api
        ubuntu   15720  0.0  0.1 107024  6136 pts/0    Sl   15:13   0:00 bin/api_server

<comment><USER25> IIRC ps displays the resident size in KiB, so you're looking at 6 MB for a Go process. Not terrible for a high-level language.

<comment><USER31> Yep, just ran ps_mem.py (<http://www.pixelbeat.org/scripts/ps_mem.py>) and here's my entire server. Not a busy one, but it lets you see what a running api server and accompanying programs look like.

        Private  +   Shared   =  RAM used	Program

        184.0 KiB +  31.5 KiB = 215.5 KiB	atd
        240.0 KiB +  55.0 KiB = 295.0 KiB	cron
        240.0 KiB +  68.0 KiB = 308.0 KiB	upstart-socket-bridge
        304.0 KiB +  72.0 KiB = 376.0 KiB	upstart-udev-bridge
        392.0 KiB +  79.0 KiB = 471.0 KiB	sudo
        696.0 KiB +  26.0 KiB = 722.0 KiB	dhclient3
        604.0 KiB + 189.0 KiB = 793.0 KiB	getty (6)
        940.0 KiB +  49.0 KiB = 989.0 KiB	dbus-daemon
        660.0 KiB + 366.0 KiB =   1.0 MiB	udevd (3)
        1.0 MiB +  71.0 KiB   =   1.0 MiB	rsyslogd
        1.1 MiB +  35.5 KiB   =   1.1 MiB	redis-server
        1.0 MiB + 122.5 KiB   =   1.2 MiB	init
        964.0 KiB + 733.0 KiB =   1.7 MiB	polkitd
        1.4 MiB + 823.5 KiB   =   2.2 MiB	console-kit-daemon
        2.5 MiB +   1.1 MiB   =   3.6 MiB	nginx (5)
        1.3 MiB +   3.2 MiB   =   4.6 MiB	sshd (5)
        5.4 MiB +  75.5 KiB   =   5.5 MiB	api_server <==== Go Program
        13.8 MiB + 963.0 KiB  =  14.7 MiB	bash (2)
        22.5 MiB + 314.0 KiB  =  22.8 MiB	mysqld
        41.9 MiB +   5.1 MiB  =  47.0 MiB	python2.7 (2)
        79.4 MiB + 542.0 KiB  =  79.9 MiB	java
        </comment></comment></comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>---
                            190.3 MiB
        </comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>===

</comment><comment><USER36> I find this post paired with this thread confusing. Yes, Go is tempting and I'd like to try it since a lot of people get quickly into flow with Go, the "package manager is so great" and "everything is just a breath of fresh air".

But what I don't like: the negativity against Node and omitting some facts. In the replies of the orignal post a guy tested two (!) times Node and once it was significantly faster (v0.6) and once it had same speed (v8.0). So, why has mjijackson such different results in this thread at the top?? And maybe we should test it on real servers and not on a MBA. Moreover, we have here some micro benchmark which possibly doesn't reflect reality well. Don't get me wrong, I appreciate any benchmarking between languages but then please do it right and make no propaganda out of it. Further, Go's package manager seems to be nice but it does NOT have version control. How do you want to use this in a serious production environment. Maybe version control will come (but then tell how without loosing its flexibility) or not but this is something serious and definitely not an alternative to any server environment except for some mini services.

EDIT: downvoting is silly, propaganda and won't help the Go community in getting more credibility, better do some further benchmarks; otherwise this post/thread is full of distinct misinformation and should be closed

<comment><USER37> Go's package manager does have version control. It looks for specially named branches (different ones depending on the version of go you have). The upstream authors can provide a different version of the software for different releases of Go.

If you want to lock down the versions of all the software you're deploying in your organization, that's easy to do too. Just "git clone" all of the libraries you use to some internal server (and/or github repos), and change the URLs to point to that server. You control when everything gets updated.

Golang builds static binaries anyway. So if you test a binary and it works, you just copy it to all the servers you care about and you're done. If you're in a small and informal shop, maybe you don't need to mirror every repository. Due to the nature of git, if the upstream repo ever gets deleted, you can fall back on a local copy of it anyway.

This is all very much in contrast to languages like Java where keeping around the proper version of every jar and carefully deploying that version (and only that version!) on each server is big deal (and despite OSGI, still very much an unsolved problem.)

<comment> grey-area The go import tool does version go std lib packages, but I think the worry is more about external packages - later when the go ecosystem matures, and I'm relying on lots of packages from different sources (say for a web app), with interdependencies, and I _must_ update them regularly for security updates, but don't necessarily want the latest master for all, I have no way to specify versions without rolling my own personal package management, downloading the packages and changing urls etc. If I'm in an org and sharing this with others I'd basically end up reinventing a package proxy internally in order to control what software versions are used to build.

This is a small flaw in the go packaging system (and it is a flaw) which I'm sure they'll fix, either with a convention to always use branches for versions (which I guess is doable, but only if it becomes widespread), or by changing import to take an argument for the version. So something like:

        import "github.com/gorilla/mux/1.0.3"

or

        import "github.com/gorilla/mux", ~> "1.0.3"

which would let you specify any minor updates say and possibly other permutations, and thus might be more flexible. I believe a few things have been suggested on the list but I haven't followed the conversation, not sure what the outcome was - perhaps just that it needs further thought.

At present the first solution is possible, BUT it needs to become a convention which everyone follows in order to be useful (involving named branches or tags at the repo). The other advantage of this is that it states requirements fully in the package concerned - otherwise all we know is that this code requires github.com/gorilla/mux, not which version or when it was last tested/imported, whether it will work with the latest release or not, etc. But then it would let you run into conflicts by accidentally importing two versions of the same package with different paths.

The current convention of no version certainly puts more onus on the package maintainers to maintain backwards compatibility, or on users to maintain their own library of packages which they periodically update, and I see the arguments for it.

Of course none of this matters if you're just one person using packages to build an app at one moment in time, but if you yourself supply packages/apps to others, or want to setup members of an org over time with the same set of packages in the same state, and rely on other packages to compile yours, it can become more complex.

Other package managers tend to have a central point to adjust package dependencies, and make sure packages are always available forever at the same uri, so it'll be interesting to see how go manages this when go packages become more complex and widely used, start to be removed by maintainers, and start to have complex chains of dependencies on specific versions, or whether the much simpler go system in the end leads to a saner situation and puts the onus for this problem back on end users.

<comment><USER36> Great having one bringing a balanced view on Go and showing that Go is still not ready for production when used with external libs. A refreshing take in this overhyped thread.

<comment> grey-area I'm not sure I'd agree that it is not ready for production, but there are some kinks (relatively minor I feel) which will become more apparent when it is used more widely than it is currently in production. Just as Ruby (for example) has gone through a trial of fire since becoming popular because of Rails, and has been much improved because of it.

</comment></comment></comment></comment></comment><comment><USER38> One advantage of node that wasn't mentioned is the ability to share server side and client side code. Avoiding discrepancies in the same form validation written in two different languages can often be more important than performance gains in server applications.

<comment><USER8> >One advantage of node that wasn't mentioned is the ability to share server side and client side code

You can do that with lots of languages, using one of the langX->javascript compilers.

>Avoiding discrepancies in the same form validation written in two different languages

What form validation are you doing in javascript? I can't actually think of any client side validation that isn't just a regex.

</comment></comment><comment><USER39> >There are also some officially maintained repositories outside of the stdlib that deal with newer protocols like websockets and SPDY.

Does anybody from HNers use Go with websockets? What package do you use?

</comment><comment><USER40> What do you use for persistence? I know what's available, but which database and library could be recommended for a low to medium traffic web site?

</comment><comment><USER36> How long does take the compile time with a medium sized typical web project. Something which gets annoying or still bearable?

<comment> grey-area If you mean go, compile time is very fast, even with say 10 kloc you'll still probably be under a second.

</comment></comment><comment><USER41> Is there a socket.io equivalent for Go? In terms of ease of use and at least providing the same functionality.

<comment><USER42> Looks like there are a couple packages that would solve this problem, but neither appear to be production ready or up-to-date.

<https://github.com/madari/go-socket.io>

<https://github.com/igm/sockjs-go/>

</comment></comment><comment><USER43> I wonder how Go compares to SilkJS, since SilkJS is much faster than Node.

<comment> robert-zaremba SilkJS uses mostly the same libraries and relay on the same VM as Node.js: V8. So it can't be much faster. The note how it outperform Node.js http server, you can read from start page of its github repository, are misleading since it uses multiple processes (SilkJS http server forks itself).</comment></comment>


Data-Intensive Text Processing with MapReduce - <AUTHOR> http://lintool.github.com/MapReduceAlgorithms/index.html

<comment><USER2> I bought this book when it was first released - very useful for two reasons: it describes different algorithms and their runtime for many common tasks, and, it is very short and is set up for quick browsing for what you need. Very good of the authors and publisher to release the PDF.

</comment><comment><USER3> I especially liked chapters 1-3 which are very good introduction to MapReduce, those chapters focus on non-text processing related aspects of MapReduce. Also it is very short, and free.</comment>


Copenhagen Consensus: ranked solutions to the world's biggest problems - <AUTHOR> http://www.copenhagenconsensus.com/Home.aspx

<comment><USER2> 1-13 are about treating the symptoms of failed states. How about we treat the disease itself instead? Politics and state building sure are a whole lot more complex and difficult, and don't make you feel nearly as good, as feeding children. But unlike food, and all kinds of other aid, they would actually solve the problem once and for all.

<comment><USER3> That sounds like a worthy approach. Any practical ideas on how to actually do it?

One possibility would be to allow a section of a country to secede if 60% of the population votes to do so. That might eliminate a popular reason for war in some situations.

<comment><USER4> > Any practical ideas on how to actually do it?

The (forbidden) answer has been staring everyone in the face for half a century: bring back colonialism.

[http://unqualified-reservations.blogspot.com/2009/08/from- cr...](http://unqualified-reservations.blogspot.com/2009/08/from-cromer-to- romer-and-back-again.html)

</comment></comment></comment><comment><USER5> The linked page doesn't really explain the purpose or methodology for arriving at the list. Put simply, "top economists" were asked where the world would get maximum bang for its buck, and this is the list they arrived at.

Yes, there are some source issues that might solve a number of the problems (as asdlfj2sd33 noted earlier). But sometimes it's quicker to deal with symptoms first, and when millions of lives are on the line I'm happy with that kind of shortcut.

That Global Warming ranks so low warrants attention. What sacrifices are we in the developed world causing by focusing on Global Warming and overlooking the other issues?

<comment><USER6> > That Global Warming ranks so low warrants attention. What sacrifices are we > in the developed world causing by focusing on Global Warming and overlooking > the other issues?

If you look at the numbers, global warming are not nearly one of the biggest challenges.

<comment><USER7> I think that this is more of a result of the way this particular study was structured then anything else. The study doesn't rank challenges, it ranks solutions.

</comment></comment></comment><comment><USER8> The Gates Foundation pays close attention to this consensus when it is released. Expect Gates' priorities to align well with this list.

The methodology is complex, but the concept isn't: for each issue, how many lives can we save per dollar spent? Rank those higher.

<comment><USER9> I take it they also discount the future somewhat?

</comment></comment><comment><USER10> It's not a consensus.

<comment><USER11> No it's politics. That's why it's called a consensus :-)</comment></comment>