60% of women in tech reported unwanted sexual advances - <AUTHOR> http://elephantinthevalley.com/ <comment><USER2> I wish when people use survey statistics that they would show us the original question. For example I wanted to know if the sexual advances question was specifically AT WORK, or if it could be at any point in their lives in any context.

If they're just asking if women who happen to work in tech _now_ have ever received unwanted sexual advances in their entire life, well, that is worthless without a non-tech statistic to compare/contrast it to.

Also what is an unwanted sexual advance? Someone touching someone? Someone asking someone out once? A boss pressuring their underlings for sex/dates? It has no precise meaning.

Unfortunately I spent some time studying Sociology in my youth and one of the biggest takeaways from that was "you can make people agree with any position you want by changing the wording on the questions." So precisely what you ask is super important for knowing what to do with the conclusion. We actually created surveys where we got completely opposite results from exactly the same democratic just through word-alterations (on purpose).

<comment><USER3> > If they're just asking if women who happen to work in tech now have ever > received unwanted sexual advances

Given that only 60% of women reported unwanted advances, it's safe to say that it's not "at any point in their lives in any context." That being said, you make a good point about disclosing details of study.

<comment><USER2> > Given that only 60% of women reported unwanted advances, it's safe to say > that it's not "at any point in their lives in any context."

Do you have data on the level of unwanted sexual advances over the course of a woman's life? I just googled it and cannot really see too much.

PS - Although boiling down a definition of an "unwanted sexual advance" is required to compare/contrast different data sets.

</comment></comment></comment><comment><USER4> Why is the word "unwanted" relevant? Presumably if unwanted advances are not OK in the workplace, wanted ones aren't either, unless the issue is inadequate telepathic abilities among tech workers.

</comment><comment><USER5> On the internet you can always trawl for a few thousand users that happen to agree with you. When they say sixty percent, they mean sixty percent is their estimate of how many women would report sexual advances, based off of a survey taken by volunteers taking time out of their day to report on gender in the tech industry.

<comment><USER6> They pull similar tricks with college sexual assault statistics too. They don't ask "Have you been sexually assaulted?" Instead, they ask about a laundry list of scenarios. If you say that one of them happened, you're now a sexual assault victim, even if you don't agree and even if that incident never reached the threshold of illegality. A good analogy is regular assault, which legally includes verbal threatening language. Who hasn't had a heated argument with a friend or family member? But imagine if a survey counted you as an assault victim just for agreeing to the statement "someone has threatened me during a verbal altercation". The law is intentionally defined broadly but applied narrowly. Collecting statistics that count people as victims of violence, when they wouldn't even count themselves, is deceptive and dishonest. It's being done to justify kangaroo courts in colleges, and government mandates in private business.

Disclaimer: Just to preempt the easily offended, I obviously acknowledge that sexual and regular assaults are real crimes that happen way too often, but the statistics being thrown around are ridiculous.

<comment><USER7> > _They don 't ask "Have you been sexually assaulted?"_

People have different definitions of sexual assault. Asking about specific scenarios is a way to control for those varying definitions, and it's a standard requirement of good survey design.

There may be problems with those surveys, but the solution is not to just ask, "Have you been sexually assaulted?"

<comment><USER6> Yes, but shouldn't you ask that question too? It's extremely relevant.

The law was written in the context of how it would be applied. It was not designed as a metric for sexual violence in our society. It was designed as the legal rules that judges, just one part of the process, must apply once a case is brought before them. And only then in the context of constitutional law and old common law like _de minimis_.

</comment></comment></comment></comment><comment><USER8> I'm pretty sure nearly all women (and most men) get "unwanted sexual advances" at least a few times in their lives. After all we can't read each other's minds. The crucial question to me is not whether advances happen, but whether they stop when it is made clear that they're unwanted.

</comment><comment><USER9> And how many in non-tech? Let's say, fashion industry?

<comment><USER10> Exactly... We can draw exactly zero conclusions regarding gender inequality in the tech industry without a control sample...

<comment><USER11> Sure we can - let's say we look at the fashion industry and see it's just as bad there - or even worse. So what?

That doesn't mean that as an industry we should put up with gender inequality. Gender inequality is an incredibly irrational historical artifact and in times where it's so hard to hire excellent employees - creating a gender equal workplace gives employers an edge.

This sort of data can give employers the confidence that investing in fixing the problem would indeed help giving them an edge over other workplaces since the problem is so widespread.

<comment><USER10> I agree with most of your points. Gender equality is an important issue in society at large. But the makers of this site are drawing a tech-industry- specific conclusion, so they should at least attempt to present unbiased data.

</comment></comment></comment></comment><comment><USER12> These results might be subject to survivorship bias: all the women who quit the industry before they got 10 years of experience because of these negative experiences are silent. All the women who dropped out of CS in college. All the women who went to a hackathon once and never again.

<comment><USER13> I can't believe this was the most downvoted comment for a bit.

It's true and incredibly relevant. The responses from women with 10+ year experience paint a shocking enough picture, and this survey doesn't even cover those women who left the industry or never felt welcome in the first place.

</comment></comment><comment><USER14> 200+ is hardly a representative sample for the entire tech industry, especially as most of these reports were taken from the Bay Area. There's also no control group (other gender, other industries). And what specifically is an unwanted advance with regards to these statements?

I'd like to see the peer review on this one, to tell you the truth.

<comment><USER7> Using a control group here doesn't make sense because we're not trying to benchmark SV against other places, nor are we doing an experiment. This is a survey.

Furthermore, if there are 400,000 tech workers in Silicon Valley, then 200 gives us a _less than 8% margin of error_ (95% confidence level). This still gives us a result of at least 50%.

But we're not surveying the entire tech industry, we're surveying women in Silicon Valley, which is a number much closer to 100,000 (although that doesn't radically change our margin of error).

<comment><USER15> Honest question: do those confidence levels account for how the participants are chosen? Or is it assumed that it's random?

<comment><USER7> Randomness is assumed for my number. However, there are lots of ways this survey could have been biased:

\- women who were assaulted, harassed, or threatened have already left SV

\- women who were assaulted, harassed, or threatened were more likely to respond

\- women who don't believe in an anti-female culture in SV were more likely to respond

\- etc.

It's up to the designers of the survey to control for these things within the survey and/or disclose them. Unfortunately, they haven't.

</comment></comment></comment></comment><comment><USER16> Does anybody know of couples successfully formed on the workplace? Seriously curious here. I have witnessed two personally. Maybe your coworkers, you friends or even yourself? For each of these, someone had to first try and make an advance ; Presumably without knowing in advance if wanted or not. Sexual harassment is not seriously characterized by this metric. Or these two couples of mine started with some...

</comment><comment><USER13> Okay, HN - forget the surveys and methodology. Your actions will be local, so your data will be too. Take a look around you, in your workplace. Are there actually any female developers working alongside you? How about in engineering management, and at the executive level?

The problem is there. It's staring you in the face. The tech industry has not offered the same opportunities to women as it has to men.

Act now and solve it. Don't wait for that perfectly conducted longitudinal study, covering a representative sample of women entering the industry and their experiences ten years later. You don't need it to see what's happening.

<comment><USER17> "Act now and solve it."

By doing what?

</comment></comment><comment><USER18> This article was, of course, flagged into oblivion within minutes of being posted, despite having 27 upvotes, because Silicon Valley is quite sure that there's no sexual harassment problem.

<comment><AUTHOR> I posted the article. I may be misinformed to what 'flagged' means, but I see no reports or 'flags' on my screens and whatnots. I am not a power user in any sense. As of writing, I see no downvotes, just an upvote total of 35. What does being flagged mean here so that I may avoid it or recognize it in the future?

<comment><USER19> Yours is the survivor that gained traction. There were earlier (and perhaps later) postings that were flagged (I'm guessing because of duplication rather than nefarious intent.)

<comment><AUTHOR> Thanks for the clarification.

<comment><USER18> Every user who has been around for a while has a "flag" option for every story, to be used for stories which should not be on HN, such as spam. Your posting briefly made the front page, then was flagged off of HN by people clicking that link.

There's nothing you can do to avoid it except avoid posting stories which imply Silicon Valley has any sort of sexism problem.

</comment></comment></comment></comment></comment><comment><USER20> What is a non-disparagement agreement? And I would like to see a similar survey of men.

<comment><USER21> "A Non-Disparagement clause restricts individuals from taking any action that negatively impacts an organization, its reputation, products, services, management or employees.

Example Definition: Disparaging remarks, comments or statements are those that impugn the character, honesty, integrity, morality or business acumen or abilities in connection with any aspect of the operation of business of the covered individual or entity."

[http://www.contractstandards.com/clauses/non- disparagement](http://www.contractstandards.com/clauses/non-disparagement)

</comment></comment><comment><USER22> [Meta comment.] It is a shame you can't get credibility points for downvoting.

</comment><comment><USER23> What is "unwanted" sexual advances? Is it a colleague asking out for a drink, ignoring that the woman was already seeing someone or not interested in dating? It is "unwanted", but the colleague may just have been taking a shot. It is said that work is the main environment where people find their partner.

Now, if "unwanted" means "He asked, I declined and he kept asking me out every day after that" then yes it is a problem.</comment>


It is now legal for US firms to start using drones in a limited manner - <AUTHOR> https://www.washingtonpost.com/news/the-switch/wp/2016/08/29/as-of-today-its-finally-legal-to-fly-drones-commercially/ <comment><USER2> Now companies can start legally innovating in a way they should have been able to do for the last few years.

There's risk to drones - and companies can buy insurance to cover themselves. If they make a mistake, don't have insurance, and cause harm, they can be sued.

I wonder how long before the black market of remote drone operations companies shows up. Then the FAA will demand more regulation.

<comment><USER3> > they can be sued

This only works in a world when you assume that the person in question has

1) Assets sufficient to cover the cost of their negligence.

2) Will not die to avoid liability.

Given that the liability for aerospace accidents can be quite high and that many people can choose to die without loss of human life, these assumptions aren't very sturdy.

<comment><USER2> If someone made a bad choice, hurt someone, and was sued and had all of their assets taken from them, that would be a great motivation for everyone else to get insurance.

Insurance companies, being eager to not pay out, would adjust their premiums based on the riskiness of the drone driver.

Carrying heavy payloads above people? If you mess up, the insurance company could pay out many millions. Your costs go up accordingly.

Carrying a camera above fields for crop imagery? Almost no insurance risk, tiny premiums.

There's no way for _regulation_ to cover the massive potential drone market without relying entirely upon a Procrustian Bed [0] form of "responding to the market".

[0] [http://www.dictionary.com/browse/procrustean- bed](http://www.dictionary.com/browse/procrustean-bed)

Oh, and re: #2, the person killing themselves to avoid liability - I doubt they'd be that swayed by regulation in the first place. They've got other problems than a lack of insurance.

<comment><USER4> I think the "people" killing themselves are meant to be corporations.

</comment></comment></comment></comment><comment><USER5> Regarding line of sight. I wonder if companies could just erect a pilot tower (in a relatively flat region). I know where I live 40 feet of height would give a pilot visibility to millions of homes because it's pretty flat. Maybe they need binoculars to see the drone when it was a certain distance away, but maybe that's within regs?

<comment><USER6> The FAA has said no binoculars: [https://www.faa.gov/news/fact_sheets/news_story.cfm?newsId=2...](https://www.faa.gov/news/fact_sheets/news_story.cfm?newsId=20516)

      > (for example, no binoculars)

<comment><USER7> _That 's not to say it will never happen: Companies can apply for special testing waivers from the FAA that allow them to go farther than what the rules permit. And those are generally approved on a case-by-case basis. The FAA is also running an experimental program called Pathfinder that's looking at how companies like CNN and others can fly drones over people (for example, for newsgathering purposes) and in beyond-line-of-sight operations.

The FAA has granted 76 of these waivers. Of those, 72 had to do with flying at night, which is still prohibited under the official regulations._

</comment></comment></comment><comment><USER8> my friend works at a startup that will likely be one of the first flying drones commercially outside of line of sight :)

[http://media.precisionhawk.com/topic/faa-grants- precisionhaw...](http://media.precisionhawk.com/topic/faa-grants- precisionhawk-bvlos-waiver/)

<comment><USER9> To be fair, people have been operating drones commercially outside of line of sight for years now (many of them even legally) using FAA exemptions. There's a number of YouTube videos which show this occurring (look for a FAA exemption ID to be included in the video or description).

</comment></comment><comment><USER10> Stay up to date!

[https://www.faasafety.gov/search/default.aspx?keywords=drone...](https://www.faasafety.gov/search/default.aspx?keywords=drone&submit=Search)

[https://www.faasafety.gov/search/Default.aspx?keywords=suas](https://www.faasafety.gov/search/Default.aspx?keywords=suas)

</comment><comment><USER11> Should the title be amended to indicate that this is referring to the USA? I appreciate that the article is in the Washington Post, but it would be nice to be able to get a more accurate summary straight-up.

<comment><USER12> OK, we've updated the title.

</comment></comment><comment><USER13> Why was the title changed to include "for firms"? Do we have some British editors here? Strange since the FAA ruling only applies to the US, where we'd call them "businesses"

<comment><USER12> From the article:

> _On Monday, an important set of federal drone rules finally took effect > across the country — making it possible for firms to start using drones in a > limited manner._

</comment></comment><comment><USER14> Clickbait title.

> The drones can be flown only during the day and can't be flown over people > who aren't somehow related to the flight. They can fly only up to an > altitude of 400 feet, a speed of up to 100 miles per hour and they have to > stay within visual contact of the operator.

In other words, it's not legal to do any kind of comercially interesting drone flights

<comment><USER15> I was about to comment that: how exactly is this useful? In New York, there's not a lot of places you could fly that _aren 't_ over a person unrelated to flight?

<comment><USER16> I've read a lot of articles about farmers using drones to remotely view their fields, with stuff like thermal cameras so they know what needs to be watered. Can't immediately think of any other common uses, but people are creative. And as the article says, the rules should loosen a little by the end of the year.

<comment><USER9> Search and Rescue, cinematography (which includes things like filming flybys of houses for realtors, in addition to making films), remote mapping (including mapping out fires), agriculture (frequently using IR and other camera technologies), delivering small payloads to remote locations (such as tools or materials to smokejumpers or mountain climbers), remote inspection...

Think of anything we use a helicopter for now, and drones will probably help cheaply supplant those uses wherever possible.</comment></comment></comment></comment>


Words, Gestures Are Translated by Same Brain Regions - <AUTHOR> http://www.nidcd.nih.gov/news/releases/09/11_09_09.htm <comment><USER2> Some counterevidence to their hypothesis is the dissociation in some aphasic patients between the ability to process sign language and the ability to process meaningful gestures that are not part of a sign language. For example, some of these people have quite a bit of difficulty interpreting their native sign language correctly but show completely normal performance in interpreting ordinary gestures or pantomimes. The most striking cases involve iconic signs. Most gestures in a sign language (e.g. ASL) are completely arbitrary, but there are some which look very much like pantomimes of the object or action being described. For some of the aphasic patients, these pantomimic signs are just as hard to interpret in a linguistic context as the arbitrary signs, even though they are perfectly capable of interpreting pantomimes in non-linguistic contexts. This suggests that it can't be precisely the same bit of the brain that's doing both.

It seems more likely that what both tasks have in common is something higher level -- an element of trying to figure out what another person is trying to convey, given what you know about them and the context.</comment>


Show HN: js.spec, a JavaScript implementation of clojure.spec - <AUTHOR> https://github.com/prayerslayer/js.spec <comment><USER2> I think of dynamic typing in a language as a big pro and a big con at the same time, but it's one of the things that makes a language like JavaScript or closure what it is.

I love typing systems too, there are compelling advantages...and disadvantages.

I guess sometimes what seems strange is attempts to bolt type systems on to fundamentally dynamic languages, like adding two extra wheels to a motorcycle, extra fairing, and then calling it a car.

I don't fault anyone for wanting a car. But if you wanted a car, why not start off with a statically typed language? Why bolt this stuff on really in contravention to what the dynamic languages are trying to be?

Perhaps this is JavaScript fatigue in a new guise? If everything has to be JavaScript (for whatever reason) then having no static typing ever may be hard to live with?

Am I missing something or does the motorcycle with two extra wheels seem destined to be clunkier and less flexible than a proper car?

<comment><USER3> Spec (and more generally, contracts) aren't just about "making up" for the lack of static typing. They can encode a variety of invariants that a type- system can't, and are also useful for parsing (see coercion) and generative testing. Unlike most type systems, they also aren't required across the whole code base.

<comment><USER4> Parsing and generative testing are well-covered by static types, but I'll give you that contracts can enforcing things static types cannot. That said, static types can enforce things that contracts cannot, too.

Furthermore, in my experience I find use of the things that static types can catch and contracts cannot on a nearly hourly basis while I rarely to never use things that contracts can check but static types cannot.

<comment><USER5> > static types can enforce things that contracts cannot

Example, please?

<comment><USER4> Sure. Consider the type

        forall a. a

With mild conditions on what the program fragment achieving this type can do I can be certain that this function does not return. It is an error, an infinite loop, or simply does not exist.

No contract can verify this because they inspect the value and thus get stuck by infinite loops.

I don't use that sort of thing often, but here's a simpler one:

        sort :: Ord a => [a] -> [a]

I know that `sort` only uses the ordering properties of the values within the list. It could be generalized to `forall a . (a -> a -> Ordering) -> [a] -> [a]` in which case it would be totally oblivious to the values inside of the list except in that it probably applies that function.

No contract system can examine functions. No contract system can prove universals. Types can do both (in certain, principled ways).

\---

Another interesting example is handling something like a channel. In Haskell, we have the type `TChan a` which is a channel carrying values of type `a`. In Clojure, the best we can do for giving a contract to a core.async chan is to say it's a "chan containing something" or even "a dereffable thing returning something". To use a contract here we'd have to check every value that ever pops off the channel.

Contracts check shape, but cannot ensure usage.

</comment></comment></comment></comment></comment><comment><USER6> Seems cool.

Also worth checking out: tcomb[0] which can let you use your Flow types at runtime for eg; pattern matching.

[0] [https://github.com/gcanti/tcomb](https://github.com/gcanti/tcomb)

<comment><AUTHOR> Cool, thanks for sharing. I didn't know that one.

</comment></comment><comment><USER7> Have you used js.spec or clojure.spec in production? Has it helped you catch bugs that you would have otherwise missed? How does the runtime-only limitation work out in practice?

I know that flow has prevented me from checking in bugs, because I've tried to push up code with e.g. misspelled property names and the pre-push hook stopped me.

<comment><USER3> One of the Clojure validation libs predating spec, schema, has saved us from a ton of errors, and works similarly. It also opens up reasoning about data shape- eg, auto-generating test data based on schemas. spec's support for that use case is even better.

EDIT: You can see schema in action in [https://github.com/cardforcoin/shale](https://github.com/cardforcoin/shale). In fact, the latest build surfaced a bug via schema- [https://circleci.com/gh/cardforcoin/shale/379](https://circleci.com/gh/cardforcoin/shale/379). Next version we're planning to migrate to spec.</comment></comment>


Man who created own credit card sues bank for not sticking to terms (2013) - <AUTHOR> https://www.telegraph.co.uk/finance/personalfinance/borrowing/creditcards/10231556/Man-who-created-own-credit-card-sues-bank-for-not-sticking-to-terms.html <comment><USER2> News also say the parties eventually dropped mutual complaints, but no details are provided, and those details look critical to the whole story. For example, did Agarkov pay the principal, as ordered by the court? And, of course, what lead to dropping the charges - was it some extrajudicial pressure from Oleg Tinkov's organization?

</comment><comment><USER3> (2013)</comment>


Java: Why does this random value have a 25/75 distribution instead of 50/50? - <AUTHOR> http://stackoverflow.com/q/27625611/630372

<comment><USER2> This proves that sometimes you need deep understanding of the tools at your disposal or you risk developing flawed software. See: [https://github.com/composer/composer/commit/ac676f47f7bbc619...](https://github.com/composer/composer/commit/ac676f47f7bbc619678a29deae097b6b0710b799)</comment>


The Copyright Lobby Absolutely Loves Child Pornography - <AUTHOR> http://torrentfreak.com/the-copyright-lobby-absolutely-loves-child-pornography-110709/ <comment><USER2> During the 1964 presidential election race, Lyndon B. Johnson suggested that his campaign team air an ad alleging that an opponent had once had sexual relations with a donkey. An advisor pointed out the claim was untrue. "I know it's not true," Johnson replied, "but I want to hear him deny it!"

<comment><USER3> Do you have a source for that?

<comment><USER4> From "Fear and Loathing on the Campaign Trail '72", p. 247:

The race was close and Johnson was getting worried. Finally he told his campaign manager to start a massive rumor campaign about his opponent's life- long habit of enjoying carnal knowledge of his own barnyard sows. "Christ, we can't get away with calling him a pig-fucker," the campaign manager protested. "Nobody's going to believe a thing like that." "I know," Johnson replied. "But let's make the sonofabitch deny it."

<comment><USER5> It's often said that politicians have "no morals" but this - ig verified - really demonstrates a complete lack of decency that is quite galling to me. Subverting democracy with smutty name-calling, seriously; and these are supposed leaders of the people.

Such a small thing would so sully the office of the POTUS so as to genuinely discredit the USA for me.

What's worse is I fear that such a fiend would have no shame for doing something like this. If I were supreme ruler of Earth politicians doing such things would be censured and forced to clean Mumbai sewers for the rest of their days.

<comment><USER6> Fully agreed. As a Canadian, I was disgraced by the attack ads put forth by our two most recent contending parties that I did not vote.

How can I vote for either of them, when they are both miscreants?

<comment><USER7> Luckily there are more than just 2 parties to vote for... true, the PC and Liberals were the top dogs but the oft-overlooked NDP certainly bumped things up last time and the Green - well, they were given a seat off in the backwaters of BC... oh, and a few other regional/sort-of-national parties as well - there are alternatives if you're willing to test them out.

<comment><USER6> Well yes and no. Imho, a vote for anything other than the two who can actually win is as good as no vote at all.

Sometimes I think they are put there by the main parties to steal votes from their opposition on issues they cannot possibly accommodate.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Somehow I am fascinated by the Child Pornography argument. It seems that Child Pornography is in our day and age one of the very few universal themes that nobody tries to challenge. It has become a subject so holy, that as soon as someone pulls it out, it puts the opponent in a long winding act of defense. Old versions of this "ultimate evil" arguments such as "Nazi" or "Communist" appear far more relativistic than child pornography. But it is going to be very interesting to watch over the next years how this issue is going to unfold.

</comment><comment><USER9> "Think of the children!" -- works every time.

</comment><comment><USER10> Which is hilarious, because so many Hollywood directors are pedophiles.

<comment><USER11> I'm assuming you have some sort of evidence to back up this conjecture with?

<comment><USER12> I'm guessing he's referring to Roman Polanski (sex with a 13 year old girl) and Victor Salva (sex with a 12 year old boy). I wouldn't say that '2' is 'so many Hollywood directors'.

Media are quick to call those acts 'pedophilia', which is a psychological term, not a legal one. In reality, 'pedophilia' refers to "a sexual preference for children, boys or girls or both, usually of prepubertal or early pubertal age". It has little to do with acting on those preferences. In the US, the legal terms for the act would be 'statutory rape' (pubertal before the age of consent) or 'child molestation' (prepubertal). The age of consent varies between states (16-18), and even more so between countries (from less than 12 to 21+) [1].

Just to illustrate that this is culturally defined and that the raising of the age of consent is a fairly recent development:

 _"In the United States, by the 1880s, most states set the age of consent at 10-12, and in one state, Delaware, the age of consent was only 7. A New York Times article states that it was still aged 7 in Delaware in 1895"_ [2]

[1] [http://en.wikipedia.org/wiki/File:Age_of_Consent_- _Global.sv...](http://en.wikipedia.org/wiki/File:Age_of_Consent_-_Global.svg)

[2] [http://en.wikipedia.org/wiki/Age_of_consent#History_and_soci...](http://en.wikipedia.org/wiki/Age_of_consent#History_and_social_attitudes)

<comment><USER13> "sex with" implies consent. Both Polanski and Salva raped their victims, full stop.</comment></comment></comment></comment>


Ask HN: How to you browse, store, sync, and backup your family photos? - <AUTHOR> Since Google is no longer supporting the Picasa desktop application, I'm looking for a replacement solution and thought I'd ask what other people do for browsing, storage, sync, and backup.
My previous setup was to import and browse using Picasa. And then backup and sync those photos across devices using Dropbox. Because I organized with a folder-structure, the Dropbox app was good enough for mobile photo-browsing. I feel somewhat old school in that I like having local copies of my photos so cloud-only solutions like Google Photos aren't quite what I'm looking for.
Anyway, what do you all do for your all-around photo needs? <comment><USER2> There are many cloud storage solutions for photos such as Dropbox, Amazon or iCloud. Here you can find their review [http://www.cloudstorage101.com/best- cloud-storage-for-photos...](http://www.cloudstorage101.com/best-cloud- storage-for-photos/). Also, for personal use you can try out OwnCloud, Pydio, Ceph, Cozy and my personal favorite, Seafile.

</comment><comment><USER3> I shoot all RAW with my Canon 60D. All photos are stored in a single Lightroom library. Everything is stored on an external 2.5 inch hard drive, which I clone to a second external drive.

The entire library and all RAW files are manually synced to an S3 bucket whenever I added new photos.

I export JPEG files of the best photos of each set and upload them to Google Photos to share them with friends and family, and show them on Chromecast.

</comment><comment><USER4> I use Lightroom for viewing, organizing, and editing photos. I have local NAS for backing up entire drive.

Then I am using SmugMug for cloud backup. It let me create private albums that I can share with anyone. I can easily sync photos on SmugMug with Lightroom.

(Lately, I am thinking Backblaze should be better option for me. I can share photos on Facebook and email full resolution photos to anyone if they want.)

</comment><comment><USER5> Whatever you use, I strongly recommend backing up to more than one cloud and also having a local copy of file history (Time Machine on OS X, FileHistory on Windows).

For the second cloud, you might want to look into BackBlaze.

</comment><comment><USER6> Depend on what mobile eco system you use.

If you use iphone/ipad and mac/windows icloud photos give you more or less what you want.

The photos are offline on your computer, available on demand from you devices.

</comment><comment><USER7> I was thinking about Google photos but is there a way to backup the whole thing offline.

Also how can a whole family combine all their photos in one place?

</comment><comment><USER8> Nobody wants local copies anymore, Google Photos is the solution really.

But if you want there's also OneDrive, Dropbox and the likes that keeps a copy in your HD if you want.

Best,</comment>


YC grads: Benefits of YC experience? – for story with deadline tomorrow - <AUTHOR> Hi YC Founders.
I write about startups. I've written for Business Insider and Ad Age and I write for the General Assembly blog, among other blogs. I'm writing a story on startup founders who've participated in the top accelerators, including Y Combinator, and I'm looking to profile a handful of founder graduates with their responses to these 2 questions:
1. What are a few (1-3) of the most valuable things you learned at Y Combinator?
2. What benefit do you continue to reap from that experience?
Please respond here - or even better - send me an email: email@example.com <comment> the-dude Proper planning.</comment>


How to Build a State - <AUTHOR> https://www.worksinprogress.co/issue/how-to-build-a-state/ <comment><USER2> The author doesn't appear to have read DeMesquita (summarized with lots of gaps in the "rules for rulers" cartoon video), or about the Resource Curse economy, which are both about how states operate without the popular tax collection he refers to.

Monarchs just need to pay armies, and the easiest way to do that was to keep them conquering new territory and paying them off with the spoils.

If I were to start a state today, I would bootstrap it by seizing a small, resource rich area and use the money to subordinate other, remote and small independent territories and then reform them into international financial centres. You will need the tacit support of a super power, so finding a powerful coalition in one of those countries and offering them secure offshore holdings in exchange for political support and holding off competing powers seems like a play. Becoming the offshore banker for the up and coming opposition faction in a super power provides enough cover to continue to pay your army with your natural resources cash. Opposition parties are a goldmine that way, as they need to protect their assets and strategic funding from the ruling party. And the populace? Well, surely there will be enough cash left over for bread and circuses, and you can't underestimate how much loyalty a lottery system that lifts some of them out of poverty will buy. With sufficient randomness or at least a hidden mechanism, they'll keep each other in line so long as they've got hope. Who knows, maybe they'll even make or invent things that provide better income than the natural resources. If the reptilian cynicism of this has given you a wave of nausea, good, you're human. But probably not cut out for being an autocrat.

<comment><USER3> > I would bootstrap it by seizing a small, resource rich area

That's probably a prerequisite, but the issue is, there is virtually 0 unclaimed land on Earth. You need to find some ways to avoid having larger nations stiffle you during the early days. So your options would be:

1\. Use a remote island nobody cares about (or create an island in the middle of the ocean). There was an idea to create such a nation for media piracy reasons, I can't remember the name. An outlandish project where they'd buy an island, declare themselves a new nation and have very lax IP laws.

2\. Find a political power void. Good candidates are places with little rule of the law and/or weak governments. Ideally a place where there is no well organised force maintaining peace. War-torn areas might seem to fit the bill, but are probably to volatile to work.

3\. Go off-planet, if space colonisation becomes a thing during our lifetime.

Also, when it comes to creating a new nation, the CHAZ in Seattle is a great example in what _not_ to do. CHAZ was never going to work, but execution was so bad the problem basically took care of itself with virtually no involvement from the US govt.

<comment><USER4> Was it the Pirate Bay? [https://www.google.com/amp/s/www.thelocal.se/20070112/6076/a...](https://www.google.com/amp/s/www.thelocal.se/20070112/6076/amp) I remember this but I felt like there was a floating boat nation plan too.

<comment><USER3> Yes, Sealand, that was the one.

</comment></comment></comment></comment><comment><USER5> worksinprogress.co has shown up a couple times on Hacker News, and I haven't been impressed with the level of thinking any time I've examined it.

The historical stuff in this is tripe. Rome taxed extensively. Tax exemption was a thing tied up with military land grants in the last western empire. And then general taxation and bureaucracy emerged again well before 1500. I have a good book on this, but can't find it on my shelf right now...

Plus there are plenty of places where the governments are not as bureaucratic as they are today. Just not in the developed world.

<comment><USER6> Rome also had grain dispersals, one of the things to go during a siege. This is well recorded.

I, too, was surprised by the article's claim that it wasn't possible to have a mechanism for organizing taxation. If sumerian priests could keep extensive ledgers tracking debt some gajillion years ago, why would a renaissance french king have any issues?

</comment></comment><comment><USER7> From Byzantium to imperial China, there have been classical civilizations with bureaucratic administrative states.

<comment><USER8> But the question is how you make the jump from tiny warring fiefdoms to bureaucratic administrative states. Neither Byzantium nor imperial China sprang into existence as full fledged empires.

<comment><USER9> > warring fiefdoms to bureaucratic administrative states.

As a warrior at some point you realise that you need "learned men" that can grant you legitimacy through their writings/sayings and who at the same time can help you collect taxes from the masses.

For how things started in Western Europe during the Middle Ages see Adalberon, bishop of Laon [1], and his "oratores, bellatores, laboratores" triad:

> He seems to be famous in French history because of a poem in which he made > mention of (the) three orders in society : "oratores, bellatores, > laboratores" : the clergy ("praying Church"), nobles and chivalry ("the > fighting church"), and, third, the labouring people ("church of toiling"), > the last one supporting the others, and all supporting the whole edifice of > mankind. This idea was incorporated into the "three social orders" of the > Ancien Régime in France.

[1] [https://en.wikipedia.org/wiki/Adalberon_(bishop_of_Laon)](https://en.wikipedia.org/wiki/Adalberon_\(bishop_of_Laon\))

</comment></comment></comment><comment><USER10> It's odd how obvious much of this is, but the realisation I don't think hits most people, and the consequences are not very well taught in school.

1984 and those kinds of publications were written in an era wherein we were transitioning from 'small government' to 'large state entities'. Because we don't have 'small government' as an example in living memory, it's easy to believe, by default, that 'this is the way it always was'.

Particularly WW1 and WW2 which for the first time required 'the entire states machinery' to be involved, we really started to see what the full capacity of state coordination looked like.

The ultra authoritarian states of the last century - and some of this century, particularly enabled by technology, really have no historical parallel.

Monarchs always had a tenuous position, the rate of taxation was relatively low, mostly involving defence/offence and maybe a few castles here and there.

It should be added, that not until the Industrial Revolution were there enough surpluses to really do that much anyhow.

<comment><USER11> > Monarchs always had a tenuous position

I wonder how much of our modern idea of kings as supremely powerful dictators is just a result of posturing and good PR by past kings.

As a king, you'd be acutely aware of how tenuous your position was, and you'd be doing as much mythmaking as you could to prevent people from questioning your power.

<comment><USER12> > I wonder how much of our modern idea of kings as supremely powerful > dictators is just a result of posturing and good PR by past kings.

Depends on how you want to look at it. Kings of ancient times where often seen as gods or god-like beings.

In the West and the Middle East these kings where well remembered through the religious sacred texts. It was part of the common knowledge, much like today Darth Vader.

A story like that of Jude would be known by virtually everyone and do much of what you'd term "PR".

In the Far East however, these mighty kings or emperors where in power in some countries up until very recent times.

</comment></comment></comment><comment><USER13> OK, so how did the Romans do it?

<comment><USER14> Rome conquered most of its territory when it was a semi-democratic republic. The Roman republican government was more popularly legitimate than many of its contemporaries. Even the early Roman emperors were quite weak within Roman society. It was not a dictatorship, although it became moreso over time.

The Roman tax system used delegation, where tax collectors were given a territory and a target, and any revenue over the target could be kept by the official.

And as motohagiography points out, the military as a bare-bones state can be sustained with continuous conquest where the potential spoils of conquest are used to gain military allegiance.

It's not a coincidence that the Roman Empire entered a period of crisis, that proved terminal, after it stopped expanding.

<comment><USER15> It is notable, though, that the source of the word "dictator" did come from the Roman Republic, which would have the senate appoint a dictator for a term of 6 months during major war crises when they needed a unified front and quicker decision-making.

In fact, Julius Caesar was "dictator in perpetuity" of Rome when he was assassinated.

</comment></comment></comment><comment><USER16> tl;dr - Kings were like mob bosses, and ruled on their whim. Replacing them with Paliaments meant that one could not rule on whim but were forced to come to equilibriums (nash?) between many capos - and as they could not trust each other they had to develop bureaucrats to monitor and report and trust on their behalf.

In short design by committee might be bad but rule by committee helps.

The role of a merchant-friendly parliament is _associated_ with British success in the 1700+ centuries - from hands-off rule of colonies that then can stand alone, to courts that were less under the capricous whim of rulers than many. It all seemed to have helped.

So I kind of disagree with the premise - a parliament based market and human rights friendly nation could have been successful at almost any point post 1500. All it took was to wrench power away from the monarch...

<comment><USER17> > In short design by committee might be bad but rule by committee helps.

> So I kind of disagree with the premise - a parliament based market and human > rights friendly nation could have been successful at almost any point post > 1500. All it took was to wrench power away from the monarch...

Which is _exactly_ what Salvatore "Lucky" Luciano did in the early 30s when he had Salvatore Maranzano, the Capo di Tutti Capi, "Boss of Bosses", assasinated and proclaimed that La Cosa Nostra would be governed by a commission.

<comment><USER16> Yes ... absolutely

One other thing worth noting - the members of Murder Inc (Lucky's murder squad) most of them rose to become head sof their own families. The lesson being - the power resides not in the money but the killing

not sure where i am going with that but it's dark

<comment><USER17> Paul Castellano agrees

</comment></comment></comment></comment><comment><USER18> In order for a state to succeed in the long term it needs diplomacy and international recognition.</comment>


Introducing cppsh: A bash-Like Shell with C++ Syntax - <AUTHOR> http://blog.mezeske.com/?p=377

<comment><USER2> I really like that one, If we weren't the April 1st, I may have considered this a real project.

A first-class c++ troll, I admire the writing.

</comment><comment><USER3> What I find especially annoying about these April 1st articles everywhere, is the people who think that they're so uniquely clever that they've figured out that it's not real, that they need to post a comment saying 'April 1st!' Duh, no shit Sherlock?

(I realize the irony in that this post can very reasonably be interpreted as me announcing that I've figured out that this one isn't real...)

</comment><comment><USER4> This seems overly complex to me. I would have preferred xmlsh.

<comment><USER5> Ah, but should the command flags be sub-elements or attributes?

<comment><USER6> Both, obviously.

</comment></comment></comment><comment><USER7> I'm waiting for whish: a bash-like shell with Whitespace syntax.

</comment><comment><USER8> There is already the C++ shell for root: <http://root.cern.ch/drupal/content/cint>

<comment><USER9> True, though it's targeted at the sightly different angle of being a REPL for an analysis environment, rather than being a command-line shell for general CLI computing. So it's more of a competitor to something like R, or to the way Python is used as the top-level of SciPy.

</comment></comment><comment><USER10> Disturbingly reminiscent of powershell

<comment><USER11> In what way?</comment></comment>


Microsoft buys Minecraft for 2.5B - <AUTHOR> http://www.microsoft.com/en-us/news/press/2014/sept14/09-15news.aspx

<comment><USER2> Even if Mojang might as well be Notch's child, if I were him I'd be laughing all the way to the bank at that acquisition price.

And I really hope he's making a lot of his employees rich in the process.

</comment><comment><USER3> > Microsoft's investments in cloud and mobile technologies will enable > "Minecraft" players to benefit from richer and faster worlds, more powerful > development tools, and more opportunities to connect across the "Minecraft" > community.

Sounds like they intend to use it as a killer app for microsoft phones.

<comment><USER4> Sounds like they're either going to port it to C# or add Java development to Visual Studio? Though I doubt the latter is the case... Given the history of Java and Microsoft...

<comment><USER5> From first hand experience, there is quite a bit of active Java development at Microsoft. And no, it's not done in Visual Studio.

<comment><USER4> Interesting, I never really gave it much thought. I always wanted a Java plugin for Visual Studio personally. Oh well. I guess IntelliJ is good enough. I guess it makes sense, if I remember correctly some of their download managers use Java themselves, or used to.

</comment></comment></comment></comment><comment><USER6> | Minecraft fans are loyal, with nearly 90 percent of paid customers on the PC having signed in within the past 12 months.

This is unbelievable to me. Anyone have stats for other games to compare with? Or does the constantly-developing nature of the game set it apart?

<comment><USER7> It is a very specific game that caters to an almost abandoned niche : Minecraft is a sandbox. Unlike most other games where you either have a story driven experience, or a match focused one, Minecraft gives you a sandbox and let you build things in it. You can pretty much have an infinite game length that way. It is no wonder that it has a lot of success with kids.

<comment><USER4> Or as me and my uncle describe it: it's like legos.

<comment><USER7> haha, that's not a bad comparison ! Lego with an infinite number of blocks. Well, not infinite, only limited by your your resource grinding ability, at least if you play in adventure mode (probably the weakest part of the game btw).

</comment></comment></comment></comment><comment><USER8> While Mojang may have taken a relatively hands off approach to modded servers of questionable legality (Spigot, Bukkit, MinecraftForge), I have a feeling Microsoft may not be so benign.

I'm not one to usually throw FUD, but in this case I feel it's most likely warranted.

I predict an unhappy ending to the unofficial mod community, with it being replaced by an official plugin API. It's been promised for years, perhaps it will actually come this time...

<comment><USER9> I disagree. I bet MS will improve mod support. Minecraft mods are a huge pain right now.

</comment></comment><comment><USER10> > Microsoft plans to continue to make "Minecraft" available across all the > platforms on which it is available today: PC, iOS, Android, Xbox and > PlayStation.

While they say it will be available across all of the platforms available today, noticeably absent in the enumerated list are OSX and Linux.

<comment><USER11> I dont see any reason why Microsoft would like to share Minecraft with Apple unless they will test the game, new revenue models and will be able to deliver product that after release to IOS will bring more pros than cons.

</comment></comment><comment><USER12> I have a hunch that we'll see a rewrite to C# and no more Linux support.

I'd love to be proven wrong though.

<comment><USER13> Why?

<comment><USER12> Currently it's Java. WP doesn't support java.

And it's not a big jump from having to make C# version anycase to moving the main development to that port.

<comment><USER14> Pretty sure the every version outside of PC is not Java, so there is already an existing minecraft codebase that could potentially be ported to WP (Xbox version seems mostly likely for porting since it will already be using directx for rendering).

</comment></comment></comment></comment><comment><USER15> Tech valuations continue to get curiouser and curiouser

<comment><USER16> Minecraft is actually extremely profitable, though. It's rumored that Notch already has a personal income in the realm of $100M/year derived from real revenue, not funding. This is very, very different from, say, Snapchat.

<comment><USER15> From what I can tell they still depend almost entirely on Minecraft, which, if I've followed gaming correctly, has as many registered players as WoW but pay no recurring subscription fee. Rough calculations seem to indicate MS are going to have to double year on year profitability for ~4-5 years to break even.

<comment><USER17> There is also merchandise as a revenue stream.

The interesting aspect of the purchase is the mindshare. I have kids in elementary and middle school and as far as I can tell, all their friends play it. When my kids went as Steve and a pig (from minecraft) for Halloween last year, they were drawing shouts nonstop from all the kids. Most parents had no idea.

How you turn that mindshare into money is math I don't understand.

</comment></comment></comment></comment><comment><USER18> Already posted there: [https://news.ycombinator.com/item?id=8318506](https://news.ycombinator.com/item?id=8318506)

<comment><USER19> They are different links (this one coming from the acquirer Microsoft). It's interesting to see how the two sides spin the acquisition.

<comment><USER20> Yes, but that will fragment the thread.

<comment><USER21> > Yes, but that will fragment the thread.

Offhand: doesn't that sound like something from an 80ies barbarian movie?

OLD WITCH: "You have fragmented the thread! You will all die!"

SORCERER: "There is but one hope - you must travel through the broken lands to seek the ARC, and take it to the valley of the tall tree where the threads can be reunited!"

BEASTMASTER: "UUUURRRRRGGGHHHHH"

<comment><USER22> What is best in life?

To derail your threads, to see their context driven before you, and to hear the lamentation of their moderators!

</comment></comment></comment></comment></comment><comment><USER23> How much is this after Swedish taxes?

<comment><USER24> Probably enough to buy one bottle of vodka at Swedish prices

</comment></comment><comment><USER25> good news for [http://minetest.org/](http://minetest.org/)

<comment><USER26> I don't know, one look at the site tells me that this will not be a Minecraft killer.

I don't doubt something will succeed the current version of Minecraft but Microsoft has all the cards, it's up to them to lose it.

<comment><USER25> Free software's purpose is not to kill someone, but to give users the freedom to use, share, understand and improve software. Something Microsoft can not offer.

<comment><USER27> They could, but they won't, because $$.

</comment></comment></comment></comment><comment><USER28> Congratulation Notch !

</comment><comment><USER29> Good luck.

</comment><comment><USER30> FML

</comment><comment><USER31> Well, I vowed never to give a cent to Microsoft again, so there goes any Minecraft upgrade I've considered. Not that they will be aching, but nonetheless...

(edit: thanks for the downvotes, I'll stand by it, though)

<comment><USER32> Opinion like this is valuable commentary (IMO!) - people's attitude towards Microsoft mean that the Minecraft community just changed, split.

[http://www.google.co.uk/trends/explore#q=skype](http://www.google.co.uk/trends/explore#q=skype)

Skype seems to have gone from a rising trend to a falling one (now at 65% of the 2011 "interest") following the MS acquisition. Yes, that's partially with WebRTC, Hangouts and other outside influences but MS's actions (further centralising control) put many people off who wouldn't be simply put off by the name.

<comment><USER33> How much of a role do you really think that plays in Skype? Honestly, Skype is so widespread that I'd bet the average Skype user (a) doesn't realize it's owned by Microsoft and (b) hasn't really cared about the changes Microsoft made post-acquisition. I could be wrong, but from my perspective it seems that the average Skype user really doesn't think about these things.

</comment></comment></comment><comment><USER34> I never heard of this game, but a quick search shows it's an 80s looking video game with very basic graphics (maybe there's another game with the same name?). Anyway, I can't understand what could possibly justify that price.

<comment><USER35> Try Google'in it for half a second and come up with 10 million hits. Of course its not the game they're buying; its those millions of enthusiasts' attention and buying power.</comment></comment>


Ask HN: How do you deal with clients that don't pay on time - <AUTHOR> We have a client that never pays their monthly invoice on time and they don't want to use our stripe recurring billing. <comment><USER2> How high-value is the client, how high-maintenance are they relative to other clients (apart from late payment), how attached to your service are they, and how late do they pay (days, weeks, months)?

Before you do anything, consider whether the client represents a sufficiently large fraction of your business that you can't afford to touch them. If they do, then focus on getting more clients first.

You might also have a conversation with them about the reasons for the payment delay. Perhaps they have some "enterprise" weirdness to deal with that you could simplify if you ask.

The suggestions below assume you've had that conversation, and they don't have any reason for the late payment that you could help them solve more easily.

If they're high-value and otherwise low-maintenance, they're not paying ridiculously late, and _especially_ if they don't seem extremely attached to your service, then consider whether you care enough to change anything.

If they're low-value and high-maintenance, such that you wouldn't mind getting rid of them anyway, use this as a justified reason to get rid of them if they don't start paying on time.

If they're high-value but high-maintenance and paying sufficiently late that it causes you non-trivial problems, you might have a conversation with them first, and then consider instituting a small fee for late payment, based on the number of days late. Provide appropriate notice in one month's invoice, and then start invoicing for the fee. If you want to take an even lighter touch, forgive the fee for one further month, listing it on the invoice along with a "first-time late fee waiver". They'll do one of 3-4 things: start paying the fee, start paying on time, complain at you (in which case you can talk to them about it at that time), or abandon the service. Don't go down this road unless you can live with whichever of those they do.

If they're low-value but low-maintenance, the same suggestion above about instituting a late fee applies, but it'll hurt less if they leave.

</comment><comment><USER3> I ran a web design company for 5 years and having late payment terms in the contract was essential.

When payment was late I'd typically write something like:

"Thanks again for a fun project, the team really enjoyed working on it. I did notice that Invoice XXX was due on XX/XX. If you could let me know when it's in the mail, I'd greatly appreciate it. Thanks again and looking forward to collaborating again soon."

I felt like it was important to bookend the request for money with two positive reinforcement statements to keep the tone predominantly friendly.

If still no payment, then I'd send:

"I want to quickly follow up on Invoice XXX. There's a late fee of $XX scheduled to go out on XX/XX. If you could kindly let me know that payment is in the mail before this Friday, I'll make sure the late fee gets cancelled."

I felt like this respected their time and drove home the point that this issue wasn't going to be ignored on my end. I think it also sounded like I was on their side and wanting to help them which is key because once friendly discourse breaks down, it becomes infinitely more difficult.

Another clause that was helpful was that ownership transferred when payment was made. So, in essence they were illegally using our creative work if it went live and they didn't pay. If the above didn't work, then a reminder of this usually did the trick.

In the end, if it's more pain than it's worth, just let them go. If they're a good client, then collection is just an unfortunate necessity in service work unless you can setup a retainer which is nice, but you'll still have clients that want work done before their next retainer payment comes in.

If you have more questions, I'm happy to chat. Email and website in my profile.

</comment><comment><USER4> Mike Monteiro's Fuck You, Pay Me is a good watch on this topic.

[https://creativemornings.com/talks/mike-monteiro-- 2/1](https://creativemornings.com/talks/mike-monteiro--2/1)

</comment><comment><USER5> Don't punish them for paying late, _reward_ them for paying on time.

$200 hr 30 day net, 25% discount ($150) if paid within 15 business days. [1]

Some companies have a policy of borrowing money they owe, well everyone, for 30 days because it financially benefits them. Change the calculus for them.

[1] And yes I've done almost _exactly_ this. (It was 10 days, not 15.) I was actually kinda happy when they were late.

<comment><USER6> Usually they just take the discount and pay late.

<comment><USER5> Hasn't been my experience but I suppose it depends on your clientele.

</comment></comment></comment><comment><USER7> Keep doing everything exactly as you have been. (i.e. shut up and accept the late payment, each and every month, month in, month out, year after year.)

All the other suggestions in this thread are totally wrong.

if you want, I'll renegotiate with you. Their new payment due date is 30 days later. Bam. They're now paying early, instead of paying late. All without talking to them. All on your end. Its just psychology.

It's all in how you look at it.

</comment><comment><USER8> If in the UK/Europe, you could have them set up a direct debit mandate and then just take payment 3 days after you send the invoice. The direct debit guarantee means they could reverse this, but that requires them to take action to stiff you.

</comment><comment><USER9> Do you have a clause in your contract for overdue payments? As a contractor, I have seen something like net 30 with 1-2% interest charged beyond that. I'm not sure if there's a norm for this.

</comment><comment><USER10> Require a deposit up front. Even for a nominal amount. Or, break up the project into milestones and require payment before working on the next milestone.

</comment><comment><USER11> A 100% pre-payment for the upcoming month.

</comment><comment><USER12> time to fire the client?

or move them to a pre-payment method, perhaps?</comment>


The Athens Affair: The most audacious cell-network break-in ever - <AUTHOR> http://www.spectrum.ieee.org/jul07/5280

<comment><USER2> Just to add something to this really interesting article, from what I recall about this case, no suicide note from the deceased was found, and according to what was reported from the mainstream media here in Greece there were some really suspicious entries in his diary, including a diagram of the system with some modules marked with questionmarks and one about "Something weird going on in the company". Also he tried to hand in his resignation a few days before the suicide which was not accepted. In retrospective, no one involved in that case seemed to take the right steps to track out the party behind the wiretaps.</comment>


How to test shell scripts - <AUTHOR> http://blog.scraperwiki.com/2012/12/12/how-to-test-shell-scripts/

<comment><USER2> Have a look at tests.js, another shell testing framework that works on Windows, OS X and Linux.

<https://github.com/sheremetyev/tests.js></comment>


A planning page for asteroids 2009 FD and 2015 TB145 - <AUTHOR> http://echo.jpl.nasa.gov/asteroids/2009FD/2009FD_planning.html <comment><AUTHOR> Don't know about you, but "2015 TB145" scares the shit out of me. What if the projected trajectory was an earth strike. There'd be no time to react. Humanity really needs to get together to address these existential threats.

<comment><USER2> What could we possibly do to prepare/handle something like this?

<comment><USER3> Thank god that Hollywood had the foresight to give us a playbook (and live action simulation) for this exact situation: [http://www.imdb.com/title/tt0120591/](http://www.imdb.com/title/tt0120591/)

<comment><USER4> And [http://www.imdb.com/title/tt1307068/](http://www.imdb.com/title/tt1307068/) Seeking a Friend for the End of the World

<comment><USER5> And Deep Impact [http://www.imdb.com/title/tt0120647/](http://www.imdb.com/title/tt0120647/)</comment></comment></comment></comment></comment>


GPU Accelerated Theano and Keras with Windows 10 - <AUTHOR> http://efavdb.com/gpu-accelerated-theano-keras-with-windows-10/ <comment><USER2> Any hope getting this to work with Windows Subsystem for Linux?

I got my model up and training on wsl, which really surprised me -- it was super easy and just worked. But I didn't even try venturing into gpu acceleration... perhaps it would "just work" as well? Though I suspect not.

<comment><AUTHOR> If you want to try on the Linux subsystem I would give a Linux guide a try. I would be surprised though.

<comment><USER3> Curiously, I tried and it seems that it couldn't communicate to the GPU. Installation is successful, but upon running `nvidia-smi` command, it returned the following:

      NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

</comment></comment></comment><comment><USER4> [https://github.com/philferriere/dlwin](https://github.com/philferriere/dlwin) Worked for me on windows7 also.

<comment><AUTHOR> His guide helped a lot, but it didn't for me. I like his sections for the optional add-ons though.

<comment> alok-g Could you please expand on what went wrong? :-) Thanks.

</comment></comment></comment><comment><USER5> I'll try this later, seems to be targetting pre-Pascal cards (need more info on whether this will work with Cuda 8).

"Cuda for Engineers" (excellent book by Storti/Yurtoglu) uses VS 2013 and the VC++ that comes with it, all my other cuda books (Handbook by Wilt, Wrox Pro Cuda Prog'g) run on linux. Also worth noting that OS X seems to have gotten feature parity with Cuda 8's unified memory (my mac doesn't have recent Nvidia card to test).

<comment><USER6> I got a 1080 working with VS 2015 (via the CUDA 8 beta). However, I strongly recommend using VS 2013. Frustratingly, CUDA VS 2015 support does not extend to the latest Visual Studio update level. So, to use CUDA I had to forgo the latest versions of useful extensions (e.g. Python Tools) and even forgo MS software updates (e.g. for SQL Studio, which apparently auto-installed the latest VS updates).

</comment></comment><comment><USER7> This is great. We do a lot of work with GPUs in Win10 at Paperspace ([https://www.paperspace.com](https://www.paperspace.com)) but we mostly use GPUs for video acceleration not compute.

That said, all of our cloud VMs have GPUs and we are adding new instance types designed for ML/ HPC.

Reach out directly if you are in the space and want early access to CUDA- backed Windows instances in the cloud.</comment>


9 ways to accelerate your learning and stay on the bleeding edge - <AUTHOR> https://hackernoon.com/9-ways-to-accelerate-your-learning-and-stay-on-the-bleeding-edge-532ac3381846 <comment><USER2> Best advice i have ever received in my entire life. Although i know this internally i wasn't able to make it actionable. I had to read it one a blog to decide to act on these ideas myself.</comment>


Disney+ will give subscribers four simultaneous streams and free 4K for $6.99/mo - <AUTHOR> https://www.theverge.com/2019/8/23/20830586/disney-plus-four-simultaneous-streams-4k-pricing-features-benefits <comment><USER2> Free != $6.99/month</comment>


Gnome mass-migration to Gitlab - <AUTHOR> https://mail.gnome.org/archives/desktop-devel-list/2018-March/msg00023.html <comment><USER2> Awesome, hopefully this helps get more people involved in the development process.</comment>


Is Growth Over? - <AUTHOR> http://krugman.blogs.nytimes.com/2012/12/26/is-growth-over/

<comment><USER2> _So we could be looking at a society that grows ever richer, but in which all the gains in wealth accrue to whoever owns the robots._

The robots will create wealth for the people that don't own robots. If they can't afford this wealth the robots will never be created in the first place. It's no different than any other automation technology.

<comment><USER3> _Only_ if those replaced by automation can provide value to society (employment). Assuming they will find jobs with ever increasing amounts of automation seems naive. Manufacturing and farming employed the __VAST __majority of people in the past.

<comment><USER2> If the vast majority of people are unemployed there won't be anyone to support said automation and it won't exist.

</comment></comment></comment><comment><USER4> Growth may not over but I've been thinking a lot of thoughts related to Krugman's final point. I think employment may generally decline and perhaps a skills gap will only continue to widen. Wealth disparity will widen also, perhaps.

<comment><USER5> I think that humanity will eventually go to a basic income, first on a national and then on a world scale. I think national BI will follow the next real economic catastrophe (not 2008, but 1930s) and the global one will be possibly 50 years later. I'm optimistic on the long-term future, but I think we have at least one more Great Depression and, unfortunately, at least one big-ass war ahead of us.

BI will probably happen too late, but if we don't want to die, we will implement it. It used to be that it took a 22-year one-time investment to get people ready for the work force, but now it requires continual education, and without BI, people who lack independent income are going to be in trouble.

<comment><USER6> I lean heavily libertarian, but my practical side says we should implement a basic income and do away with almost all labor regulations.

<comment><USER5> Same here. Minimum wage is, effectively, an incompetently structured and meager basic income financed by low-end employers (who react by reducing low- end jobs).

</comment></comment></comment></comment><comment><USER7> I actually think we're just at the very beginning of the information revolution. The reason growth seems to have slowed is that we experienced a hype bubble. People (correctly) predicted that a globally connected network of pervasive computers would fundamentally change every industry, it just looks like it's going to take 50 or 100 years, not 5 or 10.

At the turn of the millenium people got tired of waiting and the speculative markets fell apart.

But the engineering continues. The friction separating the world's information is in mid-collapse, but the actual diffusion has barely even started.

</comment><comment><USER8> Also check out Marshall Brain's essay _Robotic Nation_.

<http://marshallbrain.com/robotic-nation.htm>

</comment><comment><USER9> I think the biggest insight here is "Clearly, such a technology would remove all limits on per capita GDP, as long as you don't count robots among the capitas." You could make the same point about slaves. I'm not opposed to the idea of robot workers, but I suspect that a robot-driven economy will look a lot like a slave-driven economy. Poor and unskilled workers will strongly resent that their jobs are going to robots, just as they did during slave times. Those fortunate enough to own robots will essentially live a life of leisure. The profitability of robots will be heavily reliant on exports, as robots can produce significantly more than they and their owners could consume.

<comment><USER10> The unfortunate inevitability when welfare turns into negative income tax.

What's the difference? One acts like it's supposed to help you when you happen to not have a job. The other treats not having a job as an inevitability of the increasing incentive for automation.

See: 'Player Piano' by Kurt Vonnegut

</comment></comment><comment><USER11> Anyone want to speculate on what's going to be IR #4? I'm thinking either biotech (an industry I know little about) or widespread Internet-enabled custom manufacturing of real-world stuff.

Space colonization will probably be another IR, but it seems like serious efforts at a permanent self-sustaining colony (that could survive indefinitely if something really bad happened and the human race on Earth was wiped out) are at least 50 years away.

</comment><comment><USER12> What does "growth" measure?

If we buy a $7 kindle book rather than a $16 paper back does that halve GDP?

We have improved medical care that costs the same does that imply no growth?

If twice as many people use air travel, but it costs half as much does that mean there is no growth?

</comment><comment><USER5> Growth is not over, but the pace has slowed, due to decreased R&D investment. The reason for the 5-6% global growth of the 1950s-60s (which we haven't seen since then) is all of the research that was being funded during the Cold War. When research funding dried up, smart people (even in unrelated sectors) could no longer demand autonomy to the same degree, and the economy slowed as the empty suits took over (and redistributed all the wealth to themselves).

The overarching story is still faster-than-exponential. A lackluster (in comparison to what was before it) 50 years does not mean that growth is "over".

<comment><USER13> They are comparing growth from 1750-2012. I'm not sure how relevant the one productive decade (or two) NASA and a few other agencies had during the cold war is to the discussion of macro-economic growth.

Also do you have a source on the reduction in R&D investment in the economy from the cold war until now (for the entire economy)?

<comment><USER5> It's hard to get those numbers, because of questions regarding how R&D is defined, but:

* Decent academic jobs have become extremely rare in the past 30 years. * Blue-sky corporate R&D has been slashed. * Worker autonomy is decreasing in most companies, resulting in low job satisfaction.

No one in the R&D world debates the contention that this contraction has been going on for 30+ years and that it's immensely destructive.

<comment><USER13> I agree with the engineers vs suits sentiment. But I think that has more to do with bureaucracy as the result of mega-corporations gaining dominance, bigger universities, population growth and the government growing in size - than it has to do with government (or university) R&D investment.

The startup scene shows engineers and innovations still reign outside of large organizational structures.

<comment><USER5> _The startup scene shows engineers and innovations still reign outside of large organizational structures._

Disagree, at least if by "startup scene" you mean VC-istan. The VCs hold all the cards, and most of those startups aren't very interesting or innovative.

VC-istan is a postmodern tech company. A fairly good one, but more like a large bureaucracy than a research center. The CEOs are semi-independent PMs who are still beholden to their VC bosses.

The only way to turn VC-istan into something decent would be to impose strict regulations over communications between VCs in order to restrict their ability to collude on terms or blacklist entrepreneurs who piss them off.

<comment><USER13> Ugh, regulate communications? That means they'd have to monitor communication.

You can prevent collusion by creating more market options (removing barriers to entry) and promoting greater transparency in the industry.

I'll never understand why people don't look for solutions involving freedom first but instead always look to the government to add restrictions and regulations by force.

That would just make the VC's use encryption and other means of evasion, further pushing their negative activity underground and making it harder for new VC's to get started due to more costs in following regulation.

</comment></comment></comment></comment></comment></comment><comment><USER14> Growth in the developed world is over.</comment>


NReduce November Online Demo Day Now On - <AUTHOR> http://nreduce.com/nstars/4-November-2012

<comment><AUTHOR> Awesome! Thanks HN Peeps!

Demo Day is Over :)

If you are a founder and want to join nReduce check out nReduce.com

<comment><USER2> Definitely recommend, I've been with nReduce for about 16 weeks now, and I've found it really useful publicly setting yourself weekly targets that you actually need to deliver for.

Plus the guys who run it are great.

</comment></comment><comment><AUTHOR> Pretty Excited to introduct

Clef - MultiPlay.io - whathavei - The Canny Group

Great founders!

</comment><comment><USER3> yes

<comment><AUTHOR> no</comment></comment>


TxHash Bridges the Gap Between Web 2.0 and Blockchain Events - <AUTHOR> https://medium.com/@txhash/fc77d2c1dcdb <comment><USER2> I've been looking a long time for a tool to do this. This one was by far the simplest and easiest to use. Congrats!

</comment><comment><USER3> Many companies that will integrate blockchain technologies will look for this kind of tools in the near future

</comment><comment><USER4> That's a nice solution to bring blockchain closer to classic applications and processes! Good luck!

<comment><AUTHOR> I think so too. It will become more and more useful as various blockchains run in parallel, and you want one api.

</comment></comment><comment><AUTHOR> I actually used this to integrate ETH payments into slack notifications</comment>


DDG now searches HN for stories and comments - <AUTHOR> https://duckduckgo.com/?q=hn+duckduckgo <comment><USER2> I'm guessing this came out of DuckDuckHack?

This is one that I don;t really like, since the !hn hashbang already exists that will take a user to hnsearch.com

<comment><USER3> Yes, that's right. It is a Spice plugin (<http://duckduckhack.com/#plugin- types>) that uses the HNSearch API (<http://www.hnsearch.com/api>). I'm curious why you don't like it though. The !hn bang still works.

<comment><USER4> Honestly, I prefer Google's implementation of site specific search better. I'd rather search with DuckDuckGo/Google's engine, because its better, rather than be redirected to a usually bad site search.

<comment><USER5> [https://duckduckgo.com/?q=site%3Anews.ycombinator.com+duckdu...](https://duckduckgo.com/?q=site%3Anews.ycombinator.com+duckduckgo) Still works, it's just harder to type and less reliable.

</comment></comment></comment></comment><comment><USER6> Can't find what I'm looking for.

I saw a comment on a hn BitCoin article. The comment said that we've got 100 years of experience with [this type of monetary system], and we know how to break it, and then he listed a bunch of trading algorithms, including one (I'm pretty sure) named "sawtooth".

Tried: hn duckduckgo sawtooth bitcoin :|

<comment><USER7> I think you mean "sharktooth".

<https://duckduckgo.com/?q=hn+sharktooth>

<comment><USER6> That's it. First hit.

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

<comment><USER8> Thanks to this thread. Now, it's second.

</comment></comment></comment></comment><comment><USER9> Nice! This was my first suggestion when DDH was announced. Thanks "Adman".

</comment><comment><USER10> DDG Rocks. Now my main way to search.

</comment><comment><USER11> By DDG you mean the "Data Drinking Group", right? I've heard those guys are pretty active on HN.

<comment><USER12> Cheers! <holdingupdatavodkawithredbull>

</comment></comment><comment><USER13> Searching for "hn DDG promotion on reddit" returns anything but what it should be returning.

</comment><comment><USER14> Love it, Gabriel. Index Ask and Show threads as well, like the good ol' days?

</comment><comment><USER15> Yes, thank you.

The search feature on HN is not as good as it could be.

</comment><comment><USER16> Ok, this is awesome! Now all I need is the Image Gallery search feature and I can delete Google from my bookmarks already.

</comment><comment><USER17> Reddit needs this badly.

Their search provider was acquired and closed doors recently. The new engine has a weird syntax.

</comment><comment><USER18> I'd love to see some of the search engines who are catering to more sophisticated searchers just tell us the BOSS, or whatever cache they are licensing, API functions and then indicate which ones they are supporting.

For all we know several of these search engines are all accessing the same cache and they are simply choosing to focus on different options that the cache license offers and making different arbitrary CGI decisions like slash bang whatever.

It makes sense to hide details behind "magic" if the users are unsophisticated. But it seems like there's really little reason to do this for sophisticated searchers.

Maybe there is and I am just not seeing the competitive advantage or value addition.

At the same time, I feel like we may have different search engines all using the same licensed cache source and trying to differentiate themselves on multiple implementations of idiosyncratic ways to access the same cache API, instead of focusing on more basic factors, like speed and privacy.

Maybe searchers just want to access that licensed cache which is too expensive for them to subscribe to. Maybe it's not so important all the fancy things one can do with CGI. Maybe the fancy things are important. Maybe they just crave "features". I don't know.

But my guess is the BOSS cache is probably not that hard to work with and that most searchers could get their searches done easily enough, in simple fashion, if they had their own BOSS subscriptions, without the need for lots of customisations (which equate to the exotic features of these search engines).

Just my thoughts.</comment>


Why I switched from Ruby back to C++ - <AUTHOR> http://chrismdp.github.com/2012/01/why-i-switched-from-ruby-back-to-c-plus-plus/ <comment><USER2> This post should be titled, "Why I fucked up by choosing Ruby to write a game." - Or "What the fuck was I thinking"

I love Ruby, I spend a lot of time writing it. I also write kids games for iOS. I would never consider Ruby(in it's current state) a good language to write a game in. Anyone who would has clearly; never written a game before; or never used Ruby for anything serious before.

I agree with the other posters, you should investigate ObjectiveC though. You can get ObjectiveC packaged and running on Windows BTW, don't worry about that.

<comment><USER3> While what you say may be 100% true you might be shocked by the number of Ruby and Python devs I talk to who tell me that Ruby can do anything that C++ does if you're even a half-decent Ruby or Python dev. I've literally asked people, "What about something like Gran Turismo 7?" And I've literally been in rooms where every dev there (none game devs, all web devs) basically said if _they_ were writing it in Ruby it could be done, but they wouldn't trust Sony devs to be able to do it.

This may not be the case for all Ruby devs, but I think having these stories out there is still useful.

<comment><USER4> For what it's worth, I help to organize a fairly active Ruby group, and I am certain that, if not zero, nearly zero of us would make this proclamation. In fact -- and I mean not to attack you, but just to illustrate how incredulous I am -- I tried to think of a reason there might be for you to fabricate or exaggerate that story. I don't really think you did, but my mind went there.

<comment><USER3> Didn't make it up. No reason to do so, although I suspect if I spent some time on HN I could find some posts about Ruby perf that don't jive with reality.

But I will say this, do you think this guy made up his post about using Ruby to try to write this game? If you don't think it fabricated, do you think he's alone?

I do think there is a fundamental problem, especially with respect to perf, that a lot of people have never looked at what code actually runs on their box. Never looked at the emitted or generated asm. Don't know the cost of calling a method, much less invoking some framework routine to do something. And then you couple this with a lot of devs think their the cats meow because they got x trans/sec and hear horror stories about the ceremony and inefficiency of C++.

And it doesn't help with the blogs and articles that constantly come out saying that Java or Ruby or Lisp is faster than C/C++ (the answer is never pleasingly straightfroward).

While I appreciate that none in your Ruby group would think this, I'd also ask why do they believe this? It's no more reassuring if they don't have a clear understanding of why C++ might be better for the job.

Lastly, I should add that the conversation was a heated discussion where I was playing devil's advocate that I thought they were going to switch off of Ruby like Twitter. I don't think they really appreciated it, although I wasn't actually being all that serious at the time.

<comment><USER4> > But I will say this, do you think this guy made up his post about using Ruby > to try to write this game? If you don't think it fabricated, do you think > he's alone?

I neither think his story is fabricated, nor do I think he's alone. (I didn't say I really thought your story was fabricated, either.)

> While I appreciate that none in your Ruby group would think this, I'd also > ask why do they believe this?

I don't know that we would all choose C++, were we building a game, but the performance of Ruby is frequently a topic of discussion. We are lucky enough to have several members that have significant experience working with/around Ruby performance, and they share their knowledge. In other words, were you to choose one of us at random, we would more likely be able to tell you why Ruby is not a good idea, as opposed to why C++ is.

</comment></comment></comment></comment></comment><comment><USER5> I think the author's problem is not choice of language, but rather choice of architecture. He notes that he was passing a lot of float objects between Ruby and C, eating up valuable garbage collection time. The problem here is not the bridging of Ruby to C, but rather the wrong choice of data structure and design. Ruby should pass high level requests to the (C-based) rendering backend; instead of passing "push a vertex at (1,2,3)", the requests should be like "draw a spaceship at (1,2,3) flying forward with velocity vector (1,1,0)". The means you're going to be writing the core of your game in C, but things like AI and level design will all be handled in Ruby. (I think pretty much every commercial game works like this.)

Another thought is to treat simulation and drawing as separate concerns. Every 1/60th of a second, interrupt the simulation and draw the current state to the screen. This means that you can do things that take more than one frame to calculate without reducing the framerate. (Does Ruby have a good coroutine library?)

Rewriting your entire game because your design is bad is silly. Switching to C++ just makes your mistakes less obvious. (And now you'll be debugging memory leaks and segfaults instead of slow frames. If only there was One Perfect Tool...)

<comment><USER6> >(I think pretty much every commercial game works like this.)

Is it common for commercial games to write AI in Ruby now?

<comment><USER7> Lua is the most common language, I believe. But the pattern still holds.

</comment></comment></comment><comment><USER8> "Why I switched from screwdrivers back to the hammer."

Because, while pounding in a few hundred nails with my trusty flathead, I noticed that it was taking really a great deal of work.

</comment><comment><USER9> After working 1.5 years on soft-realtime video processing systems (and game development fits this category), I feel like there's no real alternatives to C++. Because (1) when you have performance problems you can inspect the code in the disassembler and get full control of what's going on, and (2) compilers now are really smart (think msvc11 and gcc 4.6), so it just rarely make sense to sacrifice 10x speed for 3x increase in code brevity.

Of course, sometimes you have to dive even deeper, into asm or SSE intrinsics or OpenCL.

<comment><USER10> What about using an higher level language for game logic, and optimizing critical section of code with C/C++?

</comment></comment><comment><USER11> Nice write up. I wrote my own 2d game engine in C++ a while back. Switching to Ruby was great, but I never made any games. I did make a couple of JavaScript HTML 5 games. But here again speed is a limitation, and so am looking into C (and eventually Objective C) to eventually do some iPhone game making. As great as it would be to make games soley with scripting/interpreted languages, I don't think we're there yet.

<comment><AUTHOR> Easy porting to iPhone in the future is another big plus I should have mentioned in the original post.

<comment><USER12> The ObjC object model is very similar to Ruby's object model.

ObjC's way of handling mundane data structures (strings, arrays, hashes) is (once you learn to stop worrying and love long sequences of calls to very long method names) very similar to how Ruby addresses the same problems.

ObjC lets you drop into vanilla C code when you want to.

ObjC doesn't impose GC.

ObjC implements a form of duck typing.

You might be surprised at how good a fit ObjC is for a game engine you prototyped in Ruby, as opposed to C++.

<comment><USER13> ObjC++ might be an even better fit

<comment><USER12> I always got a "stay on the golden path and away from ObjC++" vibe from ObjC++, kind of like trying to ask Rails to do database stuff without using ActiveRecord in 2008.

You can easily write C++ code without having to bridge ObjC's object system to C++'s object-and-generics system: provide a simple C API to your C++ libraries.

But the other thing is, one reason to do ObjC at all is to avoid all the heartache that comes bundled with C++.

 _PS: You got modded down. Baffling. Fixed._

<comment><USER14> Obj-C++ is working well for me so far and the STL is much better than Obj-C's awkward and slow collection classes for anything that needs to run fast or that requires significant algorithmic complexity.

<comment><USER12> One of the nice things about going back from Ruby to a C language is, it's hard to think of anything you could do in the C language that would be as non- performant as Ruby. As slow as ObjC's collections are, they're faster than Ruby's.

<comment><USER14> Yeah, and they're fast enough for a lot of things, but I'm doing DSP at 44.1k/sec and even C++ virtual functions are too slow for that. But I can use an STL vector at no penalty over a native array.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> I'm using SDL for writing a DJ application and have it cross-building on Linux, Windows, and the target platform (HP TouchPad).

For the Windows build I'm using the excellent <http://www.mingw.org/> Mingw32 environment. I compiled SDL and my other needed libraries myself and there's pretty much no code differences.

The only downside to mingw32 is that my target platform has full POSIX and mingw32 doesn't, so sometimes I have to choose carefully to use stdlib functions and not a POSIX function.

<comment><USER16> Just out of curiosity: why is compiling on Windows important if your target is POSIX? Is it just for development convenience?

<comment><USER15> Yes. For other reasons I am generally running Windows.

</comment></comment></comment><comment><USER17> A good takeaway from this is make your tests performance related. Since the op is using unitests already, a test that updated the game loop for a few minutes, rendering the target number of objects and failed if a frame dropped, would have saved a lot of wasted development.

</comment><comment><USER18> This sounds very "link bait-ish"…

Why were you trying to write a game in Ruby to start with? You didn't "switch back to C++", you simply realized you were trying to use a wrench to tight a philips screw…

-.-

<comment><AUTHOR> I suppose it does: but it's the honest truth. I have two months of ruby code that's rusting now, and it was quite a difficult post to write.

<comment><USER18> That was not the point of my comment. It was a realization of how it came across (aka how I got here).

My main point, however, and this in reply to your post (that I have no doubt it was honest and on the back of some tough thinking) was that you simply started using the wrong tool for the job and then, realizing this, found a more appropriate tool. Nothing wrong with that, but your post came across as "Ruby sucks so I'm going with C++".

Having said that, I'm glad you "saw the light" and I do wish you the best of lucks in your development endeavors! :)

And remember: your next endeavor might be in Ruby, C++, whatever… Just do some thinking beforehand and choose the right tool for the job to avoid "rotting code", which we all know is incredibly frustrating! ;)

<comment><AUTHOR> That's a shame: I didn't mean to come across like that. I love Ruby: it's far and away my favourite language. Anyone reading the rest of my blog can see that very quickly.

And I'm not sure Ruby will be the wrong tool forever: there just isn't a way through some of the environment and implementation issues (yet).

</comment></comment></comment></comment><comment><USER19> What I don't get is why you're writing it from scratch? There are over a _dozen_ high-quality C++ game engines you can use.

A quick list: [http://nuverian.net/2011/01/17/the-best-game-engines-for- ind...](http://nuverian.net/2011/01/17/the-best-game-engines-for-indie-game- developers/)

As for what's "good performance," ask yourself: what's the clock speed of your CPU, and how much work are you really trying to do? Say you've got a 2 GHz CPU. A 300 FPS rate, is 2,000,000,000 Hz/300 Hz = 6.6 million clock ticks per frame, on a single core. A modern CPU can be really good about using those ticks very well. You can do some dumb blitting to figure out the I/O overhead for getting to the screen.

</comment><comment><AUTHOR> I'd be interested in HNers' views on whether I made the right call.

<comment><USER20> Speaking as a huge fan of Ruby, I think it's absolutely the wrong language to write games in, because games are enormously sensitive to runtime fluctuations, and as you found out, Ruby has them. In particular, a stop-the- world GC is just never going to give you satisfactory performance, unless every GC pass happens in <1ms and never happens more than once per frame.

That said, you might consider Lua as a primary scripting engine for your game. It's got a lot of your standard scripting language perks, but it's also obnoxiously fast and has an incremental garbage collector. Furthermore, there's no GIL, and it's designed to be embeddable, making it a very powerful choice for game development.

<comment><AUTHOR> I'll look into LUA. Never used it back in my games dev days as it was just coming into vogue.

<comment><USER20> Just because the Lua community will ream you out for the mistake (though it's the only thing they're mean about), it's "Lua" (Portuguese for "moon"), not an acronym. :)

<comment><AUTHOR> The joys of iPhone autocorrect :) thanks.

</comment></comment></comment></comment></comment><comment><USER21> I don't why this needs to be an either/or proposition. Write your program in Ruby. Where it needs speed, write the pertinent bits in C++.

I've done this before with Ruby and C. Two great tastes that go great together!

<comment><AUTHOR> I looked at this, but the stop the world GC would still kill the frame rate from time to time sadly. Also there's a large amount of inefficiency in the object translation layer between the two languages.

<comment><USER21> I can believe that, but wonder if it needs to be so.

For example, in my (limited) experience, you have to draw the boundary between what's in Ruby and what's in C/C++ intelligently. If you're still doing most of your computation in C on Ruby Arrays and Hashes, you're not going to get much of a performance win at all.

</comment></comment></comment><comment><AUTHOR> UPDATE: In case anyone is interested, I've just added a screenshot to the blog post by (very) popular demand. It's not final artwork, and it's only a few days work!

[http://chrismdp.github.com/2012/01/why-i-switched-from- ruby-...](http://chrismdp.github.com/2012/01/why-i-switched-from-ruby-back-to- c-plus-plus/)

</comment><comment><USER22> I wonder if he gave Rubinius a go before switching to C++. IANAGD, but i'm guessing some of it's features would benefit game engines: Tunable GC, profiling (<http://rubini.us/doc/en/tools/profiler/>), JIT/LLVM. It wouldn't solve the C extension problem (maybe FFI does?) or distribution though.

<comment><AUTHOR> No, I didn't. I love the features Rubinius gives you, but Windows support still needs a lot of work, and if I'd dived in to help, I'll never ship the game.

</comment></comment><comment><USER23> I wonder if switching to JRuby wouldn't have solved some of his problems? I'd imagine that distribution is much easier on JRuby. I suppose the issue is with libraries, but I'm not familiar with the libraries he mentioned.

<comment><AUTHOR> Possibly, but I'm much more comfortable in C++ than Java. I also get a much easier route to iOS if I stick with C++.

<comment><USER24> With JRuby, you wouldn't have to be comfortable with Java. You get to use Ruby with the benefit of it running in the JVM.

</comment></comment></comment><comment><USER25> Hi Chris,

Very nice post! I love seeing these kind of comparisons.

I had the same thought as Havoc's comment (not here, on your site): Why not use both languages?

<comment><AUTHOR> Thanks! I may still do that, if I makes sense to do so and I can distribute it easily enough.

</comment></comment><comment><USER26> it's simple, ruby is about scale out, not scale up. and rails helps you to build websites faster. multi-player games would probably be very fast to write compared to c++, however, the code will certainly not be optimized as well as c++, it's an interpreted language for gadsakes!

</comment><comment><USER27> tl&dr: switch for performance but miss _Ruby_

<comment><USER2> _cough_ ObjectiveC

</comment></comment><comment><USER28> The author seems to be more interested in obsessive technical improvements than shipping a game many people want to play. One slow frame out of sixty prompts a rewrite? Product doomed. Wait until someone complains to fix anything. Something tells me that frame should not be priority one, but it is. Why?

<comment><USER29> You are completely right for things that don't involve real-time video (like games do).

A 1/60 frame skip rate sounds like nothing important, but your eye will see it easily and it's instantly annoying. It's not subtle at all, and not something you can write off. Everyone will be annoyed by it and _then_ your product will be doomed.

(Edit) I do however agree that the frame _rate_ is not that important. 30 fps ought to be enough for anyone. However, it has to be a _really really smooth_ 30 fps; all the frames need to come out exactly 1/30 of a second apart. Not realizing this is where a lot of people go wrong. A smooth 30 fps looks much better than 120 fps to a human eye. A game framerate that isn't an integer divisor of your monitor's refresh rate is also a disaster (since it means the display will be skipping frames).

<comment><USER28> Would you rather have:

A complete game that people love, and is growing like mad, except for that damned skip at 60fps...

or

A very smooth 60fps game nobody plays.

<comment><USER20> If it's the difference between shipping and not shipping, ship, of course. But you propose a false dichotomy; the OP can both ship C++ code and avoid frame skipping.

Speaking as an avid gamer, that dropped frame matters, a lot. It's incredibly annoying to the gamer, and will produce an attitude of general discontent with the product that will earn it reviews like "sluggish", "slow", "unoptimized", and "chunky", none of which are exactly going to help you sell copies.

You might have missed the part where the author was saying that he wasn't even nearly done with feature implementation; the problem was only going to get worse as he added more garbage overhead. When you're talking about relatively expensive GC passes in a stop-the-world garbage collector, that dropped frame can turn into 150 dropped frames every 30 seconds pretty quickly (ie, a 2.5-second freeze/hitch), and that's enough to turn any player batty.</comment></comment></comment></comment>