A letter from my congressman - <AUTHOR> http://austingwalters.com/letter-from-my-congressman/

<comment><USER2> Are there any reasonably-powerful tech-related national PACs?

<comment><USER3> The EFF is probably the best you're going to get.

<comment><USER4> EFF is a 501(c) group, as is ACLU, but they both cover these issues aggressively.

<comment><USER5> We need to distinguish between the different sorts of non-profits, what they can do, and how effective they can be; I'll use the NRA as a concrete example because I know it well and many in this fight had noticed how very well it fights its own battles ... plus now it's filed an _amicus curiae_ brief supporting an ACLU lawsuit. (One of the very encouraging aspects of this battle is that it's very much not breaking down by the usual lines.)

So the first thing to remember is that "non-profit" or 501(c) does not equal charity, although a normal charity will be a non-profit, and if they jump through the proper hoops and the IRS doesn't politicize the process they'll be a 501(c)(3). Note that the IRS has very much _not_ stopped its stonewalling, and we can expect anti-spying non-profits to get the same treatment that "TEA Party" et. al. groups have gotten ... something to think about if you don't take to heard the advice written in blood about "First they came for the...."

So:

501(c)(3) organizations like the NRA proper or the EFF can do a variety of things including lawsuits, but when it comes to politics I think they can only "educate their members". Of course, if you use a web site as part of the latter....

501(c)(4) organizations like the NRA's Institute for Legislative Action (ILA) can do explicitly political things. Exactly how that breaks down is complicated, but they can do stuff like directly lobby legislators as long as that's not most of what they do. One very powerful thing they do is rate and endorse politicians and send out voter's guides before elections, little "just the facts, Mam" postcards that show how the relevant politicians voted on issues their members care about.

But there's a critical caveat here: this only works for the NRA/gun owners (NRA members inform their non-member friends of what they learn) because there are so very many of us, we have a _very_ strong grass roots that's by no means tied to the NRA proper (as some politicians have learned to their dismay), _and we vote_.

Look at the Total Recall of 2 Colorado state legislators including the Senate President due to their prominent roles in passing invidious gun control legislation. This was done from the ground up, one of the 2 efforts was started by 2-3 plumbers who'd never done this sort of thing before. The NRA only spent ~ $350K in the two efforts, the good guys were, last time I checked, outspent 8:1 by Bloomberg and the usual suspects, the MSM was on the anti-gun side, and the election laws had been ... curiously changed to make voting fraud very easy and it was brazen. Yet given all that, two career politicians will very soon be spending more time with their families.

Which gets to our particular problem, which is that we don't have that sort of grassroots, not will we if the NRA/gunowners are any guide before the national security state commits enough notorious atrocities, see here for more on this theme: [https://news.ycombinator.com/item?id=6185918](https://news.ycombinator.com/item?id=6185918)

Now to the more political organizations: the NRA of course has a PAC, the Political Victory Fund, but ever blessed post-Watergate campaign finance "reform" ensures the money they can give is purely symbolic. I.e. it sends a signal to gun voters, but little else.

Then there are the newer 527 Super Pac organizations. I haven't studied them closely, but as I understand it they can do just about everything but "coordinate" their efforts with a political campaign. But getting back to my above point about voting, unless you have a strong base of potential voters they can spend zillions of dollars without having anything to show for it. For the latest notorious example of this, see how in 2012 the Republican Party national level establishment nominated a Northeast liberal politician for president, establishment organizations like Karl Rove's American Crossroads spend 100s of millions, hismore than $100 million, and had nothing to show for it.

A political party that despises its base is just not going to do well.

We should take that lesson to heart and not "despise" _any_ who agree with our cause unless they're _utterly_ toxic to it (I mean NAMBLA, Stormfront, and ALA levels of toxic).

<comment><USER3> > The NRA only spent ~ $350K in the two efforts

 _Only_? That sounds like a fairly large sum of money to an organization like the EFF who presumably has political _enemies_ like Hollywood with deep pockets and no big allies -- the NRA at least has gun manufacturers, for example. Dismaying to say the least that that's the starting cost to enact political change.

ALA? The American Library Association? =P

<comment><USER5> ALA? Oops, it's the ALF, Animal Liberation Front, the "direct action" AKA terrorist organization, as opposed to People Eating Tasty Animals, errr, the People for the Ethical Treatment of Animals, who aren't hardly so toxic except for their _sub rosa_ support of the ALF and Earth Liberation Front.

As for "only ~ $350K", that's a significant hunk of change for the NRA (this was a very important contest), but it's nearly pocket change for Bloomberg, who has a net worth of $27 billion and regularly drops low 100s of millions in donations per year while his net worth keeps going up (per my memory): [http://en.wikipedia.org/wiki/Michael_Bloomberg#Philanthropy](http://en.wikipedia.org/wiki/Michael_Bloomberg#Philanthropy)

" _the NRA at least has gun manufacturers, for example_ "

A common and telling misconception (regime supporting propaganda is a very important factor in both of these fights), those represent a very small fraction of the NRA's income and influence; the National Shooting Sports Foundation (NSSF) is _their_ trade organization and lobby, the NRA is of gun owners.

This is very important because there are a whole lot more of the latter, and it's the 5 million members of the NRA that give it the money to spend on things like the commercials they ran in the Colorado recalls, and the votes and influence on non-member voters. Very important because per Wikipedia the ACLU has 1/10 the number of members and a budget of $100 million vs. $230 for the NRA.

Now, a lot of the NRA's budget goes to its traditional roles (training and marksmanship), but on the other hand the ACLU's remit is much broader, roughly all of the Bill of Rights except the 2nd Amendment. There are some local chapters that are sympathetic and supportive of gun owners but that's it, and I'd bet their budgets aren't including the the $100 million total, ditto all the local gun organizations, like the ones that sprung up out of nothing that took down these two arrogant Colorado legislators. It makes a very big difference when your enemies convict themselves with their own words and actions, and this anti-spying effort isn't _quite_ as blessed with those.

So the ACLU has a lot of influence, is a big player in the courts, along with other orgs, then again the Second Amendment Foundation (SAF) is the biggest Right to Keep and Bear Arms (RKBA) player in the courts, and with most of the cases being lost by the gun grabbers its partly self-funding through awards of expenses and attorney fees (there are some cute pictures you can find on the net of e.g. the head of the SAF holding a 6 figure check robo-signed by the mayor of Chicago). But for this effort ... heck, we have infinite trouble even getting standing to sue!

Anyway, getting down to what'll make a difference here, where we want NRA level political muscle, if the ACLU is the biggest player here, they can't threaten or influence legislators a fraction as much as the NRA and gunowners can. There are simply of magnitude more of members and voters for whom the RKBA is _very_ important, and per my linked comment I don't see that changing prior to a bunch of spying _atrocities_. Which the national security state seems to be pretty good at avoiding, e.g. the DEA's excesses in working directly with phone companies target drug dealers, whom are overwhelmingly viewed as scum of the earth (and as long as it's illegal, requiring self-help to settle disputes, that's not far from the truth).

</comment></comment></comment></comment></comment></comment><comment><USER6> There needs to be a kickstarter for bills. Issue by issue.

<comment><USER7> I just came across PopVox:

[https://www.popvox.com](https://www.popvox.com)

Pardon my ignorance, but is this startup well-known? It seems like a pretty good concept.

<comment><USER6> I've never heard of it... it's a start but unless there's actual money involved then I doubt that it can change much.</comment></comment></comment>


How Artificial Intelligence Will Really Kill Us All - <AUTHOR> http://paultyma.blogspot.com/2015/10/how-artificial-intelligence-will-really.html <comment><USER2> The "Ok Sauron" described in this article already exists: [https://www.palantir.com/](https://www.palantir.com/)</comment>


Your life's work - <AUTHOR> http://37signals.com/svn/posts/3389-your-lifes-work <comment><USER2> There isn't a 37 signals "voting ring" but pretty much we see about a blog per week from them of extremely low/general quality. Often they are of a lifestyle/why we didn't go big and why we are actually better than all the big IPOs changing the world nature. I mean this post boils down to "I love my company (that I own, not that I work for)". I think even if PG posted a blog so vapid, "I love Ycombinator, I can picture working here for years", even he would get a bit of fire. I certainly hope we aren't going to be seeing these vapid posts for a decade or more from 37S. You could randomly select a book from the self-help or business section of a bookstore, select a random page, and have a good chance of getting something more insightful than a standard weekly 37s post.

I seriously have nothing against them, I wish them more success even: just not success getting to the front page here because frankly they don't talk about interesting algorithms, technologies or business strategies. They are incredibly boring. No mobile, no Google glasses, no new computer game, no crafty actionable patio11 strategy, no raspberry pi hack, no programming language hack, no excellent presentation, no struggling story of success, no rejection and comeback, no scaling of servers, no clever command lines, no new SSH shell, no browser plugin, no investment philosophy, just "I love my business".

75% of their posts are simply not HN-worthy and there isn't a voting ring but there is probably a bunch of social contacts who are up voting this. Please just subscribe to their twitter or RSS because their weekly show here is frankly tragic and they should cut down to 1/4th as much and spend more time with their family.

Edit. Just to note I own a DHH book, so I will pay for the writing of this guy when it's actually worth it. I'm just saying this blog stuff isn't even worth free.

<comment><USER3> > there isn't a voting ring but there is probably a bunch of social contacts > who are up voting this.

Depends on how you define voting ring. It wouldn't surprise me if they let a load of people know every time something is posted, and these people just vote it up regardless of content.

> they should cut down to 1/4th as much and spend more time with their family.

Most of it is recycled. They wrote some blog posts, turned it into a book, and now they are recycling the book back into blog posts. As you say it's almost always short and low quality, so it probably takes very little of their time.

It's very clever marketing on their point, and there is very little that can be done about it, because there is no downvote on submissions, and 37signals is not likely to get blocked from the site.

<comment><USER4> Meh. I'm cynical of the voting ring algorithm.

I used to tweet when I wrote a new post on the Intercom blog but too many of my followers used to +1 the post and now it seems we're in some way blacklisted on HN.

Example: <http://blog.intercom.io/the-future-of-email-products/> this post when pretty much viral everywhere else, ~100K page views, submitted to HN lots of times by lots of people and I'm sure most of you guys have read it, but never gets anywhere. Curious.

</comment></comment></comment><comment><USER5> _I'd be happy if 37signals is the last place I work._

I've had this exact same attitude at every company (many!) I've ever worked at. Until someone or something completely outside my control fucked it up. Then I took my positive attitude and moved on to my next "last place to work".

Kinda makes a difference if it's _your_ company, huh?

<comment><USER6> I think we've fully transitioned from the old world, wherein we built our careers around a given company. These days we have to build our careers around skill sets, or industry circles, or knowledge bases. Essentially, the 40-year investment is no longer in Company X, but in Company Me.

This is not necessarily our choice. But the economy and the job market are a lot more fluid -- sometimes for good, sometimes for bad -- than they were in the past. Even if someone wanted to settle into one company for the long haul, that's not only unlikely, but perhaps even highly improbable. The company itself is likely to be changing and reorganizing at a pace as constant and rapid as its market.

The old tradeoff between BigCorp and Startups used to be that Startups were riskier and more exciting, whereas BigCorp was slower, a bit more boring, but highly stable. The stability has fallen out of that equation to a large degree. These days it's a choice between _relative_ degrees of comfort and risk, rather than absolute degrees thereof.

Again, much of this is market driven. There are startlingly few companies, big or small, that look anything like what they did five or ten years ago. It's a safe bet that they won't look the way they do today in another five or ten years. Some people thrive in this sort of environment, and those people would probably call it "dynamic." Others hate it, and they'd call it "unstable." Both would probably have to admit, one way or the other, that it's not as easy.

<comment><USER7> >Again, much of this is market driven.

Agree with this. Which is really the problem with this (from the original post):

>Working people to death to ship any one feature or product is a poor strategy, as it reduces the capacity to ship the next feature or product (burn out, build-up of bad rush practices).

Doing things like that is bad if you intend to still exist in 10 years, unless doing them is necessary _in order_ to still exist in 10 years. Because if you spend the extra time to get it right, and your competitor ships the minute it compiles, by the time your product is on the market a huge chunk of your prospective customers are already locked into a competing ecosystem.

"Take your time and do it right" is Big Company Thinking, because big companies can _afford_ to take a hit in a nascent business unit for a year or two in order to more than gain it back a decade down the road. If you're a startup, you often can't afford it -- even assuming your competitors don't beat you to market, "take your time and do it right" can easily cause you to run out of investment capital before the product is finished.

I don't mean to imply that this is actually a good thing, just point out that these are the incentive structures we're dealing with. Highly competitive markets have a lot going for them, but stability and long-term planning are not among them.

I kind of want to blame the antitrust laws, actually, for being such a catastrophic failure in every direction. On the one hand we have natural monopoly telecommunications companies abusing their control over radio spectrum into control over mobile computing devices and control over last mile wireline service into control over content delivery (classic tying arrangement in both cases), with nary a peep from the antitrust authorities.

On the other hand, we have the things that antitrust nominally does prohibit causing the market to run in the opposite direction from the _efficient_ characteristics of monopolistic markets (i.e. non-duplication of effort). When we have multiple startups working on the same general idea, the natural thing for them to do is to get together into a single unified organization and pool their efforts, but we make that illegal. So then they execute the classic race to the bottom where everyone cuts corners and works unsustainable hours just because the first mover gets the whole pie and so nothing is sacred if it can provide a meaningful competitive advantage.

I think we need to rethink this whole mess. The shadow of antitrust regulation and the _possibility_ of it being enforced is resulting in all of this widespread inefficiency while the almost complete lack of actual antitrust enforcement against anyone who deserves it is not even providing the supposed benefits that all of that inefficiency is supposed to be buying us.

I certainly don't mean to suggest that we don't need something _like_ antitrust -- we can't have AT&T and Microsoft and whatever oligopolies exist in whatever arbitrary industries turning into de facto unaccountable private governing bodies, which is exactly what would happen with nothing (and has happened to greater and lesser extents already), but what we have just isn't doing the job.

I'd be interested to hear if anyone has any suggestions.

<comment><USER8> _"Take your time and do it right" is Big Company Thinking_

You'd be surprised.

My experience with Big Companies is that it's done "the wrong way" far more often than at the startups I've worked for.

The reasons for this are many, but none of them have anything to do with being able to afford it. You still have deadlines and managers who want stuff finished yesterday. More crucial than that, in my experience, Big Companies have far less capable talent as well as projects that have been marred by outsourcing adventures.

Again, only my experience, but I thought I'd share since it runs counter to yours.

<comment><USER7> After I posted that I had seriously considered editing it to add the qualifier that it only applies to _good_ big companies. Because the same stability and economies of scale that allow long-term investments and future proofing will under the wrong management instead provide a ready environment for inefficiency, laziness and incompetence to continue to exist for a long period of time without bankrupting the company.

</comment></comment></comment></comment></comment><comment><USER9> This is a great insight, not just for work but for life in general.

When I moved to the Bay Area both my wife and I were scrimping and saving to come up with a down payment for a house. After living there six years we 'traded up' to a roomier house, and in the process of getting our existing house ready for sale, we did a lot of the stuff we had planned to do 'someday' but in this case to make the house more attractive. We redid the hall bathroom, fixed the lights in the den, simple stuff. It was a lot nicer house to live in just before we moved out. We decided our next house would be different, we would do the things that made the house more livable/nice when we thought of them, that way we could enjoy them ourselves.

The tricky bit is doing this even if you aren't "sure" you're going to be in the same place in 10 years. The fear is that if you suddenly are going to be doing something else, living somewhere else, well you could have used those resources better by not spending them on something you wouldn't use/enjoy.

My experience has been that it is always the right thing to invest for the long haul.

</comment><comment><USER10> I thought this was going to be something different based on the title. A few years ago I had a realisation: we are each of us _every day_ working on our life's work. Your life's work doesn't begin on some nebulous future date after you land that dream job or get to start a clean project in a fresh new codebase. The bug you fixed yesterday, the optional parameter you added to that method today: that's your life's work.

This was a transformative realisation for me. It empowered me to take the pride in my work that I knew I wanted to, and drove me to push myself a little harder. It was also useful in helping me see my long term career goals more clearly. Once you've thought " _this is what I'm going to spend my one and only lifetime doing_ " all the bullshit falls away.

<comment><USER11> I think of this realization in my own life as The Moment of Panic. Wherein I suddenly realized time was passing.

I don't think you can see that, until you test your abilities, and see your own potential. Maybe that's why it took me thirty years to get there.

<comment><USER10>
        > time was passing

This is an interesting alternative way of looking at it, yeah. I have said several times in the past that I basically live my whole life as if the "time running out" music from Mario was playing [1], but that's more about my impatience in everyday life than any wise long-term awareness of my own mortality.

[1] <http://www.youtube.com/watch?v=2pDzJC9R3HA>

</comment></comment></comment><comment><USER12> I think the main reason you don't see this sort of 40-year loyalty in the software industry is money.

The first software job I ever had was pretty much perfect in every respect. Great team, fun projects, respect & support all the way up to the owner, plenty of leeway to experiment with fun tech on the off chance that it might come in handy one day.

But they hired me at the market rate for a junior dev. And I got better fast. Like so fast that the things I built attracted attention elsewhere. And before the first year was out it was abundantly clear that I could make twice what I was making simply by responding to an email or two.

So I talked to management, and they did everything in their power to get me up to the market rate for a regular dev. Which was still way less than I ended up taking when I did eventually respond to one of those emails. (and a ton less than I was making a year after _that_ ).

Your value just goes up too fast in this business for a single company to keep up with. Nobody gives 100% raises every other year, but the market as a whole seems to be quite happy to do exactly that.

Unless that changes, I think we'll find that most people end up on a track like my own. We might find our dream job several times along the way. But unless we're pretty near the end of the track, it'll be hard to justify staying there forever.

<comment><USER13> "Nobody gives 100% raises every other year, but the market as a whole seems to be quite happy to do exactly that."

100% raises every other year? I should be making $30,720,000 a year by now! Gonna have to have a chat with my boss about this outrage!

<comment><USER14> I think it was meant to be applicable only a few times.

He has a point, though, about how unthinkable a 100% raise seems, but if you get another job it's entirely possible.

</comment></comment></comment><comment><USER15> I suspect the 37signals employment contracts still say "at will" somewhere in them. In fact, Jason Fried talked about exactly that at one point: [http://37signals.com/svn/posts/2239-employment-contracts- wha...](http://37signals.com/svn/posts/2239-employment-contracts-what-are- they-good-for)

If you want me to treat a position like it's the last one I'll take, then show me the same: treat me like a member of the team that you'll fight to keep around. Offer equity, take that at-will clause out of the contract, treat me like a partner in your success.

Anything else is just blowing smoke, I'm afraid. At the end of the day, you can be let go without notice (and, to be fair, you can also walk away at any time); that's the agreement you sign during your first professional interaction with most US-based companies. And it sets the tone for the rest of the relationship: this is a transient arrangement, and can be discarded as situations change on either side.

<comment><USER16> What are you actually asking for? Employment in the US is at will by default, unless the employer and employee sign a contract explicitly agreeing to change something about that relationship. What do you actually want in that contract to give you? A guaranteed huge severance package that incentivizes them to keep you? Something that fully makes them unable to fire you without demonstrated cause? Do you also want to lose some of the freedom you have to walk away if they sell and massively change company culture, start hiring worse people, change what they work on or what technologies they use in a way that moves away from your interests, etc?

Also, remember that if you want a company's default employment contract to be different, it will also be different for all of your coworkers. Eventually, the company will make a hiring mistake; no process is perfect. In that event, you want the company to fire the person as quickly as it becomes clear that a mistake was made, not hang onto them until they have unquestionably demonstrated incompetence. Do you want to work at a company that will dilly dally about firing bad people?

Talk to anyone who has worked at various government agencies, which basically can't fire anyone after two years, and you will gain respect for at-will employment.

<comment><USER17> Where I live you'd expect at a minimum a month's notice from either party (in the contract); 3 months is reasonably common. That's not a long time to wait to leave (and you can reduce it by mutual agreement; most companies will be happy to let you leave earlier once you've handed everything over), but it gives you at least a little time to hit the ground running. As someone who's currently going through the legally-required consultation process prior to redundancies immediately after getting a mortgage, had the company been able to simply say "nope, you no longer have a job, don't come in tomorrow" it would've massively screwed me over. (Of course, in a world where that was a possibility my actions would have been different).

As for hiring mistakes, thee months' salary (you're allowed to simply pay an employee for their notice period if you don't want them coming in) is not a huge expense compared to the cost of hiring them in the first place.

So yeah; I would never work for a company that wanted to be able to fire me without cause at zero notice, and I'm willing to put up with having to give notice myself as a cost.

<comment><USER18> You make a good point, but having to give 3 months notice before quitting or firing is not the same as being unable to quit or fire.

<comment><USER17> Indeed, but an environment where you have to give 3 months notice before quitting or firing is not "at-will employment".

</comment></comment></comment></comment></comment><comment><USER19> I attended a talk at SXSW a few years ago, mostly about the Millennial generation and their desire to work _with_ you, not _for_ you.

I'm no longer young, but I've bounced around to quite a few jobs because I've always run into a wall in terms of growth, personal growth within the organization, or professional growth - not expanding my skill set fast enough while limited to one employer.

As the founder of a company, you have a lot more control in pushing the envelope in lots of different ways, but I think the challenge is being able to create that for yourself vs. creating it for those that work for/ with you.

dhh can create 37racing, work from wherever he wants, push the envelope on technology as much as he desires, but I believe the challenge is giving the same to your employees, not just through profit sharing, but sharing the ways your company can grow.

</comment><comment><USER20> As I was reading I was thinking to myself, "Damn! This guy must really love his job. I can't imagine being that loyal to a company for years and years and years. Unless I was a co-founder and it was partly mine."

Then reached the end and it's DHH. Of course he wouldn't mind working there, he owns that place. That punchline made the entire article insipid.

<comment><USER21> his name is actually also on the top ;)

</comment></comment><comment><USER22> I've found that thinking of the next 5, 10, and 50 years is a useful mental trick. It puts me in a frame of mind that helps me make better decisions: will working myself to death on feature X help me 10 years from now? (Very rarely, the answer is yes.) Does it make sense to spend more time socializing, studying, or working? I don't want to exercise _now_ , but how will going to the gym affect me in 5 years?

The funny thing is that I make better decisions even with extremely short term projects. If I'm working on a 1-month software project, I'll get it done better _and faster_ if I have the perspective that I'll be using it for 10 years than if I have the perspective that I'll be using it for 6 months.

So it may be worth putting yourself in a long-term state of mind, even when it's not necessarily true.

</comment><comment><USER23> I see a lot of comments suggesting "it's his company, of course he wants it to be good for him!" (One commenter used the term "insipid").

There are worse things in the world than a founder looking to make a company a good place to work for the long term. Consider: _If shit is broken, we'll fix it now, lest we be stuck with it for decades._ Now think about people flipping companies, people playing hot potato with toxic assets, or looking for the next vote, or surge in page-views, and this attitude starts to look pretty nice.

<comment><USER20> Are you referring to my comment? I'm not quite sure if you're agreeing with me, or just going off on a tangent and not actually refuting my point.

</comment></comment><comment><USER24> _I'd be happy if 37signals is the last place I work. In an industry so focused on the booms and busts, I find myself a kindred spirit with the firms of old. Places where people happily reported to work for 40 years, picking up a snazzy gold watch at the end as a token of life-long loyalty._

I'm sure picking up the odd Lamborghini ( [http://gilesbowkett.blogspot.co.uk/2009/11/coyotes- pulitzer-...](http://gilesbowkett.blogspot.co.uk/2009/11/coyotes-pulitzer-and- dhhs-lamborghini.html) ) as a token of last month's worth of effort is also a good plus... :-)

<comment><USER25> The Lambo was peanuts compared to the custom Zonda.

[<http://www.leftlanenews.com/pagani-zonda-hh.html>]

</comment></comment><comment><USER26> I have yet to have this feeling for a company that I work at, but I do remember having this feeling for an online gaming "clan", back in the day. On battle.net, for Diablo, people would make clans and just game together, and eventually war other clans, etc. It was normal to "clan hop" around and join basically every clan until you're in the best clan. I remember the day when a friend and I jokingly joined what we thought was going to be a lame no-name clan, and we had intentions of sneakily doing something as members of that random clan. Turns out that we really enjoyed that clan and stayed with it. I remember the strange change of perspective that I had on clans when I realized that the clan I had joined was so enjoyable that it was without a doubt going to be better than any other clan out there, in my opinion. Because of that enthusiasm for the clan, we all ended up sticking together and ended up being like one of the longest lasting and well known clans of that time period. We moved off of battle.net and onto our own IRC server which we've all been on, every day, since like 2001. It's awesome what that kind of realization can lead to, if given the chance.

</comment><comment><USER27> There's a difference between being a long-term middle manager at _someone else's company_ and being a long-term founder at your own company. I wouldn't choose the former and I doubt DHH would either (of course, I don't know him so maybe I'm wrong).

<comment><USER9> The transitive insight here is that operating the company for the long haul comes from the top, so when I was at Intel there was never any doubt in my mind that Intel planned to be around 100 years from now, so being a middle manager there would (and for some has) been a lifes work. My manager there, the guy who hired me in 84 retired after having been there for 30 years (he had started in 1980).

</comment></comment><comment><USER28> "I'd be happy if 37signals is the last place I work. In an industry so focused on the booms and busts, I find myself a kindred spirit with the firms of old."

This guy is soooooo full of himself, it's pretty nauseating. He acts like creating basecamp has somehow solved world hunger... I'm amazed nobody calls him out on it more often.

<comment><USER17> The recent stories from Dustin Curtis have given me a lot more respect for DHH. Sure, he's not solved world hunger, but he's written a major, publicly useful library/framework, and he has paying clients who appreciate the work he does (in my limited experience a lot of consulting work is "easy" by software industry standards - but to a client with no expertise having someone who can do this stuff is a godsend. They don't pay you to solve hard technical problems, they pay you to integrate with their terrible systems and handle their lack of process). He's made the world a better place; perhaps in a small way, but few of us can hope for better.

And it's understandable that he gets a bit defensive, even angry, when unprofitable funded companies are seen to be "worth" more. I've been there and you get tired of having every customer ask "why are you charging more than company X", the real answer to which is "because we're an actual business making a profit, not a bunch of SV hipsters burning investor cash as fast as they can".

</comment></comment><comment><USER29> I've never once held a job that I thought I could do for another 5 years. I couldn't even imagine doing what I'm doing now for the rest of my life. I find that I usually get bored/tired of the BS after 2-3 years. Companies aren't loyal to their employees. I'm not loyal to them.

</comment><comment><USER30> I wrote about this once, FWIW... the technical skills one should focus on that have lasting value: [http://softwareboy.blogspot.com/2009/10/learning-things- of-l...](http://softwareboy.blogspot.com/2009/10/learning-things-of-lasting- value.html)

</comment><comment><USER31> Sounds a lot like Charlie Munger's philosophy that he likes to invest in few businesses that let him sit back and relax for a long time instead of constantly having to worry about getting out of a position at a profit.

</comment><comment><USER11> That's it, I'm applying to Valve.

<comment><USER32> Good luck and keep us posted! ;)

</comment></comment><comment><USER33> 10 years is an interesting test. Moore's Law predicts density increase of 100-fold ( _2^(10/1.5)= 101.6_ ). Cost and processing power usually follow. 100x faster phones overshoots most demand for desktops, so not only would desktops be replaced, we'd likely have an even-smaller form-factor than phones. That's _one_ decade.

What to invest in, that will still be relevant in decades? People and problem- solving. Maybe unix and web...

</comment><comment><USER34> "If you're not committed to your life's work in a company and with people you could endure for decades, are you making progress on it?"

It's a good question. This post reminds me of another question: Are your goals worthy of your life? If they're not, I think it's best to find a new company/project.

</comment><comment><USER35> I think you find this attitude a lot more in Europe than the United States. I see it in ZenDesk a lot too, living here in SF and having visited their offices a fair number of times.

</comment><comment><USER36> My life's work is my daughter. Actual work comes way, way behind.

</comment><comment><USER37> Good rant if you have a sucessful product to sustain your experimentional and fun lifestyle. For the rest of the crowd: keep calm and do work.

</comment><comment><USER38> That's just not for me.

</comment><comment><USER39> The USA will still have nukes. People will still drive cars. This aint changing...</comment>


In the company of colors: brand-color associations - <AUTHOR> http://www.filosophy.org/2011/10/09/brand_colors.html

<comment><USER2> Guessing the brands here is quite difficult, because the color samples have come from many different sectors. I don't think many people would be able to differentiate between the blues for LinkedIn and AT&T, or the magentas for Flickr and T-Mobile. However, if you showed me a blue sample and pink sample and told me they only represented social media sites - or mobile telecoms companies - then I sure as hell could tell you which one each is.

As a guessing game, I really liked "Unevolved Brands", where logos were reduced to circles and solid colors:

[http://www.flickr.com/photos/grahamsblog/sets/72157625155090...](http://www.flickr.com/photos/grahamsblog/sets/72157625155090078/)

<http://unevolvedbrands.tumblr.com/>

<comment><USER3> It would also be interesting to have these clustered by unlabeled industry and try to guess the industry.

</comment></comment><comment><USER4> I'd love to see this sorted by hue rather than in random order. Who knew IBM and Intel's blues were that close?

<comment><USER5> I was surprised at the range of blues (IBM, Intel, Facebook, GE), but I was also surprised how a few of the reds look identical to me (Lego, Coca-cola, CVS).

</comment></comment><comment><USER6> Google: all of the above.

Employees must hate that. How do you get company swag that doesn't look like a harlequin outfit?

<comment><AUTHOR> When I was making this a few of the companies that I thought to include, like Ebay, Google, and even the infamous Color itself didn't really fit the mold, because they didn't have dominant colors.

There are also some that don't really have color at all. Microsoft seems to just be black on white, even though the Windows brand itself was red, yellow, green and blue.

<comment><USER2> I always associated Microsoft with a medium-dark blue, perhaps because of the favicon?

<http://www.microsoft.com/favicon.ico>

</comment></comment></comment><comment><USER7> Also check out <http://kashiwasato.com/> web site of one of Japan's top designers.. Very conscious use of simple color palettes for striking branding. (Warning: site is heavy on flash and noisy..)

</comment><comment><USER8> Interesting to see that UPS stand out from the crowd. They chose that color because it looks professional and dignified, but I'm sure there is some benefit from not looking like the rest of the blue corporations.

<comment><USER9> Brown doesn't show as much dirt.

</comment></comment><comment><USER10> Hm. Looks like I need to calibrate my display. I can't even tell the difference between a few of them.</comment>


Xkcd explains relativity in top 1000 common words - <AUTHOR> http://www.newyorker.com/tech/elements/the-space-doctors-big-idea-einstein-general-relativity <comment><USER2> There's also Muppetlabs' "Albert Einstein's Theory of Relativity — In Words of Four Letters or Less" ⌘ [http://www.muppetlabs.com/~breadbox/txt/al.html](http://www.muppetlabs.com/~breadbox/txt/al.html)

<comment><USER3> Hum, until today I didn't realize how dificult is to maintain the focus reading a text with only words of four letters or less. No much visual clues about where you are in the paragraph.

In the other hand, for some reason I always thought that this twisted comic was created for the "evil mind" of a woman. One with a ponytail probably and specially clever :-). No pun intended. Is a small surprise to me to know that the author is a guy.</comment></comment>


VPN users more likely to steal content, says UK gov survey - <AUTHOR> https://www.trustedreviews.com/news/vpn-users-more-likely-to-steal-content-says-uk-gov-survey-3989743 <comment><USER2> All bleblorgs are red. Are all red things bleblorgs?

This anti-VPN framing is weird. The Government forces ISPs, via court orders, to block some websites. To evade that ban you use a VPN.

Most pirates use VPNs, but not all VPN users are pirates. The piracy uses of VPNs have ballooned since 2004 and the IP Enforcement Directive came into force, but this isn't something inherent to VPN use.

</comment><comment><USER3> It is this generalisation that creates a sense of danger. Not all VPN users are performing illegal activity.

As a developer and working on sensitive contracts (inc. public services), I would use a VPN to safeguard client data.

</comment><comment><USER4> Yeah right. Next time I'll go to a cafe and start using VPN just to secure things up, I will come up with what government thinks about me.</comment>


Play (A Lot) More - <AUTHOR> https://letterstoanewdeveloper.com/2020/04/20/you-should-play-a-lot-more/ <comment><USER2> What I like about programming in Common Lisp is that it is easy to occasionally go off on tangents "playing" \-- sometimes you end up improving something you've written before, but even if you don't, you end up not only enjoying the experience, you also solidify what you have learned.

To me, it's a lot like jamming out on the guitar. Sometimes a new song comes out. Sometimes a new riff or maybe an improved skill. More often, it's just a satisfying time spent on my gear of choice.

</comment><comment><USER3> Very good advice to old developers too. Devote more time to playing and don't worry if you accomplish/complete something or not.</comment>


What does docker.io run -it debian sh run? - <AUTHOR> http://joeyh.name/blog/entry/docker_run_debian/

<comment><USER2> This is a lot of what bothers me about docker too. It's worrisome that so many people are using it with unsigned third-party images.</comment>


Examples of beautiful Javascript - <AUTHOR> http://stackoverflow.com/questions/3894895/examples-of-beautiful-javascript <comment><USER2> One of the problems I have with articles like these is that they focus on Javascript's use in front-end development so the conversation settles on DOM tools examples of good Javascript.

Using Node.js (i.e. non-DOM server side Javascript) myself, I would love to see examples of beautiful Javascript in general i.e. linguistic best practices, not those specific to DOM programming.

Also, as a side note, for anyone interested in beautiful Javascript in Node.js, I love the examples posted on Express' Github repo: <https://github.com/visionmedia/express/tree/master/examples/>

<comment><USER3> Underscore.js works on both client and server.

<comment><USER2> Just took a look. Underscore.js looks very promising. Thanks for the tip!

</comment></comment></comment><comment><USER4> I don't use it, but I am quite impressed with the cleanliness of the Google Closure source.

[http://code.google.com/p/closure- library/source/browse/trunk...](http://code.google.com/p/closure- library/source/browse/trunk/closure/goog)

<comment><USER5> Agreed the google closure ecosystem is probably the most underrated one here on HN

</comment></comment><comment><USER6> More of this. I don't know javascript that well, but looking at the annotated underscore.js was really enlightening.

<comment><USER7> If you enjoyed that, perhaps you'll dig the annotated Backbone.js as well:

<http://backbonejs.org/docs/backbone.html>

Interesting bits are the somewhat-flexible linked list of custom events, the proxying-through of many Underscore methods for Collections, the "inherits" helper function, and so on...

</comment></comment><comment><USER8> <https://github.com/visionmedia/superagent>

<comment><USER9> Anything from TJ Holowaychuk is beautiful and extremely well-documented.

</comment></comment><comment><USER10> For some twisted interpretation of beautiful I guess <http://140byt.es> also qualifies</comment>


Human sperm steer with second harmonics of the flagellar beat - <AUTHOR> https://www.nature.com/articles/s41467-017-01462-y <comment><USER2> That is an incredibly difficult title to parse if you are from a certain background. I spent about a minute trying to imagine how someone might have made a human/cow chimera, and what that might have to do with harmonics.

In my defense, I had read the following article about rat/human chimeras earlier today:

[https://www.thesun.co.uk/tech/4867891/scientists-give- rats-c...](https://www.thesun.co.uk/tech/4867891/scientists-give-rats- consciousness-by-implanting-them-with-tiny-human-brains/)

<comment><USER3> A sentence where you begin parsing one way, find it it impossible to complete, and have to backtrack substantially (so that the intended meaning changes drastically) is called a garden path sentence

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

My favorite is "The old man the boat" :)

<comment><USER4> "Time flies like an arrow; fruit flies like a banana"

[https://en.wikipedia.org/wiki/Time_flies_like_an_arrow;_frui...](https://en.wikipedia.org/wiki/Time_flies_like_an_arrow;_fruit_flies_like_a_banana)

<comment><USER5> Trying to imagine time flies, here. Generally, I hate flies. I imagine that time flies bite something. But what?

<comment><USER6> banana? ;)

<comment><USER5> Something out of Lovecraft, I think.

</comment></comment></comment></comment></comment></comment><comment><USER7> So could someone theoretically produce music that if played very loudly during coitus would also act as a contraceptive?

<comment><USER8> [https://www.youtube.com/watch?v=8PVal8Fy7CM](https://www.youtube.com/watch?v=8PVal8Fy7CM)

</comment></comment><comment><USER9> This is an old NOVA episode about intelligent design but it has a nice explanation of the bacterial flagellum.

It starts at around 1:07:00 in the video.

[https://www.youtube.com/watch?v=7HZzGXnYL5I](https://www.youtube.com/watch?v=7HZzGXnYL5I)

</comment><comment><USER10> Who's gonna invent an ultrasonic contraceptive?

<comment><USER11> [https://www.ncbi.nlm.nih.gov/pubmed/407106](https://www.ncbi.nlm.nih.gov/pubmed/407106)

it's been known since at least 1977.

[https://m.timesofindia.com/home/science/Ultrasound-waves- as-...](https://m.timesofindia.com/home/science/Ultrasound-waves-as- contraceptive/articleshow/5923438.cms)

there's another company that confirms it works, yet denounces it for sake of supporting another contraceptive method they have produced that uses radiation.

[https://www.parsemus.org/projects/ultrasound/](https://www.parsemus.org/projects/ultrasound/)

</comment></comment><comment><USER12> If you're interested in the scripts (python!) and movies (xyz files for molecular representation) they used for analysis: [https://zenodo.org/record/884626#.WgV1XFz81R4](https://zenodo.org/record/884626#.WgV1XFz81R4)

</comment><comment><USER13> Nice that they provide open data:

"Data availability High-speed video recordings, extracted data, and analysis supporting the findings of this study are available in "zenodo" with the identifier doi: 10.5281/zenodo.884626."

</comment><comment><USER14> We have an early leader for the IgNobel prize.

(even though quite fascinating)

<comment><USER15> Not really, there are potential applications: Higher beat frequency components exist in other flagellated cells; therefore, this steering mechanism might be widespread and could inspire the design of synthetic microswimmers.

<comment><USER16> Not really, IgNobel doesn't mean it has to be useless:

> _The Ig Nobel Prizes honor achievements that first make people laugh, and > then make them think. The prizes are intended to celebrate the unusual, > honor the imaginative — and spur people 's interest in science, medicine, > and technology._ > ([https://www.improbable.com/ig/](https://www.improbable.com/ig/))

<comment><USER17> This is why homeopaths and ghost hunters don't sweep every year. It's not an award to shame the recipient, it's to highlight unusual or befuddling, but legitimate, scientific research.

<comment><USER16> Indeed. Just for example, the levitating frog experiment is a very clear example of just that.

</comment></comment></comment></comment></comment><comment><USER18> I know what all of those words mean, but not in this combination. Props to whoever wrote the title, I'm clicking/reading.

<comment><USER19> Let's start a band...that title could describe a new musical genre, one with the hip lyrics set to the flagellar beat.</comment></comment>


Online Storage Provider Box Prices I.P.O. at $14 a Share - <AUTHOR> http://dealbook.nytimes.com/2015/01/22/online-storage-provider-box-prices-i-p-o-at-14-a-share/

<comment><USER2> There isn't much content in the article worth getting around the WSJ Paywall;

        Online-storage company Box Inc. priced its initial public offering at
        $14 apiece late Thursday, above expectations, according to a person
        familiar with the offering.

        The deal raised $175 million by selling 12.5 million shares, according
        to the person. The company had been looking to sell 12.5 million shares
        in the range of $11 to $13 a share, according to a regulatory filing.

        Box's IPO comes roughly 10 months after it publicly filed for an IPO.
        Those plans were postponed amid a drop in demand for technology
        stocks, and in the ensuing months it turned to the private market to
        raise additional funding.

        Box plans to start trading Friday on the New York Stock Exchange
        under the ticker "BOX".

        The deal is being led by Morgan Stanley, Credit Suisse
        and J.P. Morgan.

(Hope it's okay to Mirror here)

<comment><USER3> Sometimes I wished all articles were written as:

Facts: Box, online storage co, CEO A. Levy, IPO set for xx/xx/20xx, previously raised $175M in x rounds, looking to raise $175M at PO, shares priced at $14, Underwriter is JPM.

Opinion: Blah Blah Blah

<comment><USER4> That's what crunchbase is for.

</comment></comment></comment><comment><USER5> The NYT[1] has some important context missing in the WSJ summary:

> At that price, the company will still be valued at $1.7 billion, but it is > well below the $2.4 billion valuation sold to investors in a financing round > last summer.

The float looks small though, so there's hope for last round's muppets.

[1] [http://dealbook.nytimes.com/2015/01/22/online-storage- provid...](http://dealbook.nytimes.com/2015/01/22/online-storage-provider-box- prices-i-p-o-at-14-a-share/?_r=0)

<comment><USER6> Good post. I don't understand why they focused on share price. Companies routinely do reverse share splits pre-IPO to make the total number of shares what they need to be for the valuation divided by shares to equal $12-18. That point seems to be just a magical desired range for SaaS IPO's. Someone smarter than I may know the reason, but I think they could have hit nearly any share price they wanted to.

</comment></comment><comment><USER7> More on the delay from announcing their intention to IPO to actually getting there. [https://news.ycombinator.com/item?id=8932932](https://news.ycombinator.com/item?id=8932932)

</comment><comment><USER8> Who actually uses Box? Does anyone here use their service? Do they have some submarket cornered?

Most of what I hear about them is related to their IPO or recruitment.

<comment><USER9> I don't know that they have a submarket cornered per se, but my university seems to be using them exclusively for the online class system (log in / download lecture files, etc).

On my own I've been using them for about 5 years, give or take. I use it over Dropbox a majority of the time. I personally like Box. I think it works well enough and it has a desktop syncing client for regular customers now. Used to be exclusive to business customers IIRC, so that was one of the things people didn't like.

<comment><USER10> What features does Box have that Dropbox doesnt? I realize that as a nonpaying user, I'm definitely not in the target market, but are there killer apps besides the normal usecases of a synced folder on all of your devices and sharing links to those files?

<comment><USER11> My university and hospital system recently rolled out Box across the whole institution. I think the major difference is that Box is willing to sign a Business Associate Agreement and ensure compliance with HIPAA standards. My understanding is that Dropbox has been unwilling to negotiate and sign BAAs, so the service can't be used for sensitive information without huge risk. At least at our institution, we can store deidentified research data on Box, and there are options available for storing Protected Health Information as well (though it requires going through our Information Security office)</comment></comment></comment></comment>


How a Mental Disorder Can Disappear from the World Overnight - <AUTHOR> http://nautil.us/blog/how-a-mental-disorder-can-disappear-from-the-world-overnight

<comment><USER2> All those words, and not one mention of the fact that psychologists show no curiosity about the causes of Asperger Syndrome or Autism, but seem satisfied to attach names to its symptoms -- and sometimes take the names away again.

But I shouldn't be surprised. The article's author is a "cognitive scientist" \-- the new name for psychologist. Speaking of giving old things new names.

</comment><comment><USER3> TL;DR: Aspergers is now considered part of the Autism Spectrum Disorder.</comment>


A Code Glitch May Have Caused Errors in More Than a Hundred Published Studies - <AUTHOR> https://www.vice.com/en_us/article/zmjwda/a-code-glitch-may-have-caused-errors-in-more-than-100-published-studies <comment><USER2> I've implemented algorithms I dug out of original research papers, which often included sample code. (That's why I first learned to read Fortran!) I've almost never gotten results that match the authors' exactly. Sometimes the bugs are obvious, and sometimes they're subtle. I'd estimate that 100% of sample implementations in published research papers have bugs. Researchers, even in computer science, are usually not skilled programmers. The product for them is the paper, not a program.

It's the same category of problem as "enterprise software". Whenever the _customer_ is not the _user_ , the user gets screwed. With research, the customer is the journal.

<comment><USER3> Something I don't get is why universities don't to a better job of having professional statisticians and programmers on staff for the explicit purpose of providing support to researchers.

I guess grad students are cheaper and "good enough."

<comment><USER4> As I understand it, most large universities have something like this. At smaller schools it might be less formal. Where I went to college, the students were expected to have their methodology approved by the "stats guy" in the department.

As for programmers, it's not just a matter of cost. Most scientists don't understand software engineering, but most software engineers don't understand science or math. Also, programmers who belong to their own organizational structure can't keep up with requirements that could change from one hour to the next. Despite "agile," realistically most software development is comfortable with timelines of months or years.

Don't get me wrong, I'm an R&D scientist at an industrial business that makes commercial software. The programmers are brilliant, and the software they make is amazing. But I have no choice but to be self sufficient for my own software needs in R&D. It's two different worlds.

<comment><USER3> If given a good spec, a clearly written formula, I don't think it's too unreasonable to expect a seasoned programmer to implement it despite not understanding the science that prompted the math. Maybe I'm wrong for some kinds of exotic math, but I've certainly implemented a few mathematical formulas that looked like Greek to me, at least when I started.

Moreover what I propose is that every researcher have a programmer available to consult with, who would perhaps write small amounts of code (perhaps make sure the code builds before it's published?) I don't suggest that researchers not write code, I think they should write code. But I think an expert in writing code should be available to help keep the standard of code high.

<comment><USER4> In my view, it would help a lot to provide scientists with resources for learning how to write quality software. Most of us don't even know how to write a specification, except by writing the code, and don't have an idea of what we want until we see something begin to work. Today, a lot of the math we use is written directly in code.

This stuff evolves over multiple iterations. Many of my programs never run more than once. Testing them requires being connected to the equipment if any kind of closed-loop control is involved.

I work in an R&D setting in industry. If something I make threatens to become a product, the thing I hand over to the software team is a proof of concept, that could include a hardware design and working code.

</comment></comment></comment></comment></comment><comment><USER5> Writing code in research is quite different from writing code in industry. For starters, in research, absolutely no one will read your code. Not your boss, not your peer reviewers, not your colleagues, not your tech-savvy users. No one. They just care about getting the right results and will complain if they don't, which _most of the time_ steers you into producing correct code.

Also, most programs usually have a maintainer team that's exactly _one_ (1) person strong, and that person is usually an underpaid grad student or postdoc with a billion other tasks at hand and not much time left for that issue you opened three months ago.

On the other hand, hey, you never have to fear the dreaded 'code review', so it's not all bad.

<comment><USER6> > Writing code in research is quite different from writing code in industry

Hah, not always.

A short while back I was tech lead for an AI project, the goal of which was to reduce the weight (and, ergo, cost) of large steel structures.

The megacorp consultancy I work for decided to staff this project _only_ with AI people, about half of which were fairly fresh graduates. Now, they all had a great grasp of AI, both old-skool (neural networks, genetic algorithms, particle swarm optimisation etc) and more recent innovations. But these were _not_ developers.

The customer was a Microsoft shop, and mandated that we use C# (which was cool, it's my favourite language!), but it was immediately apparent that the "devs" had only basic training in Java. The code was a f _cking mess, and we had numerous issues around software engineering concerns such as source control, DevOps and processes - the customer eventually canned the project due to the bugginess of the platform. They really did have some brilliant minds on the project, but those were not the minds of software engineers.

On a more recent AI project, unusually I was consulted first on staffing, and I insisted on a mix of AI research types _and* software engineers - unsurprisingly, this project was far more successful.

<comment><USER7> Seems like your formatting was messed up by putting an asterisk in "f*cking", which caused everything to be rendered in italics between that word and the "and" which you actually wanted to be in italics.

<comment><USER6> Bah, on mobile, apologies :/

</comment></comment></comment></comment><comment><USER8> A couple of years ago I looked over the alignment software used in a bunch of genetics studies and spotted a pretty trivial mistake that caused mis- alignment of the strings. This in turn led to wrong conclusions about the order in which mutations took place. This sort of thing is probably quite common: biologists are not computer programmers (though the combination is for sure occurring), they tend to treat the computer programs in roughly the same way as they would treat lab equipment, stuff goes in, other stuff come out. If it looks good and seems to work then it probably is good.

But the complexity of the software is such that you need to check _very_ carefully whether or not the software operates in the way you expect it to.

<comment><USER9> You could also choose to use formally verified software for sensitive research.

<comment><USER10> Full-time developers don't (to a first approximation) use formal verification, much less research scientists.

<comment><USER11> Other way around. Research scientists are the ones that may (or should) require additional rigor in their results. Formal verification would presumably help in that regard.

<comment><USER10> I don't disagree, I'm just saying that we as full-time software developers have not made formal verification standard practice, or even approachable. I would bet the average software developer has never even heard of it. So to expect people who do not write software full-time to do so is a little crazy.

</comment></comment></comment></comment></comment><comment><USER12> You have to dig really hard to find out what the specific problem was. It turns out this was the fix:

        def read_gaussian_outputfiles():
            list_of_files = []
            for file in glob.glob('*.out'):
                list_of_files.append(file)
            list_of_files.sort()
            return list_of_files

That is, the original code never sorted the files and instead it trusted that a simple `glob` would give it files sorted in whatever is the desirable way.

It is a reasonable mistake for a total noob to make (just like the hundreds of simulations which use the built-in `rand` function of whatever language they are using without even so much as mentioning this pertinent fact), this should be called a "programming error" instead of a "code glitch". Also, the error should be publicized up-front.

<comment><USER13> So many comments in this thread are saying that scientists are bad programmers, but even a great programmer can make mistakes like this. The solution isn't related to better programmers, but instead for users to treat codes as instruments, and hence a verification and calibration step.

<comment><USER14> I would say it depends on the thought process that caused the bug. There are a couple of possibilities I can think of:

Did the author of the code simply forget to sort? That's equally likely to happen to anyone.

Did they assume that the sort order of glob.glob() was reliable across different OSs and file systems? I don't think this would have happened to an experienced software developer. At least there would have been enough doubt to go read the first line of the docs.

Did they not care whether the code worked anywhere outside their own personal setup? This is perhaps slightly more likely in an academic environment but I'm not completely sure about that. We'd have to know more about the specific circumstances.

What I find more astonishing is that it took so long for this bug to be found. It's not exactly an edge case or a rounding error. It must have caused wildly incorrect results in many cases.

So I think the more important differences may be on an organizational level rather than a question of individual competence.

</comment></comment></comment><comment><USER15> It's too bad that the code and correction seem to be locked down, but the linked Twitter discussion has an explanation [1]: the code expects Python's glob to return a sorted list of files, but it doesn't guarantee this (the main fix is to sort the result). I had thought reading the Vice article that this would be about case-sensitive vs insensitive filesystems.

[1] [https://mobile.twitter.com/bmarwell/status/11818211438352015...](https://mobile.twitter.com/bmarwell/status/1181821143835201536)

<comment><USER16> Are they locked down? The article links to the paper [0], which has two zip files to download, first of which is the code, including an explanation of the corrections made [1].

[0] [https://pubs.acs.org/doi/10.1021/acs.orglett.9b03216](https://pubs.acs.org/doi/10.1021/acs.orglett.9b03216)

[1] [https://pubs.acs.org/doi/suppl/10.1021/acs.orglett.9b03216/s...](https://pubs.acs.org/doi/suppl/10.1021/acs.orglett.9b03216/suppl_file/ol9b03216_si_002.zip)

<comment><USER15> Ahh, I failed to click those. They seemed large enough to be "not the code, but the full dataset". Thanks for the correction!

</comment></comment></comment><comment><USER17> Oh man, a sorting error of files due to filesystem differences.. A very similar issue happened to me while doing astronomy during undergrad. This was a software pipeline for a specific telescope and I followed the guide they provided. Essentially there were two directories, one for images, and another for error estimates. Files in both directories had the same filename. The software needed text documents of the images and errors. The guide listed to do a basic 'ls images/ > images_list.txt` `ls errors/ > errors_list.txt`.

HOWEVER HYPERTHREADING WASN'T ACCOUNTED FOR. Between the images_list.txt and errors_list.txt about every 20 or 30 lines the file order would be swapped. Invalidating the analysis and producing poor images.

It only took this undergrad two months to learn what was happening.

<comment><USER18> 'Piles-of-files' is itself a bug in an era where sqlite exists and has bindings for virtually every language. Concurrent writing can almost always be reasonably avoided by keeping the processing parallel but serializing the writes. In cases where that earnestly isn't sufficient, a 'proper' RDBMS is a good option.

Pile-of-files is 1960's era tech. We've learned much since then and our hardware is much more capable. Unless you're shooting for the retro-UNIX aesthetic for artistic reasons, it should be avoided.

<comment><USER19> I don't think this is one size fits all advice. Surely once your results are measured in TBs this will fall part.

</comment></comment></comment><comment><USER20> This is another great example illustrating the need for reproducible research practices even in the hard sciences, in this case so that the papers in question could be easily checked after Luo's excellent finding.

For an earlier discussion on the same topic, referencing other discussions: [https://news.ycombinator.com/item?id=17819420](https://news.ycombinator.com/item?id=17819420)

(Top comment: "This article harkens back to discussions of the "reproducibility crisis" in science, as discussed extensively here just recently (see link below). Where, in this case, not coughing up the code used in the simulations in a timely manner led to an apparently unnecessary multi- year dispute.")

</comment><comment><USER21> Copy pasting a comment I left almost a year ago:

> A few weeks ago I had a conversation with a friend of mine who is wrapping > up his PhD. He pointed out that not one of his colleagues is concerned > whether anyone can reproduce their work. They use a home grown simulation > suite which only they have access to, and is constantly being updated with > the worst software practices you can think of. No one in their team believes > that the tool will give the same results they did 4 years ago. The troubling > part is, no one sees that as being a problem. They got their papers > published, and so the SW did its job.

My own experiences when I was in grad school (engineering, not CS): No one cares about code or code quality. In those days, no one used version control. The attitude all my fellow grad students had was: "I don't need to learn this stuff. Just need to publish this paper. When I become a PI, I'll simply make it my student/post doc's job"

</comment><comment><USER22> I've always felt like there should be a way to connect experienced software developers with research groups- something like this, for example, should have been never happened with code review.

For example, one could imagine a program that connects developers with with research groups to help develop good code, or with conferences to test submitted code.

Does anyone know if there already exists a program like that?

<comment><USER23> there is an organization called Software Carpentry that is basically like this.

however, the real problem has more to do with incentives and funding than it does knowledge of software best practices. right now, if you take the time to write thoroughly-tested clean good code, all you're doing is handicapping your research career against people who can churn out papers faster than you. you can see this because code from computer science departments is nearly as bad as in other fields, even from students who have had real industry jobs and learned how to do the right thing.

it does seem like in this case, though, because the scripts were actually intended as a tool to be used by others, the investment in more careful testing might have been warranted.

</comment></comment><comment><USER24> Most scientists are not software engineers so would not know about comprehensive testing. This was an eye opener to me when I moved from academia to a scientific software company.

The situation is improving somewhat as many grad students open source their software in github. Then have include their makefiles, documentation, and some tests. In earlier days we we software engineers would roll our eyes when management suggested using 'free' university code to save money. Sometime bringing such software up to professional industry standards took more work than starting from scratch from published papers.

</comment><comment><USER25> The Reinhart-Rogoff error is probably the most famous Exel error in economics with huge consequences.

Their 2010 a paper, Growth in a Time of Debt [https://www.nber.org/papers/w15639](https://www.nber.org/papers/w15639) convincing dataset to show that when external debt reaches 60 percent of GDP, annual growth declines by about two percent.

This only paper was used as top level politicians in the US and Europe to show that austerity is the only option. It started widely damaging pro-cyclical austerity policy during regression. The corrected result don't show any change in growth when debt to GDP ratio goes above 60 or 90 percent.

<comment><USER26> The paper claimed a -0.1% decline at 90%, not -2% at 60% as you mentioned, but only in advanced countries, data in emerging countries was much worse. The Keynesian economists who countered showed their data when extended over a longer timeframe and without weighting was actually +2% at 90%, this too seems be limited to advanced economies. High debt ratios in emerging markets still seems to have a negative correlation AFAIK.

Regardless, in practice, it looks like the study was completely ignored in the US anyway:

[https://fred.stlouisfed.org/fredgraph.png?g=FHS&nsh=1&width=...](https://fred.stlouisfed.org/fredgraph.png?g=FHS&nsh=1&width=600&height=400&trc=1)

Around 2010 the debt only dramatically increased above 100% instead of declining, and has continued to grow.

In the EU, comparing debt to gdp in 2012 vs 2019 shows that there has been little decline there either:

[https://i0.wp.com/factsmaps.com/wp- content/uploads/2018/02/d...](https://i0.wp.com/factsmaps.com/wp- content/uploads/2018/02/debt-to-gdp-ratio-european- countries.png?fit=2400%2C1800)

[https://www.statista.com/graphic/1/269684/national-debt- in-e...](https://www.statista.com/graphic/1/269684/national-debt-in-eu- countries-in-relation-to-gross-domestic-product-gdp.jpg)

<comment><USER25> That's because the Democratic Party had majorities in both chambers. The paper was in the center of Rebublican policy led by Paul Ryan.

<comment><USER26> Oh apologies I misunderstood your comment:

> to show that austerity is the only option. It started widely damaging pro- > cyclical austerity policy during regression

I've found much of the fear mongering around austerity to be pretty overblown. It's been pretty rare to find examples of austerity except for some cases in the EU where attempts to reign in debt in countries like Greece where it was 180% (and still is today). Otherwise almost all of the advanced countries have kept it around 60-100% even almost a decade since the recession.

Moderate Keynesian and monetarist policy remains incredibly popular following the recession and in many places higher debt only became more popular even during the good times.

Even looking at the American right, besides Paul Ryan's failed proposal 9yrs ago, there's little evidence of the debt being lowered even during republican majorities in Congress and Senate.

Yet if you follow Krugman and the like you'd think austerity has been a giant problem in the west.

The world's a lot more boring and moderate than the fear mongerers like to admit.

<comment><USER25> > Yet if you follow Krugman and the like you'd think austerity has been a > giant problem in the west.

I don't follow Krugman closely since he is not macroeconomist, but Krugman's back of envelope calculation was correct in the retrospect.

Obama's stimulus was roughly of what needed and half of what was needed was the result. (tax benefits are not proper stimulus). According to CBO the US economy was 6.8 percent below its potential translating into $2.1 trillion of lost production. Lives were destroyed permanently due to prolonged recession.

</comment></comment></comment></comment></comment><comment><USER27> There was a rumor when I was in econ grad school that there was a huge bug in Stata in the nineties affecting standard error calculations, rendering a large fraction of the studies from that time invalid.

<comment><USER28> Stata doesn't even version its packages, so it's literally impossible to reproduce research as you can't retrieve the packages as they were then.

The maintainer of a popular package could choose to change their api today and all code using it would break with no way to revert.

Stata is insanity.

<comment><USER27> I agree. And it's expensive whereas R is free and a much much much better language.

</comment></comment></comment><comment><USER29> When I mentioned here some time ago, that maybe we shouldn't be trusting our climate science models so much, as they consist of millions of lines of poorly tested code, I was heavily criticized...

<comment><USER30> Not trusting them is reasonable, but then where does that leave you? You don't know then whether they're underestimating or overestimating things. I'm strongly in favor of building a prior from the geological record and leaning on that as much or more than the models, but that doesn't lead to a very different conclusion.

<comment><USER29> I guess that, at least compared to society in general, I'm a cognitive nihilist? I highly doubt that it is in our power to predict with useful accuracy something as complex as climate. If I'm not mistaken, we're still having problems modelling stuff a billion times less complex than climate (such as an air flow in turbines etc.)...

<comment><USER30> Generally, more uncertainty around climate change means you should be more supportive of climate change mitigation rather than less, because it means we can't rule out things that look like the P-T extinction.

<comment><USER29> There's infinite number of events which we can't rule out. My approach is basically the opposite - if the evidence for something is super-sketchy, maybe we shouldn't spend trillions (or even quadrillions?) on preparing for it.

<comment><USER30> The evidence is completely airtight. The problem is with the precision of predictions, not the evidence for the mechanism and rough magnitude.

</comment></comment></comment></comment></comment></comment><comment><USER31> I am a neuroscientist and a good portion of my laboratory's scientific output is code. I can offer a perspective.

Every few months, a case like this one emerges. A published software contained a scientifically relevant bug and this may have had an influence on other studies that used that software. The reaction is always the same: blaming the naivete of the researchers because they are not professional coders.

While I would certainly love to see more interaction between professional coders and scientists, I don't agree with the overall sentiment. I find it counterproductive and even naive for several reasons:

1) mistakes happen. Wikipedia has a long and certainly not complete list of software bugs that had major consequences ( [https://en.wikipedia.org/wiki/List_of_software_bugs](https://en.wikipedia.org/wiki/List_of_software_bugs) ) and most of them come from professional coders in all kind of industries. There is no doubt whatsoever that code produced by scientists is in generall less streamed, less reviewed, and way uglier but is it on average more buggy _where it matters_? Unless we answer this question, the discussion is moot.

2) Scientists who produce software by themselves do this according to Open Source philosophy meaning that the code can be scrutinized by anyone. I'd rather use a possibly buggy but open-source software over one that I cannot even scrutinize. I think published results should only be accepted if they rely on open-source software: we would never accept a figure of a paper unless the protocol was 100% disclosed. This is one aspect where we can all immediately act. As a reviewer, I will never accept a paper that made use of new software unless the code is an integral part of the paper. I urge all my colleagues to do the same. Also, as authors, if you have to write software from scratch, take code readability into account exactly for this reason. Python is a good choice for this reason. R much less so.

3) we must encourage scientists to take on more coding, and not the opposite. If we keep telling them that they are not going to be good enough, we are not helping. A the moment the trade-off is very clear: either not-professionally coded software or no software whatsoever. Fields like crystallography have shown that the former option can still be extremely favorable.

</comment><comment><USER32> I've been asked to consult on a number of programs used for scientific research or environmental modeling.

In one case a science student was expected to work on a C++ simulation for his dissertation. The existing code base had been written by other grad students from previous years. It was clear that no one involved had any experience with C++ and it wasn't going to be possible for him to do a good job with the existing source code. Fortunately, in this case, the C++ based simulation was eventually dropped.

Another time a team of professional civil engineers couldn't understand why their model was able to make predictions that perfectly matched their experimental data. It predicted a poorly understood physical phenomena (algae blooms) so perfectly that they asked me for help. In a couple of minutes I was able to explain to them how they had overfitted the model to the small sample of experimental data and that the model likely had no predictive value at all.

I was asked once to debug a large program used to understand the dynamics of floods. The program contained some of the worst coding practices I've ever seen. For example, the same global variables were reused for completely different purposes in different parts of the program, sometimes X2DDRATE meant one thing and later on some paths it contained a completely different kind of measurement with entirely different units. This was done in an effort to "save memory" by not having too many variables.

A different ecological model I helped repair needed to compute the integral of a function at one point and used the following method: pretend the function was a straight line so that the integral could be computed as the area of a triangle. _The function was a simple, uncomplicated exponential, something that a high school math student could integrate exactly._

</comment><comment><USER33> Researchers should consider making their papers runnable. Jupyter notebooks being a great tool for it. Also, check out Knuth's literate programming.

<comment><USER34> I was going to say that would almost make things worse: right now these sorts of bugs are discovered by attempting to _re-implement_ the described algorithm, and discovering that the described algorithm was wrong. If the code was available but wrong, most people would just run the code and find the same wrong answers as the original researchers.

But actually I think that's wrong; far more people would run the code than currently try to re-implement the code; and it's likely that _someone_ will notice something fishy about the code and report it.

<comment><USER35> Well, we don't have to wonder since this was done with PBRT.

Result? An incredibly high quality codebase with many hundreds of subtle fixes over time coming from readers and researchers.

</comment></comment></comment><comment><USER36> > "We all kind of assume that a computer program always spits out the correct > answer."

I'm a bit surprised at this.

<comment><USER37> I'm not at all. Googling your problem and running your dataset through the first random R package on github you managed to install seems to be an accepted approach in the biomedical fields. If you're lucky they might even list which package it was in the paper's methods.

</comment></comment><comment><USER38> Retraction Watch has many, many, many examples of this type of thing.

[https://retractionwatch.com](https://retractionwatch.com)

</comment><comment><USER39> This simple glitch in the original script calls into question the conclusions of a significant number of papers on a wide range of topics in a way that cannot be easily resolved from published information because the operating system is rarely mentioned,"

In computer science it is a common practice to mention the experimental setup along with OS hardware configuration and third party libraries used for reproducibility purposes. Still many papers suffer from reproducibility. Now the conferences are demanding docker containers with all dependencies and configs. Which improves a bit better. But still lack of data is another reason why we can't reproduce papers.

</comment><comment><USER40> On this specific bug, I really wish Python just returned a sorted directory listing on every platform. It goes back to Python's original philosophy of passing through OS level behavior rather than standardizing like Java.

</comment><comment><USER41> Most of the comments on here talking about repeatability, but I'm concerned about correctness too. It's $40 to have 48-hour access to the paper, and I'm not going to do that right now, but hear me out. The order in which the operating system listed the files made a difference. So just having it be the same everywhere doesn't necessarily fix the problem. What if it's the same everywhere, but still isn't the correct order for what the researcher intended? Everyone gets the same error, and that error isn't necessarily 0.

</comment><comment><USER42> Oh don't tell me it's a spreadsheet app.

<comment><USER41> It says clearly it was a Python script

</comment></comment><comment><USER43> Should have used MATLAB.

</comment><comment><USER9> Why not use formally-verified software?

<comment><USER44> Usually because the people capable of writing formally-verified software do not understand the specific subject area, and the people that understand the subject area are not generally capable of writing formally-verified software.

<comment><USER45> For a perspective of a mathematician that came to evangelize theorem provers, I recommend Kevin Buzzard's MS 2019-09 presentation [0] about LEAN. He highlights cultural misunderstanding and apathy on both sides of the domain divide. He also references the idea that the people who might make the appropriate tools may not have stayed in academia. So, he's structured his courses around using LEAN with the indirect consequence that power users (undergrads) may choose to become open source committers.

[0] [https://www.youtube.com/watch?v=Dp- mQ3HxgDE](https://www.youtube.com/watch?v=Dp-mQ3HxgDE) One hour of presentation and then 15 min of q/a. My favorite is around 1:04:00 when someone asks a second time why he disprefers coq, and Buzzard complains that it can't represent some advanced quotient type that he'd have to work around. I'm reminded of [1]

[1] [https://prog21.dadgum.com/160.html](https://prog21.dadgum.com/160.html) Dangling by a trivial feature

<comment><USER46> Having been inspired by that video by Kevin Buzzard and finally finding something that would be worth formalizing, I am trying out Lean at the moment. I have about 2-3 months of Coq experience, so I can say that even without the quotient type, Lean is much better designed than Coq. I can't vouch for how it will do at scale since I've only started it out, but from what I can see, Lean fixes all the pain points that I had with Coq while going through Software Foundations.

It has things like structural recursion (similar to Agda), dependent pattern matching (the biggest benefit of which would be proper variable naming), unicode, `calc` blocks, good IDE experience (it actually has autocomplete) with VS Code (I prefer it over Emacs and the inbuilt CoqIDE is broken on Windows), mutually recursive definitions and types, and various other things that are not at the top of my head.

If I were to sum it up, the biggest issue with Coq is that it does not allow you to structure your code properly. This is kind of a big thing for me as a programmer.

</comment></comment></comment></comment><comment><USER47> Is kind of like if there is a CPU glitch

<comment><USER48> From the article:

> Luo's results did not match up with the NMR values that Williams' group had > previously calculated, and according to Sun, when his students ran the code > on their computers, they realized that different operating systems were > producing different results. Sun then adjusted the code to fix the glitch, > which had to do with how different operating systems sort files.

</comment></comment><comment><USER49> I feel like, where feasible, scientists should adopt Kubernetes or something so that the software they use is repeatable.

<comment><USER50> There's definitely a big push in that direction in the scientific community right now. More and more tools and pipelines are getting distributed as containerized workflows.

Big projects have realized the need to make their code available and versioned just as they do their input data, side by side with hashes recorded all the way along and reproducibility made as simple as possible. Now we're starting to see it trickle down into less organized/large/disciplined projects as well.

<comment><USER51> Containers as a technology are nice, but it's easy to fall back into the same traps that make software non-reproducible using containers as well. You _can_ precisely specify all your dependencies, but it often takes a lot of effort to make that happen.

I'm a fan of the approach Guix developers are taking for scientific computing, because it makes reproducible software simple enough for people to use without too many headaches: [https://hpc.guix.info/blog/2019/10/towards-reproducible- jupy...](https://hpc.guix.info/blog/2019/10/towards-reproducible-jupyter- notebooks/)

<comment><USER52> Isn't the whole idea behind containers to eliminate external dependencies?

<comment><USER51> In a sense. You're right that once a container is built, it has few external dependencies. But you need to get those dependencies from _somewhere_ at build-time, and if you're not careful it's easy to do that in a way that makes it extremely difficult to rebuild that container in the future.

To use a slightly more concrete example: let's say you're using a library in your container that has a severe bug. This bug results in incorrect computations, so you would like to upgrade to a fixed version.

Now let's say that when you built that container initially, you installed packages in the Dockerfile by running e.g. "pip install <package>". The problem is that once this image is built, it's nontrivial to rebuild this image and ensure you're using the same dependencies you were the first time. In a sense, you've lost that information (though you can probably start to figure it out with close inspection of the image).

Yes, there are usually ways around this with the language-specific package managers; Node has package-lock.json, Python has Pipfile.lock, etc. But it's not even close to being the default.</comment></comment></comment></comment></comment>


Show HN: Mojofiend giving away free coffee to San Francisco residents - <AUTHOR>

Looking for feedback on our new service www.mojofiend.com. We're developing a new kind of loyalty program that works kind of like a coffee club. You buy 4 coffees anywhere in San Francisco and we'll give you a free coffee at a premiere cafe. <comment><USER2> I like free coffee.

I don't use Facebook for log-in to services. You don't say why Step #1 is "give you lots of my financial info."

Site design needs some polish. There are a few unfinished edges. Color palette is too muted and visually homogeneous.

<comment><USER2> Downvote trolls on a critique thread are sort of pathetic. If you don't agree, provide dissenting feedback. It will be much more useful.

</comment></comment><comment><USER3> clickable: <http://www.mojofiend.com>

</comment><comment><USER4> Interesting concept... I'd go with a different name though.

I'm assuming it is just "selling" loyal customers of a product/service to businesses in exchange for them giving a sample of their product for free. Could work well in other industries, as long as you can ensure it isn't abused (i.e. I buy $1.30 coffee 4 times at Tim Hortons/Dunkin Donuts, then get a free organic latte ($5) at the place down the street... )

<comment><USER5> I don't think they need to worry too much about abuse.

I think part of the value prop here from mojofiends perspective is that they are providing coffeeshops potential new customers. The coffeeshops that are offering them a $5 coffee don't care if the incoming customer has spent only $1.40 on coffee before today much the same as they don't care whether they bought a new tv yesterday. They just want access to potential new customers.

Groupon has proved how much businesses want potential new customers, I think this is an interesting twist and will perhaps generate better leads for coffeeshops than a groupon would.

<comment><USER4> While I agree in theory, you have to think about the conditioning of a customer. The guy spending $1.40 is not likely to become a recurring customer of a $5 coffee, but rather look at it like a treat or "reward" that they get for free.

If you're getting new customers in the door that aren't looking to buy a product in your range, is it worth it? Here is an extreme example: If you buy a Kia you get a free BMW test drive... the Kia buyers are likely not going to ultimately buy a BMW unless their socioeconomic status changes, and conversely, the BMW market has no interest in a Kia etc.

Of course there may be caps on it, etc, but perhaps a better option would be buy 4 coffees, get a free donut/bagel (or complimentary product, etc.) This would encourage spending of a normalized product (i.e the coffee), along with bringing the customer through the door with incentives & the intention of buying.

</comment></comment></comment><comment><USER6> Facebook login button doesn't work on Ubuntu 64bit chrome.

</comment><comment><USER7> Looks really neat! Any plans to expand to the UK? :)</comment>