The relationship between mindset and age (2017) - <AUTHOR> http://aging.nautil.us/feature/218/why-you-cant-help-but-act-your-age <comment><USER2> Old person here (+7 decades). Not much you can do about physical deterioration. The only thing I've found you can easily carry into old age is (assuming no senility or debilitating disease) coordination. One can be weak and frail yet still somewhat graceful. As for the mind, it depends on when it freezes in time. If you find yourself comparing everything current to the "good old days", then you are probably lost. But as long as you have an appetite for the new and unfamiliar (maybe something like ycombinator) then there is possibly still hope...

<comment><USER3> Do you have advice on how to keep your intellect intact? Many of my older relatives can barely think through things at 0.1x the speed they had even a decade back, if they even bother to think through anything. However, very old people in academia seemed to remain very sharp well into their seventies (some study suggested that they can be as sharp as a regular 25 yo). I guess it's good to keep reading and constantly use your brain, but any more solid actionable habits might be useful!

<comment><USER4> There might be a bit of circular reasoning about the old academics. People who lose their cognition don't stay academics. It'd be interesting to see a cohort analysis starting at 40.

<comment><USER5> Exactly, survivorship bias.

</comment></comment></comment></comment><comment><USER6> I find that I am the same as I was 10-15 years ago. But society is boxing me in with their expectations and with their carrots and sticks makes me act differently.

I would run down the street as a kid. If I did that today, it would look weird.

I would be sort of silly and upbeat about a lot of things. But as you get older, people expect you to talk slower and more seriously.

And so on. A lot of it has to do with societal pressure and putting you in boxes by sex and age.

Take this experiment... go somewhere no one knows your age and hang out with much younger people for like a week. See how your health is afterwards.

[https://www.psychologicalscience.org/news/releases/age-is- ju...](https://www.psychologicalscience.org/news/releases/age-is-just-a- number-believe-youre-younger-and-your-health-will-follow.html)

[https://www.businessinsider.com/ellen-langers-reversing- agin...](https://www.businessinsider.com/ellen-langers-reversing-aging- experiment-2015-4?amp)

<comment><USER7> I wish it would be normal and accepted for adults to play too. You can still be a responsible and grown-up person.

<comment><USER8> On the bright side, because it's not normal, it makes it easier to spot people who might be worth hanging out with.

(like Dolphus Raymond with his paper bag, engaging with kids may provide useful cover for playful adults)

"When Kelvin looked through the eyepiece he saw what was undoubtedly the phenomenon that Maxwell had described, but in addition there was the image of a little man dancing about ... Maxwell had achieved this by the addition of a zoetrope ... Kelvin could not help asking: 'What is the little man there for?' ... 'Just for fun, Thomson.'"

[https://www.cambridge.org/core/books/fourier-analysis/ode- to...](https://www.cambridge.org/core/books/fourier-analysis/ode-to-a- galvanometer/D6ADE60D396B492B0DB02288BCA6ADE1)

</comment></comment></comment><comment><USER9> > psychologist Ellen Langer and her students carefully refurbished an old > monastery in Peterborough, New Hampshire, to resemble a place that would > have existed two decades earlier. They invited a group of elderly men in > their late 70s and early 80s to spend a week with them and live as they did > in 1959,

Has this study been replicated? Every time I see a psychology study that is used as the basis of some popular article by some journalist, I get suspicious.

<comment><USER10> Of course not. Like all things too good to be true, it most probably is. Criticism section on the researcher's Wikipedia page is worth a read:

[https://en.wikipedia.org/wiki/Ellen_Langer#Criticism](https://en.wikipedia.org/wiki/Ellen_Langer#Criticism)

<comment><USER11> Yikes:

> ...Langer claimed that when elderly men were temporarily placed in a setting > that recreated their past, their health improved, and they even looked > younger. However, this study was never published in a peer-reviewed journal. > The only publication of this finding is in a chapter of a book edited by > Langer.

> ... Langer described the week-long paid adult counterclockwise retreats she > was creating in San Miguel de Allende, Mexico, aimed towards replicating the > effects found in her New Hampshire study. ... "Langer makes no apologies for > the paid retreats, nor for what will be their steep price." Langer was > defiant when pressed on the ethics of her study: "To my question of whether > such a nakedly commercial venture will undermine her academic credibility, > Langer rolled her eyes a bit. 'Look, I'm not 40 years old. I've paid my > dues, and there's nothing wrong with making this more widely available to > people, since I deeply believe it.'"

I'm bummed Nautilus is publishing this. They ought to know better.

<comment><USER12> And may i say that _you_ ought to know better than to point out one data point in a good article to besmirch the entire informative article.

The article deals with complex and interesting topics and is well worth a couple of reads.

<comment><USER13> If you're not an expert in the field and manage to find a more or less obvious mistake in the research of the article, how many more subtle errors an expert would find?

<comment><USER12> Actually that is not the case here. The article is an overview bringing together ideas/opinions from various different researchers only one of whom seems to have employed questionable practices.

</comment></comment></comment></comment></comment></comment><comment><USER14> I wanted to play drums since I was 10, but being the one who procrastinates dreams for decades before doing something, I had to wait to reach above 50 to finally start taking lessons. Playing already keyboards and bass of course was beneficial, also I already knew how to do a few things on the drums, but nothing serious. All I can say is it helped a lot, both the body and the mind. I had to stop both practicing and taking lessons during the early pandemic lockdown, and in a few weeks I clearly felt the negative effects.

</comment><comment><USER15> [https://www.oldest.org/sports/marathon- runners/](https://www.oldest.org/sports/marathon-runners/)

People had run/are running marathon in 70-90s age group. Hack, the oldest runner was 102 year old.

May be we can do lot better, if we force ourselves to stay active.

Mark Twain said it better - "Age is an issue of mind over matter. If you don't mind, it doesn't matter.".

<comment><USER15> >> Still, the message seems to be that our chronological age really is just a number. "If people think that because they are getting older they cannot do things, or cut their social ties, or incorporate this negative view which limits their life, that can be really detrimental," says Terracciano. "Fighting those negative attitudes, challenging yourself, keeping an open mind, being engaged socially, can absolutely have a positive impact."

And this.

</comment></comment><comment><USER16> See discussion from 2017: [https://news.ycombinator.com/item?id=14532581](https://news.ycombinator.com/item?id=14532581)

</comment><comment><USER17> I decided a year or two ago that I have 2 ages, my chronological age and my biological age. I feel and tell people the latter, which is about 5 years younger than my chronological age. It really does make a difference and I feel younger. I refuse to accept the stereotypes of my age group. When a birthday comes round I decide whether to increase my biological age. I see this as no different to people who choose their gender based on how they feel.

<comment><USER18> It's still lying.

<comment><USER19> Is it important?

<comment><USER20> Honestly, yes, to a point. If I hired someone and found out they lied about their age, I couldn't trust them again. If I were dating someone, I'd leave. I'd never trust the person again because the age is such a silly thing to lie about and I'd assume that their speech is riddled with other untruths.

<comment><USER5> > If I hired someone and found out they lied about their age, I couldn't trust > them again.

Why is their age relevant? You might as well ask about their favourite sexual position. Would you expect them to answer that question honestly?

If not, why is does one dishonest answer warrant suspicion but the other does not? Probably because the age question feels "innocuous", but clearly it's not as it not only appears to measurably affects physiology, it definitely affects career prospects in some fields.

<comment><USER19> This is especially well put, thank you.

</comment></comment></comment></comment></comment></comment><comment><USER21> Awesome read!!</comment>


Ask YC: Coming up with a name - <AUTHOR> Pretty sure this has been asked before, but how did y'all come up with your startup name? <comment><USER2> For each name you want to try, follow these guidelines: 1) say it out loud to ten people and ask them to spell it

2) keep talking to them for about a minute, then ask them if they remember it

3) write it down for ten people and ask them to pronounce it

If you get less than 90% right on #1 or 3, your name will get lost in translation and people won't be able to find it even if they want to (or, you'll have to make a lot more impressions before people start remembering you). If you get bad results (probably won't be as high because of peoples' memories) on #2, your name it probably to long to remember or not differentiated enough.

Rules to Remember:

1) Easy to spell correctly if heard

2) Easy to say if read

3) short = easy

4) real words = easy (but usually conflicts with #3 because of availability)

5) Don't be blatantly about your business, but related and give hints (Xobni and Auctomatic are good examples of doing this right - much better than emailsocialnetwork.com or auctiontools.com)

6) Getting a domain name that doesn't follow these should be considered a marketing expense, because you'll have to make more impressions in order to get planted in people's consciousness.

Here's my take on some YC company names

Loopt - probably lost some people who thought it was looped, but only 5 letters and one syllable so it's easy

Weebly - weird word but hard to get wrong, good name

Xobni - like Loopt, probably lost some people looking for Zobny, Zobni, but the "inbox" thing makes it easy to remember

Wufoo - probably the hardest one (on this list) to get right, but being short is a virtue

Auctomatic, octopart - longer names that are made of real words are easier to remember and spell

</comment><comment><USER3> we:

1\. picked a list of 50-60 words/prefixes/suffixes we liked

2\. wrote a python script to generate permutations, and then

3\. ran dig -f on the text file to see which weren't taken

4\. scraped buydomains search results to see which ones were easily for sale.

absolutely everything else was a waste of time, although we're also working with a naming agency and that might be promising (but expensive).

amusingly, domains that were occupied by squatters or companies like buydomains were easier to deal with -- at least they're rational and the conversation, though annoying, is straightforward (arrive at a #.)

domains that are occupied but unused (and don't have a 'for sale' sign hanging up) are generally hopeless. if you get a response, you'll generally get some whacko who either won't sell it, or who will only sell for millions of dollars or something. you'll probably not believe me, and will learn this the hard way (just as pg told us months ago :))

ok enough bad news -- some links that might help:

<http://blog.guykawasaki.com/2006/02/the_name_game.html>

[http://onstartups.com/home/tabid/3339/bid/223/The-Startup- Na...](http://onstartups.com/home/tabid/3339/bid/223/The-Startup-Name- Game.aspx)

[http://foundread.com/2007/08/20/3-rules-for-naming-your- star...](http://foundread.com/2007/08/20/3-rules-for-naming-your-startup/)

and last and best (a 100+ page guide)

[http://www.igorinternational.com/process/igor-naming- guide.p...](http://www.igorinternational.com/process/igor-naming-guide.pdf)

hope this helps -- it's a struggle :)

<comment><USER4> Data Mattress FTW

</comment></comment><comment><USER5> <http://instantdomainsearch.com/> works best for domain brainstorming!

</comment><comment><USER6> They may not be exactly helpful, but they're relevant:

[http://pogue.blogs.nytimes.com/2007/12/06/the-dr-seuss- jumbl...](http://pogue.blogs.nytimes.com/2007/12/06/the-dr-seuss-jumble- naming-web-sites/)

[http://www.washingtonpost.com/wp- dyn/content/article/2007/11...](http://www.washingtonpost.com/wp- dyn/content/article/2007/11/27/AR2007112702321.html)

</comment><comment><USER4> Make sure to pick a name that can be pronounced two different ways. It's better when the prevailing pronunciation is the one you don't use.

Doubles the startup excitement!

</comment><comment><USER7> hivgene.com was available and directly related to the first iteration of our startup.

More recently, we were looking for names for something of an expanded version of the startup and my cofounder and we sat plugging away at instantdomainsearch.com and IMing each other available names as we found them. This got us xygene.com. I couldn't have asked for anything better.

I think we're just really, really lucky with domain names.

</comment><comment><USER8> I suggest you run a randomized test using Google keyword ads. Try different names taking you to some page and see which ones get the highest click through. Ian Ayres used this technique to find the title for his last book. Seems like a cheap and effective way to do it to me.

</comment><comment><USER9> The name of you compnay and the name of the domain do NOT have to be the same. It does help, however.

Pick a name that fits your company and then a suitable domain, if your compnay works then buy the exact domain,

ie. XYZ domain XYZLLC.com or XYandZ.com and so on.

<comment><USER3> speaking as someone who tried this route, don't bother. if you have a product named xyz, people expect it to be at xyz.com.

otherwise, you will lose the traffic that assumes xyz.com is your domain.

and not just from random visitors but important contacts like investors, who assumed we were at dropbox.com. even people who knew well that we were at getdropbox.com would routinely fire off emails to dropbox.com by accident.

the process sucks, but we're changing our name after wasting a lot of time hoping we could secure dropbox.com and going back and forth with the owner.

</comment></comment><comment><USER10> I highly recommend <http://www.pickydomains.com/>

Cheap and it worked like a charm, some really great suggestions.

(Admittedly, you're looking for a name but sometimes that and a domain are interdependent)

</comment><comment><USER11> Has anyone tried taking an analytical approach to finding a name? This is an approach I am currently trying - registering a lot of domain names and then using Google adwords to find out what name most people click on. Have no idea how well it works yet, but it seems much better than relying on your 'gut' to choose a name. Here's the approach:

1\. Find some available domain names that are, at the very least, easy to pronounce and spell. Easier said than done of course, but I still think it's possible to find some good stuff. For example, this website - <http://www.5letter.com/domain-names/> \- allows you to search through all available domain names that are exactly 5 letters long. There are some surprises there.

2\. Register as many domain names as budget allows. If it sounds good and its available, grab it.

3\. Throw together a website with a bit of info about your product and a box for people to enter their email address to find out when you're launching. I'm sure you have seen these kinds of sites before. The whole point of doing this is to make sure people have something to look at when they click your ads, and you might get to collect a few email addresses to notify when you DO actually launch.

4\. Go to Google adwords and set up an account (<http://adwords.google.com>). Create an ad that explains something about your product. Clone this ad for each of your domain names - ensuring that the ad title contains ONLY the text in each of names to test. For example, if your domain name is XYZ.com then put XYZ in the title. The point of this is that all your ads will be identical EXCEPT for the title, which contains a potential product name.

Make sure all the ads point to the website created at step 3. Choose keywords that people in your target market will be most likely to search. Make sure your budget is high enough to ensure a reasonable statistical sample for each ad. You need enough, in my opinion, to collect at least 100 clicks per ad. Google can handle all of the ad rotation for you, though there's no guarantee that impressions will be equal for all ads.

5\. (I'm currently at this step). Launch all of the ads. Wait for a couple of weeks or for however it long it takes to get a statistically reasonable number of clicks and impressions. Once you're happy with the numbers, look at the click/impression ratio for each ad. Basically, the ad with the highest ratio of clicks to impressions "wins", and the name in the ad title is your product name. If there's no clear cut winner, the idea is to cut all the losers and re-run the top 2 (or 3 or whatever it is) until a clear winner is found.

A couple of things about this method:

a. The method costs a bit and can take up a bit of time. I've spent about $300 so far, and some of the ads still haven't got enough impressions yet after two weeks.

b. You obviously don't need to actually register all of the domain names, but I still think it's a good idea just in case you miss out on a good one. You don't need to create the website either, but I think it's a good idea if you're serious.

c. I'd imagine this process might work well for product names in general.

d. There's a chance you'll get to a sort of local maxima with your choice of names. No idea how to resolve this, short of coming up with as many different ideas as possible.

e. Probably won't work too well for products aimed at hardcore geeks, as they don't tend to click ads or block them altogether.

<comment><USER12> Adwords is good for testing out headlines and copy, but are you seeing much variation based solely on changing domain names?

<comment><USER11> Yeah - so far there are about 3 clear leaders (30-40% higher than the others). I probably need to run the ads for another two weeks before I know for sure, though.

</comment></comment></comment><comment><USER13> Find out what domain name you can get first, and go from there.

</comment><comment><USER14> bustaname.com</comment>


You can tell a lot about a developer by the language they code in? - <AUTHOR>

Hey guys,
I remember coming across an article awhile back examining how different development languages attract different types of people. If it rings a bell let me know at: firstname.lastname@example.com
Thanks guys,
DK <comment><USER2> I'm assuming its this: [http://web.archive.org/web/20101123163313/http://jeez.eu/200...](http://web.archive.org/web/20101123163313/http://jeez.eu/2009/11/03/if- programming-languages-were-real-persons.html)

</comment><comment><AUTHOR> Thanks guys that one article was close. Any other articles you could recommend with the same general thought?

</comment><comment><USER3> You can probably tell more about them by the problems they tackle.</comment>


Ask HN: What are some uncommon employee benefits you think are good? - <AUTHOR> <comment><USER2> There's only one "uncommon" employee benefit that ever actually made a difference to me: providing the time and (sometimes)money toward continuing education.

</comment><comment><USER3> pay for stanford certificate programs</comment>


Ask HN: DOIs for scientific Blogs? - <AUTHOR>

I am the founder of The Winnower (thewinnower.com). We are implementing a feature that will allow bloggers to simply input the URL of their post on Blogger or Wordpress and automatically assign a digital object identifier (DOI) to their post.  The advantages of this are as follows:
1. Our commenting/review system is superior to that of most blogs (comments can be voted up/down and rated)
2. DOIs are assigned at authors discretion for every publication/post.
3. Different metrics will be available for every publication/post (Altmetrics to be implemented in the future).
4. We will be implementing a system to validate reviewers/writers by cross referencing major scientific indices.  Certain posts then have the potential to be indexed in major scientific indices in the future (i.e. if they have enough positive reviews from enough validated reviewers)
5. The formatting of the posts on The Winnower and the entire site are professionally designed.
6. We are actively advertising to other scientists and bringing them to the site.
7. Blog citations will count in the scholarly literature as we use Crossref to deposit references.
8. A professional looking PDF will also be generated. <comment><AUTHOR> How much should we charge?</comment>


Show HN: Rabbits – Send an email to get any grunt-work programming job completed - <AUTHOR> https://ilikerabbits.com <comment><USER2> "You should have it by 7:05 pm PST."

\-- From one of the examples.

I have uneasy feelings about this. I know that you're targeting grunt-jobs and it's easily estimateable. But I also know that things happen and they can't always be met.

If I'm going to send out a grunt-job then more often I care more about it being done well than being on time. If you're targeting quick turnaround over correctness then I imagine that I need to spend more time verifying the work, exactly what I don't want to be doing.

<comment><USER3> I had the same reaction to the examples. Even for "grunt-jobs", I would be extremely sceptical of anyone who can give me an ETA after thinking about the problem for less than five minutes.

</comment></comment><comment><USER4> These things are hard. If you can describe a simple programming task in non- ambiguous language, then that's your program right there.

It might be in pseudocode, but transcribing it into a "real" language is trivial compared to describing the problem in the first place. If it's not, there is probably a programming tool closer to your problem domain that makes it easier.

The biggest business opportunity here is probably helping out with office automation, because not all business minded people can code, not helping professional programmers with boring grunt work.

<comment><USER5> These sorts of mediation services pop up often, so I understand where you;re coming from. I don't know anything about this one, so I'm talking generally:

I see where you're coming from, but I don't think this service is really trying to solve the (impossible) problem that you lay out. This is more about hiring human labour in an efficient way than it is about making software. From the homepage, I think this is the most interesting example:

       Ok, so I can
      (1) scrape all the pages;
      (2) grab the name, address,
      and phone number of every listing; and
      (3) put all the listings into a CSV
      spreadsheet.
      This will be <price redacted>
      and take three hours. Is that ok?*

Programming is is a useful skill for this task. For the right person, it's 3 hours work. For the "wrong" person, it could be 3 weeks.

This type of exchange is a kind of economic fundamental. Economies are a long, long way from efficiencies and one of the biggest elements limiting them is what economists term "transaction costs." These are sometimes literal, like paying an attorney to write a contract. More often, it's a general communications difficulty.

Solving those communication problems produces. Programming-oriented-tasks is not necessarily a bad place to explore.

<comment><USER6> > _For the right person, it 's 3 hours work. For the "wrong" person, it could > be 3 weeks._

> _How much do you charge? We never go over $300_

One of these things is not like the other.

<comment><USER5> I don't get it...

</comment></comment></comment></comment><comment><USER7> The examples don't seem very plausible (except perhaps the python one). In the case of website scraping, why not just pay Mechanical Turk? You apparently just need the data so why try to order it as a script?

In the case of express.js, why would a programmer pay someone to follow a tutorial? You can't use the outcome (a completely unstyled blank website) for anything. The third example clarifies that building a themed website is out of scope.

The python module is something I could maybe see somebody ordering, if they were a student trying to get their homework done by someone else, or maybe a programmer who isn't competent to do their job but needs to deliver some code now and again and is probably being given very basic assignments.

<comment><USER8> Mechanical Turk doesn't always produce great results for something like web scraping. It really depends on the particular website and data that is being scraped. Usually there is also significant setup involved so that MTurk produces good results regardless of the task. If Rabbits really can do web scraping cheap, fast, and well then it might be worth the money.

<comment><USER9> If you need to scrape, check out Kimono... [https://www.kimonolabs.com/](https://www.kimonolabs.com/)

</comment></comment></comment><comment><AUTHOR> Hiya everyone, OP here. If you reached out to us in the last 14 hours, I'm sorry to say we probably haven't gotten back to you. We didn't anticipate this many responses-- we were expecting under 10 offers, and instead we got over 100-- and our management system is still really shoddy. For example, we're still copy and pasting your email into our admin dashboard to get your signup link.

We're working on fixing/scaling things, but in the meantime I didn't want to insult everyone with an automated message, so hopefully this message can catch you before that frustrated comment! Also, we do intend to get back to everyone eventually.

Just since we're on HN, if you have any thoughts to share feel free to reach out to me directly - bh at slimetree dot com

<comment><USER10>
      >For example, we're still copy and pasting your email into our admin dashboard to get your signup link.

Sounds like you need a grunt-work programming job completed! Sorry, couldn't resist... :) Good luck with your product, and congrats on launching!

</comment></comment><comment><USER11> The idea is good but they need to have both an "about" page, contact info, and remove the privacy on their whois. [1] If they aren't willing to disclose who they are I would have a problem with hiring them. [2] There is no reason for the business that they are in that they can't act like a business.

[1] Use a business address, a po box, a relatives address or anything "legitimate". Cloaking in this case is just a turnoff.

[2] I hire people to do things that I could use this for.

<comment><USER12> I don't quite get the thinking behind not revealing that information for a commercial service. It's really not ok, regardless of if it's an mvp product, there are still _minimum_ requirements.

Two days of effort would get you to a basic presentation polish (privacy policy, terms, about, and more elaboration on the financial / payment side of things), along with a PO Box.

<comment><USER11> Many registrars have sold people on using whois privacy to "protect yourself against hackers and spammers". [1]

Many end users either buy this argument or simply parrot what they see others doing (or not doing).

There are legitimate reasons for privacy but as a general rule if you are a business it's a big mistake.

On this page [1] it states that you will also "protect yourself from telemarketer". Well I am here to tell you (I also run a registrar that doesn't even offer privacy btw) that with thousands of domains under management we get perhaps 1 or 2 phone calls per week. And if we were to use a google voice number that wouldn't even be an issue. (Yes, thousands of domains ...)

[1] [https://www.name.com/whois-privacy](https://www.name.com/whois-privacy)

<comment><USER13> > Many registrars have sold people on using whois privacy to "protect yourself > against hackers and spammers".

I simply don't want to put my home address on the internet, and have no office address to use.

<comment><USER4> Why? What is the threat model here? It's not like some serial killer is known to use random whois data. Your home address might already be "on the internet", in the form of the phone book.

I don't know if it seems alien to you, but it's an honest question. The first thing I did when I got Internet access was to put my contact info in my finger banner. When I got web access I put up a "home page" with my contact info. It's been there since, and I think it's a feature that people can contact me if they want.

<comment><USER14> I had an eBay transaction go very wrong. Foolishly I used my real email and domain for communication, with a very WHOISable home address.

When the physical threats started I had to get the police involved.

There's also the issue of pseudonymity. If I work on a lot of different projects, I don't necessarily want everyone to know about everything I'm doing with everyone else.

This doesn't mean I ignore NDAs and share sekrit stuff - I most certainly don't. But I've freelanced in the past, and some employers have strange and unrealistic expectations about how much exclusivity they're buying.

This isn't hypothetical. In the past I've been told "You absolutely can't work for anyone else if you freelance casually for us."

Really? How about "no"?

 _Also_ it's better for free speech. I can express opinions freely with online privacy. I don't necessarily want those opinions to be associated with - say - a startup I'm creating.

Generally, contact info is a problem. It's actually mandatory for UK companies to include a business registration number and an office address. (I'm not sure how many UK devs know that.)

Problem is, when you can incorporate in Delaware or Kiev, physical contact details start to become meaningless anyway.

My rule now is that contact is easy if there's a networking, customer care, or community-building benefit. But privacy is a fine thing too.

Being able to pick and choose is best of all.

<comment><USER4> All of these are examples of the need of multiple on-line identities. You wouldn't use your main email for two projects or two employers that you don't want to know each other. Surely someone you freelance for has your address already?

Your primary address probably has traces of your real identity all over the Internet, including orders from eBay and others, so an adversary could dox you in an instant anyway. Especially if you use it for work related things. So why not make it easy to contact you?

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> I once tried "freelancer.com" on a simple job - I had a small Python program which would standardize WHOIS data from a domain registrar, with modules for about two registrars. I needed modules written for each of about a hundred registrars; they all have different formats. Three people crashed and burned on that. Nobody ever delivered.

<comment><USER16> Did you ask them to deliver all 100 in one go? Or did you try and find a dev who could do 5 and then ask for more?

<comment><USER17> Do this. I have even hired multiple devs for the same project, picking the best to move forward with for follow-on work. I also always put something in the job description that they have to reply with in the subject so that I can tell they actually read the description: Maybe the answer to a simple math question or the like (What is 60 - 21? Please put the answer in the subject like of your reply).

</comment></comment></comment><comment><USER18> I would love a way to join the "supply side" of this company aka pickup some quick scraping/scripting tasks for cash.

<comment><USER19> I suspect they'd get more applications for suppliers than requests for work.

<comment><USER20> Once corporate business analysts, business intelligence or banking teams realize that the definition of "simple, grunt-like programming task" could probably include Excel munging (e.g. VBA macros), I'm sure request volume will hockey-stick.

Might need another example on their website, since the current ones are _very_ developer-centric, which may not reflect their true positioning intent for the service.

<comment><USER7> I'm friends with a business analyst at a bank. They use their Bangalore office to do data or excel munging tasks all the time. But it's an offshore office staffed by company employees. There's no way he'd be able to send his data tasks to an outside party. And even if he could, he wouldn't be able to get the bank to pay for it.

<comment><USER21>
        > And even if he could, he wouldn't be able to get the
        > bank to pay for it.

You're thinking about this wrong. Bangalore office is busy today with "strategic projects". No-one bats an eyelid when you expense $150 of programming help on your corporate card. Big companies have people use unofficial resource channels to get stuff done all the time.

<comment><USER22> > Bangalore office is busy today with "strategic projects".

Interesting. I would really like to know more about those 'strategic projects'.

<comment><USER21> They're any projects scheduled by someone more senior than you.

<comment><USER23> Good one :)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER24> So I have something you guys may be able to help with. I own SmiteCamp[0] and we're having trouble with our server status checker for months now because I just can't seem to find what IP address the game launcher pings to check if the server is up.

I'm sure a complete novice with Wireshark or similar could find this out instantly, but I'm a complete newbie when it comes to things of that nature.

Is this something you guys could help me with?

Deliverables would just be a simple IP (or collection of IP's) so I can just ping it using Ruby in our Rails app.

\---

[0] - [http://www.smitecamp.com](http://www.smitecamp.com)

<comment><USER25> I went to your site but I can't figure out how to download your game (it's a game right?). The "tips for new players" is lorem ipsum so I assume you're still building it?

Regardless, if you can run the game on a Mac or Linux box, just open a shell and run this 'sudo tcpdump'. You'll see a bunch of background traffic and then you should see the connections to your hosts.

<comment><USER24> I've tried that before and there's just so much traffic popping up that I can't make heads or tails of it. As for the game, we're just a fansite for a game we enjoy playing. Think:

Wowhead.com -> World of Warcraft.

SmiteCamp -> Smite

<comment><USER25> Ah I got ya. Sounds like the other guys have you covered!

</comment></comment></comment></comment><comment><USER26> This looks like its good for a quick prototype for inexperienced devs (or non technical people or people who want to experiment). Depending on what work you can do, college students may ask you to do their homework.

<comment><USER27> And that is OK.

</comment></comment><comment><USER28> Someone should make Magic for complicated tasks and more long-term projects.

This will solve 3 of the biggest problems with freelancer sites

1) Not knowing who to choose for the job, I'd rather a good matchmaker just get me someone who can do my task

2) Lack of instant communication, clients get uneasy when programmers don't respond.

3) Negotiating a price point takes too long because of the infrequency of interaction

<comment><USER29> Have you looked into Toptal.com ?

My experiences with them have been great on all these metrics. I've worked with them as a dev and referred a few happy friends. Email's in my profile if you'd like to hear more.

<comment><USER30> I wanted to interview with them (as a developer), but was turned off by their 'expectations' page, it sounded way too controlling/strict.

How are they in that regard, and overall?

<comment><USER31> I did interview, and found the tests far too difficult and not remotely like anything I've ever hit in 20 years of doing software development. Everything was rather computer-science-algorithmicy, and there was no ability to ask for clarification on aspects of the puzzle-questions that seemed ambiguous. Couple that with somewhat short time lines, and it was frustrating.

In my 20 years, I've never _not_ been able to ask a client or PM or end user for clarification on what they mean, but what I took from toptal is that you'll be expected to work under those conditions.

It certainly weeds people out, and the whole "we'd rather weed good people out than let bad people in" mentality is probably understandable, it just rather felt like a "one size fits all approach".

Interestingly, looking at their site now, I read "we do not tolerate sub-par work or poor communication for any reason." Except, of course, when taking their entrance tests - no communication for clarification there. FWIW, tests were from codility.com

<comment><USER29> I also found the codility bit off-putting, though I think that company may have improved their product since you used it.

Otherwise, I've always found Toptal personal; even the next algo interview (a Skype-based one) was pleasant and friendly. Just one person's limited experience, though =)

<comment><USER31> I might have found them personal had they actually been personal with me, but (apparently) utter failure on the codility tests earns a "no thank you" email and that's it.

I'll amend that - I had about a 5 minute conversation with someone pleasant at the very start who set up the web test.

Again, I get the idea of trying to weed people out, and this probably just comes across as sour grapes as I didn't make the cut. The tests just felt rather too abstract and nothing like any work I've done across multiple industries, company sizes and teams. I guess to someone who's (recently?) taken computer science courses, it's a walk in the park, and having never taken CS classes, I'm out of the running.

</comment></comment></comment></comment></comment></comment><comment><USER9> I emailed them a task to test it out, no response so far. Curious how "involved" of a task they're willing to do.

It seems from their site speed is the top priority, which makes sense given the context of "I just need ___ built/working ASAP".

<comment><USER32> I sent a request too. Not answer yet ¯\\_(ツ)_/¯

<comment><USER32> 24 hours later, never heard back. Great idea + bad execution = 1 lost potential client.

</comment></comment></comment><comment><USER33> How does it work? Do you use AI techniques in combination with US based human knowledge workers/students? Or do you outsource the task to Mechanical Turk / Asia based outsourcing company?

Do you work together with a recruiting company? One can imagine that work seeking programmer have to deliver "homework exercises" that could be anonymised tasks of your site.

</comment><comment><USER34> Would be interested to see the actual prices for the examples

</comment><comment><USER35> Love this: like 99designs for code. Bet you'll get a lot of pushback on this "devaluing coding" just like 99designs has for design, which just means you're on the right track. Of course it doesn't; it just commoditizes basic coding skills, and more importantly makes the accessible to a wider set of people.

I especially liked the example that was scraping data off a bunch of pages and returning a spreadsheet/csv of the results; that's a great example of something a smart business person that thinks algorithmically can identify, but can't/won't implement themselves. I actually wonder if it would work well to target this service specifically at algorithmically minded business folks.

Hope this works well for you - great idea, and looks well executed so far.

<comment><USER36> This doesn't seem like 99designs does it? As far as I understand, 99designs pins 100s of designers against each others making many logos of which to choose from, which means that most of them works for free.

This website is one team making what the client asks for, there's no competition.

Unless that's what's happening behind the scenes.

<comment><USER37> > Unless that's what's happening behind the scenes.

I think something like that is what's happening behind the scenes. Maybe not the competition/spec work aspect, but certainly they're going to be outsourcing to loads of the cheapest workers they can find.

</comment></comment></comment><comment><USER38> Calling a task-oriented service 'Rabbit' seems worrying. Either you're unaware of the existence of TaskRabbit, in which case you haven't done basic market research and don't understand enough about this market to participate, or you know about TaskRabbit but don't understand the concept of trademark, in which case you may be fuzzy about other aspects of intellectual property - which is a red flag when you will be dealing in code, too.

<comment><USER39> Because they have "rabbit" in the name, everything they're doing is called into question? Ridiculous.

<comment><USER40> Try launching an online auction site called "The Bay" and see how long it takes for you to get sued. My guess is hours.

<comment><USER41> Possibly the worst comparison you could have made.

<comment><USER40> Umm. How exactly? The original comparison n was Rabbits vs Taskrabbit.

</comment></comment></comment></comment></comment><comment><USER42> According to the Qualys Lab SSL Test[1] there are some problems with your https configuration (mainly POODLE vulnerability)

[1][https://www.ssllabs.com/ssltest/analyze.html?d=ilikerabbits....](https://www.ssllabs.com/ssltest/analyze.html?d=ilikerabbits.com)

</comment><comment><USER43> Remember, you get what you pay for.

Check out the fine print for what you're giving away here.

<comment><USER44> I don't see anything in the fine print about release of data, are you seeing something different?

<comment><USER39> I feel like both of you are arguing for the same point.

</comment></comment></comment><comment><USER45> I gave this a try and first delivery was good. Sent another job and was promised delivery the other night, but haven't heard anything since and they don't reply to emails.

</comment><comment><USER46> is the pricing negotiable ?

</comment><comment><USER47> More commoditization for the profession.

You can't blame the capitalist for trying to make a buck here.

According to them, pricing might be a bit imbalanced in favor of the programmers and then they would love to see a bigger piece of the pie taken from us and transferred to them the brokers and a small chunk back to clients.

<comment><USER48> Something I don't think a lot of people realize is that "programmer" is a working class profession. The ability to code is a commodity.

By working class, I mean "not the capitalist class." There is still a big difference between programming and say, boilermaking. But in 2015, tech companies are the factories of last century. (We even call them software shops!)

There is a spectrum of quality of course, and a lot of people take a lot of pride in their craft, especially when they do it well, noting the beauty of good code, etc. but at the end of the day, most people who make chairs, for example, are not the highly-paid turtlenecked Danish guy whose work is basically art that you can sit on...most people who make chairs work in factories and churn them out on an assembly line. So it is with programming.

To your point, it certainly is in the interest of those who hire programmers to pay them as little as possible, given the nature of the economic system we find ourselves in. Consider also the trend of startups paying sub-market salaries and compensating with equity. The startup route certainly looks like a way to do programming while freeing yourself from the will of The Man (I'm being tongue-in-cheek here, but you understand the vibe, I hope), but when you get right down to it, it's more of the same. Instead of corporate execs, you have investors. Instead of middle management, you have founders. The programmer is still just the programmer.

<comment><USER47> Yeah, programmers/coders/hackers/developers are "proletarians" and not bourgeoisie since they trade their labor for monetary compensation.

I don't know from where in my reply did you get this notion that I was implying that we developers are/should be classified as capitalists.

Anyway, what's important is for you to distinguish between the concepts of labor as a commodity and the commoditization of labor.

These marketplaces start out as facilitators in the market to bring more efficiency and vibrancy, increase overall transaction volume and value but over time they tend to get parasitical and feed off every "host" they could infect.

So, basically my comment was a protest and critique of this specific business model of marketplaces and not to debate whether programmers have to join ranks with the bourgeoisie or not.

But if you wanna debate capitalist societies, technological unemployment and the alarmingly increasing income inequality and the overhoarding behavior of resources by and with the aid of the bankers worldwide, that's a whole new thread to engage in.

<comment><USER48> You're right, I misunderstood.

Could you explain what you mean when you say these marketplaces tend to get parasitical? I'm not sure I understand what that process entails.

<comment><USER47> What I mean by "marketplaces" is the likes of TaskRabbit, Fiverr, 99designs, Freelancer, Uber, Airbnb, ..etc.

I think you get the picture by now.

<comment><USER48> Ah. Yeah, I agree with you that the more efficiently people can be hired for grunt work and nothing more, the less valuable the work will be. If you need something difficult, you still hire a full time person, but now if you need something easy you can get it much more cheaply, which shifts the overall distribution of the value of X-type-of-work lower.

But one might make the point that all this means is we were paying too much for grunt work before these marketplaces showed up...

<comment><USER47> Yeah, you could argue that competition is good for the end consumer and I must concede but you have to look at the bigger picture that we keep exchanging labor for more and more shrinking "real" wages and these recent technological developments would accelerate this trend even further and make their implications more pronounced in society.

Wage slavery, the illusion of labor and career derived self worthiness, the quasi monopoly of labor and the pursuit of monetary gain as the principal ideals providing meaning to life in this age, and finally holding our whole lives hostage to increasingly harsh labor conditions just for the capitalists to increase their wealth and consolidate their power over us, all of these notions must be re-opened to discussion in society given that capitalism is entering a new soul-crushing phase that is gonna leave many victims in the world that sadly would have been saved if not for our complicity in one way or another to demand and fight for our rights and our fair share in resources on this planet.</comment></comment></comment></comment></comment></comment></comment>


Example using Google App Engine's new Remote API - <AUTHOR> http://billkatz.com/2009/2/Remote-API-Hello-World

<comment><USER2> This looks of limited utility. Why would I want to process data away from where it is stored?

<comment><AUTHOR> Right now, you can't run long-lived processes on App Engine, so schema changes, backups, and a whole raft of data processing routines must be handled through the HTTP interface. The remote API abstracts that away so you can write scripts as if you were operating locally without those limitations.

Also, the remote API could potentially be used with any other App Engine API, not just the datastore API.

There have been a number of App Engine enhancements over the last few months: a hook system, sorting on keys, this remote API, and most importantly, the relaxation of CPU limits. When taken together, these enhancements will allow some pretty cool management apps purely in user space.

<comment><USER2> >> The remote API abstracts that away so you can write scripts as if you were operating locally without those limitations.

But you still have to write the code assuming it can be interrupted by network going down etc. Once you do that, you might as well run it next to the data, no?

I can see the CPU-intensive argument, but this is less important now given relaxation of CPU rules.

Also, consider this paper by Jim Gray: [http://dslab.epfl.ch/courses/pods/fall06/readings/gray- econo...](http://dslab.epfl.ch/courses/pods/fall06/readings/gray- economics.html) where he concludes from economics point of view: _Put the computation near the data. The recurrent theme of this analysis is that "On Demand" computing is only economical for very CPU-intensive (100,000 instructions per byte or a CPU-day per gigabyte of network traffic) applications._

<comment><AUTHOR> >> this is less important now given relaxation of CPU rules

If you run on the server-side, you are still severely limited by request time limits, so you'll have to move the outer loops off App Engine. I already wrote a REST api to my app, and it'll still be used for AJAX clients and routines and authorization-specific scenarios. But for schema migrations, backup/restore systems, and quick and dirty prototype apps, the remote API simplifies the programming.

> Also consider this paper by Jim Gray

I don't dispute the bottom line of putting computation near the data... if your app is computation-driven or each computation requires mondo data. Ease of programming against the datastore shouldn't be casually dismissed in favor of architectural ideals, particularly in the context of free app quotas and programmers who want to quickly hack up a web app or prototypes.</comment></comment></comment></comment>


The Computers of Tomorrow (1964) - <AUTHOR> http://www.theatlantic.com/past/docs/unbound/flashbks/computer/greenbf.htm?single_page=true <comment><AUTHOR> The final line of this article is just astounding to me:

> _Barring unforeseen obstacles, an on-line interactive computer service, > provided commercially by an information utility, may be as commonplace by > 2000 AD as telephone service is today. By 2000 AD man should have a much > better comprehension of himself and his system, not because he will be > innately any smarter than he is today, but because he will have learned to > use imaginatively the most powerful amplifier of intelligence yet devised._

An "on-line interactive computer service"?...what did "on-line" even mean back then...nevermind "interactive"...The prediction in 1964 that we would have "an information utility as commonplace by 2000 AD as telephone service is today" must be one of the most prescient and accurate three-decade predictions ever made in a general interest magazine.

<comment><USER2> I agree that looking back at that statement from modern day is just mind blowing. BUT, I think it is good to remember that (in all honesty)fundamental computing did not advance after the 1970s. PLs, OSs, computer networks, etc., were all invented in the early 1970s or earlier. Most of what has been done in computing in the last several decades have been improved versions of the concepts invented in the 50s and 60s. JGrahamC calls this "Turing's Curse". [0]

[0] [https://www.youtube.com/watch?v=hVZxkFAIziA](https://www.youtube.com/watch?v=hVZxkFAIziA)

<comment><AUTHOR> Brilliant talk, thanks for linking to it...I love the bit (8:40) where he says, "The thing you are doing has likely been done before. And that might seem depressing, but I think it's the most wonderful thing ever. Because it means an education in computer science is worth something."

</comment></comment></comment><comment><USER2> The number of quotable quotes in this article is absolutely astounding. But this one stood out to me the most:

> "The increased possibilities for embezzlement through fraudulent accounting > may attract some of the resulting unemployed, but there are ways that the > computer can be deputized to police its own operation, quietly and without > danger of corruption."

As it outright acknowledges increased unemployment stemming from the ease by which computers can do the same task that it would normally have taken hundreds of individuals to accomplish.

And yet, to this day, we still refuse to acknowledge this. Most of the politicians running this country (U.S.) were children (or teenagers) when this article came out. At what point did humanity decide to just ignore the impending changes a fully computational world was bringing?

<comment><USER3> In theory, automation does not ensure unemployment, but it does lower wages. In theory, so long as you have a central government that is willing to engage in enough fiscal stimulus, and a central bank that is willing to engage in enough monetary stimulus, then a society can always achieve full employment. However, automation lowers the value of unskilled labor, and certain types of automation can invalidate the value of certain types of skill, so for unskilled labor and for certain types of skills, automation lowers wages. See:

[http://krugman.blogs.nytimes.com/2012/12/08/rise-of-the- robo...](http://krugman.blogs.nytimes.com/2012/12/08/rise-of-the-robots/)

"If this is the wave of the future, it makes nonsense of just about all the conventional wisdom on reducing inequality. Better education won't do much to reduce inequality if the big rewards simply go to those with the most assets. Creating an "opportunity society", or whatever it is the likes of Paul Ryan etc. are selling this week, won't do much if the most important asset you can have in life is, well, lots of assets inherited from your parents. And so on.

I think our eyes have been averted from the capital/labor dimension of inequality, for several reasons. It didn't seem crucial back in the 1990s, and not enough people (me included!) have looked up to notice that things have changed. It has echoes of old-fashioned Marxism — which shouldn't be a reason to ignore facts, but too often is. And it has really uncomfortable implications."

Also:

[http://www.nytimes.com/2013/06/14/opinion/krugman- sympathy-f...](http://www.nytimes.com/2013/06/14/opinion/krugman-sympathy-for- the-luddites.html)

"Mechanization eventually — that is, after a couple of generations — led to a broad rise in British living standards. But it's far from clear whether typical workers reaped any benefits during the early stages of the Industrial Revolution; many workers were clearly hurt. And often the workers hurt most were those who had, with effort, acquired valuable skills — only to find those skills suddenly devalued."

Also, the typical analysis of the Industrial Revolution only looks at workers in one country, rather than studying the impact that cheap exports from England had on nations such as India or China. The reality is that a small number of rapidly industrializing nations were able to export their unemployment overseas. The devastation caused by the Industrial Revolution lasted for centuries and some countries (India) have still not recovered even now.

</comment></comment><comment><USER4> Wow! This article was fantastically well-informed and insightful, and beautifully written. It tempts me to make a fallacious remark like "journalists were just _better_ in those days"!

Seeing how well this author was able to reason about the future gives me hope that our current predictions about tech might not be so far off.

<comment><USER5> _Martin Greenberger, who is associate professor at the School of Industrial Management of M.I.T., has been working with computers for fourteen years._

He wasn't a journalist.

</comment></comment><comment><USER3> This is a surprising thing to see written in 1964:

"Given the advanced state of development of present communications lines, it is unlikely that information utilities will wish to invest in their own communication networks. This may be taken as an argument against the necessity for stifling free competition and placing information utilities under public regulation; yet, there is another massive investment that the information utilities will not be able to sidestep as easily, if at all -- namely, investment in the large programming systems required to supervise the operation of the information utility and provide its services. The information utility should be able to shift part of this burden to the shoulders of its customers, but it will have to bear responsibility itself for the design, maintenance, and modification of the core of the programming system. The vast potential magnitude of this system, plus the fact that its usefulness may not extend beyond the physical machinery for which it was constructed, plus the possibility of programming waste from having too many entries in the field, may tip the balance in favor of a regulated monopoly."

They foresaw much of the current debate regarding the market power of cloud providers such as Amazon, and how much government regulation is needed.

And note that this bit was written before credit cards had become commonplace in the USA (and at a time when debit cards were wholly unknown):

"Suppose, for example, that businesses of all sizes have simple terminals linking them electronically to a central information exchange. Then each business can make instantaneous credit checks and offer its customers the convenience of universal credit cards. These cards, referred to by some as "money keys." together with the simple terminals and information exchange, can all but eliminate the need for currency, checks, cash registers, sales slips, and making change. "

</comment><comment><USER6> _An agent can act as intermediary if self-service turned out to be unprofitable; or the computer may be able to sell its own insurance policies via persuasive discourse with the customer._

In their wildest dreams, nobody could have predicted that in fifty years, legions of insurance reps would be replaced by animated gekkos, teleported good neighbors, retired comic strip characters, office camels, and ruby-lipped deli clerks. Nobody.

</comment><comment><USER7> > Research investigators will specify their precise data requirements and will > requisition custom studies from the files of the information utility. [...] > It is not a mere flight of fancy to anticipate _the day when information > automatically acquired during the operation of the information utility feeds > directly into decision mechanisms that regulate the economy and the activity > of companies_.

Facebook Ads.</comment>


Maintenance at The Planet.... Still Down - <AUTHOR> http://service-update.theplanet.com/

<comment><AUTHOR> Arghhhhhhhhhhh! My site is still impacted... and they keep telling us we are going to go live again - no dice!</comment>


Key signing party  - <AUTHOR> http://en.wikipedia.org/wiki/Key_signing_party <comment><USER2> Interesting, if brief, article. I'd like to know what's meant by "key signing parties themselves generally don't involve computers, since that would give adversaries increased opportunities for subterfuge," though. Maybe I'm not cryptographically paranoid enough, but what's the harm in allowing computers on-site?

<comment> the-kenny Someone could man-in-the-middle the local wireless lan or spy out your passphrase.</comment></comment>


USB-C #donglelife. Here's what you're in for - <AUTHOR> http://www.theverge.com/2016/11/5/13523372/usb-c-macbook-adapter-donglelife-problems-thunderbolt <comment><AUTHOR> The reviews on the Apple USB-C VGA Multiport Adapter are also rather chilling: [https://www.apple.com/shop/product/MJ1L2AM/A/usb-c-vga- multi...](https://www.apple.com/shop/product/MJ1L2AM/A/usb-c-vga-multiport- adapter)</comment>


Kickstarter wants less risk and more consistent fundraising success - <AUTHOR> http://mashable.com/2013/06/05/what-you-know-kickstarter-is-wrong/

<comment><USER2> huh. still pretty cool site, though seems like valid complaints. curious what author would say about crowdtilt/ their new api - did $400k for soylent no- food stuff in 2 days right?</comment>


Type-Safe Unions in C++ and Rust - <AUTHOR> http://genbattle.bitbucket.org/blog/2016/10/07/Type-Safe-Unions-in-C-and-Rust/ <comment><USER2> > but it's the first language I've experimented with that has made them a > first-class feature

It is a feature of ALGOL68, Pascal, Ada and quite some newer languages:

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

<comment><USER3> One interesting thing about Rust is that none of the language features are really _new_. Even the borrow checker is from research papers and languages from quite a while ago. The only thing I can think of that might be truly unique to Rust is the concurrency safety model (Send+Sync), though that might be old too.

Rust has just managed to take all these features and put them together well, and strive to be more than a research language by working on things that would make others actually _use_ the language.

(Of course, this _particular_ feature is common in many, many languages)

<comment><USER4> _the concurrency safety model (Send+Sync), though that might be old too_

Smalltalk has had that since the early 1980s

<comment><USER5> Like steveklabnik, I'm extremely curious to hear more about how Smalltalk's concurrency model is just like Rust's. The latter is a fairly flexible model to defend against data races (which seems to be a concept only really formalised in the late 80s) that puts most of the power in the programmer's hands (i.e. no need for compiler-inserted locks on every object, etc.) that comes from a finely balanced combination of the trait system and the manner in which Rust controls mutation.

It would be great to see how other languages have achieved a similar balance, and my impression is that Smalltalk (and like most languages) does not put nearly as much effort into controlling mutability, but maybe I'm wrong. Could you post some links/a description that explores how Smalltalk achieves a similar level of safety?

<comment><USER6> "which seems to be a concept only really formalised in the late 80s"

[http://brinch-hansen.net/papers/1975a.pdf](http://brinch- hansen.net/papers/1975a.pdf)

[http://brinch-hansen.net/papers/](http://brinch-hansen.net/papers/)

His first, concurrent OS was RC 4000 in 1969. It had many mechanisms in place. He got the key parts of the safety problem figured out by 1972. His language to handle much of it statically at compile-time was done in 1975. His Boss 2 system same year used coroutines + similar concepts to run 100 activities at a time with a proof of deadlock freedom. Finally, he used Concurrent Pascal to implement Solo system which ran its processes safely without using physical, memory protection. These summaries came from "Evolution of Operating Systems" on 2nd link.

So, the stuff was well-established by the mid-70's with operating systems using it in production. Just ignored by mainstream like a lot of good stuff for various reasons. ;)

<comment><USER5> I don't have time to read it in full right now, but a quick glance over that paper doesn't show any formalisation of data races, which is specifically what that parenthetical is about, not just general "concurrency safety". Having a detailed description of concept seems important because Rust is fairly precise in what it defends against, possibly giving the programmer more flexibility and power than in a system that attempts to solve many problems (but of course giving them less assistance when writing something that fits within the rules of the more defensive languages). Of course, it's possible that a language "accidentally" solves that problem without it having been formalised, it just seems less likely.

<comment><USER6> It's in the disk buffer and monitor examples. Here's a relevant quote:

"A disk buÆer is a data structure shared by two concurrent processes. The details of how such a buÆer is constructed are irrelevant to its users. All the processes need to know is that they can send and receive data through it. If they try to operate on the buÆer in any other way it is probably either a programming mistake or an example of tricky programming. In both cases, one would like a compiler to detect such misuse of a shared data structure."

"To make this possible, we must introduce a language construct that will enable a programmer to tell a compiler how a shared data structure can be used by processes. This kind of system component is called a monitor. A monitor can synchronize concurrent processes and transmit data between them. It can also control the order in which competing processes use shared, physical resources."

Sounds like he understands the problem is concurrent processes stepping on each others toes using a shared, data structure. He has nice drawings and charts to go with it. Plus, an early model to solve it statically at compile time. Jweb_Guru noted some limitations of his method but it understands and solves the fundamental problem. Hansen's own work improved on it later plus it was obsoleted by things like Ravenscar, SCOOP and now Rust's method. Nice that he had a whole OS protected from concurrency errors at compile time in the 70's, though. :)

<comment><USER5> None of that looks like a formalisation or even a description of a data race, at least not in the modern sense.

<comment><USER6> Im not a concurrency expert. Just had basic explanations and training common with other developers. How it was explained to me was two or more tasks trying to simultaneously access a shared resource for reading or writing. These accesses might not happen in the desired order, causing incorrectness. Then there were lock-related issues on top of that.

Hansens work formalized what I just described in terms of English, diagrams, and compiler checks. He started with sequential operations on private data in modules. He says if two or more share thd same private data they might not execute in desired order. The monitor pattern enforced user-specified order on function calls to shared data. Built-in to language & compiler.

If my description of race conditions is inaccurate or insufficient, I'd appreciate a link to one that you think is more accurate that I could use as a comparison point against the Hansen paper. Otherwise, his description of problems implementing concurrency sounds exactly like what I learned in books on multithreading, supercomputing, etc. Shared resource used in incorrect order due to concurrency.

Note: Also, his colleagues Dijkstra and Hoare were still inventing and developing formal verification at the time. Tooling sucked. Standard practice, like he did with Algol and COBOL compilers, was writing things like this in precise English with code examples or diagrams. Not sure if you were expecting a HOL model or something when you said "modern" but I figured Id mention stuff was primitive then.

<comment><USER5> I'm not looking for a formal mathematical model or anything, just a precise plain English description of a data race ( _not_ a race condition), e.g. like the following:

A data race is when

\- two threads access a single memory location,

\- at least one of which is a write, and

\- at least one of which has no synchronisation^

(^ synchronisation in the sense of things like atomic instructions, not necessarily full locks.)

<comment><USER6> Alright that's clear. It's also in the first paper I gave you in the first illustration. The problem you're having is you've constrained the definition of concurrency or race conditions to only be about the language common among application programmers, esp threading. Concurrency is broader than that: it can apply to processes, threads, systems, protocols, or even hardware circuits. All that is required is two or more active things working with a shared resource in a way where operations might get interleaved and out of order in a way that makes computation incorrect.

Knowing that, Hansen starts on problem with RC4000 (1969) describing protecting communication between "processes" via message buffers, message queues, and checks performed on them to ensure validity. That and Dijkstra's critical regions are where the foundations were laid. His next step was the formalization the problem in 1972:

[http://brinch-hansen.net/papers/1972a.pdf](http://brinch- hansen.net/papers/1972a.pdf)

Section's 1 and 2 cover basics of concurrent operation + race conditions. It was clear to me by the abstract but should be extra clear he's talking about them by this statement about Algorithm 1:

"The copying, output, and input of a record can now be executed concurrently. To simplify the argument, we will only consider cases in which these processes are _arbitrarily interleaved_ but not overlapped in time. The erroneous concurrent statement can then be _executed in six different ways_ with three possible results."

That's definitely a concurrency error. He then talks about mutual exclusion and synchronization with an await primitive. Closer to modern language but the focus on operating systems _in the early 1970 's_ means he says processes instead of threads and things like disk buffers or message queues instead of shared memory. Although his examples in 1972 paper are clearly shared memory since it's at algorithm level.

So, they discovered the problem around late 60's, implemented an early solution for sharing resources among processes in 1969, fully described race conditions + some other stuff by 1972, had a safer-by-design language to catch it at compile time by 1975, and applied that to implement a concurrent, production OS (Solo) for day-to-day use by academics by 1976.

So, race conditions were both formalized and initially solved in early to mid 1970's. I don't know how much more you need given they had an OS running 100 jobs/users at once interacting on shared resources without visible failures using their concurrency model. Mainstream OS's and apps are still having race conditions pop up on occasion. Clearly, what they were doing was addressing root cause if no race conditions occurred after a successful compile of "multiprogrammed" apps. :)

<comment><USER5> You're still talking about "race conditions" and "concurrency errors", whereas I am talking specifically about data races _not arbitrary race conditions or concurrency errors_. I don't see how the first illustration demonstrates anything about data races, nor how the rest of your comment applies to this: a data race isn't just plain old interleaving of executions/possible results.

A data race is when a program may give undefined results (in the sense of undefined behaviour in C) because you've violated core language semantics. Solving "all" concurrency problems is a much broader and far more restrictive paradigm than just ensuring that a program has defined behaviour, and not having restrictions is key to systems programming. (In fact, it's not even clear to me how one can "solve" race conditions at a language level without tying into some sort of machine-readable product specification or without just removing concurrency entirely: a single piece of non-determinism may be fine in one program but bad, i.e. a race condition, in another.)

 _> The problem you're having is you've constrained the definition of concurrency or race conditions to only be about the language common among application programmers, esp threading_

No, I'm not having any problem here: you said yourself that you're not an expert. A data race ( _not arbitrary race condition_ ) only makes sense if there's shared memory and thus thread is a perfectly reasonable description (although "thread" is also often used to just mean thread of execution, not literal pthread thread). It's becoming clear that we're talking about different things since you're not in-tune with the jargon/subtle terminology.

<comment><USER6> That is in fact where dispute came from: race conditions vs data races. I saw race and concurrency thinking you were talking about race conditions. My mistake.

Hmm. Ill have to look into the old stuff further to see about whether any of it, including Hansen, covers the accepted definition of data races. There's potential that Hansen's does but Im holding off until I think on it more.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> Note C++2017's std::variant is based upon boost::variant, which has been around since at least 2004 ([http://www.boost.org/doc/libs/1_31_0/doc/html/variant.html](http://www.boost.org/doc/libs/1_31_0/doc/html/variant.html), [http://www.boost.org/users/history/](http://www.boost.org/users/history/)).

boost::variant however lacks a nice visit method that takes lambdas, instead requiring the user to create visitor classes. This verbosity may be part of the reason it wasn't adopted in mass, in spite of its advantages in terms of type safety.

<comment><USER8> They are implemented completely differently. The only real similarity is in the name and API. Boost variant suffers from significant performance penalties that the new std::variant does not have.

<comment><USER9> Boost.variant suffers for being correct by default (i.e. strongly exception safe) plus opt-in for speed, while the new std::variant can get in an invalid state if an exception is thrown at a bad time. Let's say that the trade-offs will be hotly debated until the standard actually ships.

<comment><USER10> The tradeoffs have been hotly debated for years :) The current spec is finally something the committee could agree on, after countless proposals, counter- proposals, endless email discussions and long evenings at committee meetings.

<comment><USER9> I agree that the current spec is better than none at all, but it feels like a bad compromise. I would have preferred either a fully exception safe variant or one with an explicit empty state.

</comment></comment></comment></comment></comment><comment><USER11> Isn't this just an algebraic data structure?

<comment><USER9> well, yes. The nice thing is that in C++ can be implemented purely as a library.

Sometimes C++ feels like the high level languages assembler.

<comment><USER12> Unfortunately that means they lack lots of the pattern matching niceties that you get in languages with builtin ADTs. There is an impressive paper about implementing pattern matching on sub-classes, but it's pretty hackily done using the preprocessor, and could definitely do with some language support: [http://www.stroustrup.com/OpenPatternMatching.pdf](http://www.stroustrup.com/OpenPatternMatching.pdf)

<comment><USER8> It is widely speculated that pattern matching and many other syntactic enhancements are coming to C++ because of the big door that std::variant has opened.

<comment><USER13> IIRC Stroustrup mentions a desire for features such as these for versions of C++ after C++17.

<comment><USER14> C++11 c++14 c++17 does that mean that we might see a match statement in c++20? It would be a significant addition - similar in complexity to anonymous functions.

<comment><USER14> i remember that Bjarne Stroustrup held a talk in cppcon15 where he talked a lot about the GSL library [1] - it would add type annotations that can be checked by a tool, so as to check for potential memory problems (to me that sounds like a poor man's borrow checker).

One year later: i see the template library [1] but i don't see the analysis tool. Does anybody know what happened with this initiative?

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

[2] [https://github.com/Microsoft/GSL](https://github.com/Microsoft/GSL)

<comment><USER15> The tools are called clang tidy and Visual Studio 2015 Update 3.

Other vendors might eventually add support as well.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Believe it or not, even a weakly typed language like JavaScript can take advantage of type-safe unions, thanks to Flow - [https://flowtype.org/docs/union-intersection- types.html](https://flowtype.org/docs/union-intersection-types.html)

</comment><comment><USER17> Is there any demand for a syntactic sugar layer on top of C++? Something to make these new features more ergonomic? Something one could opt-in to for newer code, or code that doesn't need to be backward compatible to 1990? Something that outputs valid C++ and so works with any tool chain?

<comment><USER18> That would be a compiler for a language to C/C++. That design decision is virtually always a bad idea: LLVM has simpler semantics, allows proper GC, allows proper debug info, is widely portable, and avoids a needless AST serialization/deserialization step.

Don't compile to C.

<comment><USER17> Please don't tell others what not to do.

First, there are cases where compiling other languages to C or C++ is better than via LLVM; interoperability and portability are two (yes, C and C++ are more portable than LLVM).

Second, I'm not really talking about compiling some wildly different language to C++. I'm talking about some simple syntactic sugar. The same syntactic sugar that would be in an existing C or C++ compiler's front end, except instead of adding it to all the frontends in the world and waiting years, I'd like to implement it just once and now.

<comment><USER18> Effort in this direction would be better spent just adding new features to clang (or GCC). It'll be so much easier than writing a new parser and semantic analysis for C++, which you will have to do if you want the new feature to behave properly in the presence of templates, etc. You'll end up wanting to just use clang's front end to help you, like most C++ tools do—and at that point why not just modify clang itself?

People bring up obscure platforms (though, interestingly, I can't recall anybody actually _naming_ one of those platforms) all the time as motivation for compiling to C. But if you really need to do that, you can always revive the LLVM C backend. The fact that nobody has bothered to revive it and keep it up to date enough to be merged into LLVM proper, to me, is a strong indication that few people need support for these obscure platforms.

<comment><USER17> > Effort in this direction would be better spent just adding new features to > clang (or GCC).

In your opinion. This isn't a fact. For example, I know first hand of code that has to compile with compilers that are not in the set { gcc, clang, msvc }. What do I do then? (Oh, and those compilers are closed-source).

> You'll end up wanting to just use clang's front end to help you

Probably, although there are other options too

> and at that point why not just modify clang itself?

The changes I make, if useful to the community, would probably end up back in clang. But they would also remain a separate tool, because of all those other pesky compilers I work with.

> you can always revive the LLVM C backend

I'm not sure how that helps me; not only does it seem a terribly roundabout way to get what I'm looking for (instead of sugar -> c++ -> my c++ compiler, you are proposing sugar -> clang -> llvm -> c -> my c compiler), but I don't think objects produced by that pipeline would link with C++ objects produced from my native compilers, among other issues.

> The fact that nobody has bothered to revive it and keep it up to date enough > to be merged into LLVM proper, to me, is a strong indication that few people > need support for these obscure platforms.

Or, is it evidence that people using more obscure platforms (we're talking fortune 500 companies here) stick to languages that exist on their platforms for various reasons?

<comment><USER19> Although I don't agree with this poster, it seems odd that they're being downvoted.

</comment></comment></comment></comment></comment></comment><comment><USER20> Newbie here. What are the differences with Swift Enumerations?

<comment><USER21> Compared to Rust enumerations, they are one and the same. In fact, looking at the documentation for Swift Enumerations yields this little nugget:

 _You can define Swift enumerations to store associated values of any given type, and the value types can be different for each case of the enumeration if needed. Enumerations similar to these are known as discriminated unions, tagged unions, or variants in other programming languages._ [1]

Haskell and other ML family languages also have similar constructs, although these are usually modelled using "Algebraic Data Types", or "sum types". [2] [3]

[1]: [https://developer.apple.com/library/content/documentation/Sw...](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html)

[2]: [https://wiki.haskell.org/Algebraic_data_type](https://wiki.haskell.org/Algebraic_data_type)

[3]: [https://www.schoolofhaskell.com/school/to-infinity-and- beyon...](https://www.schoolofhaskell.com/school/to-infinity-and-beyond/pick- of-the-week/sum-types)

</comment></comment><comment><USER22> Came here to say that for the specific problem at hand (`ConnectionState`) you should probably use session types in Rust -- but someone on /r/rust beat me to it _and_ the author already added it to the post while I was reading! :)

</comment><comment><USER23> This is neat. I'm writing a very badly constructed toy application to get used to Rust, and some of the differences have been interesting to note.

In this case, when I first encountered Rust's enums the first thing that came to mind is the fact that C and C++ both offer the ability to support tagged- unions, but certainly not as a first-class entity and definitely with a lot more cruft, with or without safety checks.

For me the jury is still out on where the best "fit" for Rust is. I really appreciate the enforced safety of Rust for higher-level systems applications programming. I'm not convinced yet it won't just get in the way pointlessly for much lower level programming (especially embedded). Perhaps that's just my relative novice understanding of Rust, though.

<comment><USER24> It depends, do you want a piece of code that will be more reliable and require less maintenance after development?

Even after more than a year of learning the language I do find that some things take me longer to build, but the end product is far better.

<comment><USER23> I can write reliable code requiring less maintenance in C or C++. What you're engaging in is language zealotry. Rust isn't a panacea.

<comment><USER24> I think you're reading into the comment too much. Rust by definition, will create a safer variant of whatever similar code you write in C or C++. This isn't really debatable, things like bounds checking on arrays, strongly typed error results, thread safe memory sharing semantics. These will absolutely guarantee that in general you will have safer code in Rust.

What I said is that it might take you longer to write it in Rust, than something similar in C/C++, but you won't have some of the guarantees you get from the Rust semantics. So the tradeoff is up to you; write code faster, or write code safer.

<comment><USER23> Ah, I see now. Thank you for clarifying. Not that I agree entirely, mind, just that your initial comment was clarified.

<comment><USER25> I'm always fascinated when people decide to have an opinion on facts. That little spark gets fanned into the flames of religion so easily, and it's no exaggeration to say it is a primary driver in the shape of our civilization.

<comment><USER23> I'm almost never fascinated when folks mistake opinion for fact. It's the primary driver in many language wars, as I see it. Some come to recognize that no language is perfect, especially their favored one. Others don't.

<comment><USER25> Language wars are just another religion, so I agree.

The real tragedy of being human is that no amount of intelligence can save you from being religious.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER26> Hopefully there can be a new function returning optional at some point in the future.

<comment><USER8> I'm not sure I understand; in C++17, why can't you write a function that returns std::optional?

</comment></comment><comment><USER27> I think the example is either naive or then contrived. There's probably some behavioral changes that go with the state of the connection in which case you'd be much better served by having a State interface and then implementations for different actual states.

For example:

class State { ... }; class Connected : public State { ... };

std::unique_ptr<State> state;

<comment><USER5> That has downsides like, for one, requiring allocations for every state transition, and the runtime infrastructure (plus loss of static assurances) required to do downcasts when one needs functionality that only exists on a specific state. For closed state spaces like this example, a discriminated union is far more controlled and has many advantages, whereas subclassing is often better suited to open (or large) sets of states.

</comment></comment><comment><USER28> The first example could have been implemented in C or C++ using a union. Wouldn't necessarily be type-safer, but the reminder of writing myConnection.connected.m_id instead of just myConnection.m_id is also a pretty good way to ensuring that you remember to check if (myConnection.m_connectionState == CONNECTED) before ever accessing myConnection.connected. That said, having compiler errors is much better. I'd love to be able to achieve this in pure C. One way might be to use opaque types with accessor functions to return a pointer to the correct part of the union according to the requested connection state, a bit like std::variant::get_if.

</comment><comment><USER29> Someone just re-invented discriminated variants from Pascal.

<comment><USER15> This seems to have become quite prevalent.

Apparently the majority of CS degrees don't teach history of programming languages.

On my language design lectures in the mid-90's we had to learn all major ones, all the way back to Fortran.

<comment><USER3> This really doesn't seem like a reinventing to me (from either the Rust or C++ side). "Reinventing" implies ignoring history in the way you mention.

Tagged unions are prevalent in so many languages that the designers of both C++17 and Rust are bound to know about them. This is "borrowing" (or "stealing" :p).

The original Rust was ML-like and had an OCaml compiler, so Rust's enums definitely descended from those. I can't talk for C++ for sure, but like I said it's common in so many languages that they're bound to have derived inspiration from them.

<comment><USER15> I guess I was ranting a bit out of place....</comment></comment></comment></comment>


Ask HN: Why not re-interpret Moore's law from MTr/mm2 to MTr/mm3? - <AUTHOR> <comment><USER2> So you're basically talking about 3D stacking or integration. This doesn't have much effect, because replacing a single die with a die stack is basically a wash; it's the same transistors on the same silicon area, just rearranged. (3D NAND and 3D XPoint are an exception to this.)

And generally stacking is less area-efficient than a single die because TSVs are enormous. Stacking is more energy-efficient because it allows traces to be shorter (e.g. HBM2) and it's more space-efficient at the product level by reducing the amount of packaging.</comment>


SF: Free Opera AT&T Park Friday Night - Puccini's Tosca - <AUTHOR> http://sfopera.com/spact/tosca_att_signup.asp I know it's not exactly Hacker News, but for start up founders needing a distraction or date night at minimal burn rate, here it is. <comment><USER2> Mrs Browl and I are also going. The optimal viewing spot is on the lower right side of the baseball diamond.

</comment><comment><USER3> There is a single pair of $20 tickets left for the actual performance. For that price I'd take the real thing over the simulcast.

[http://sfopera.com/purchase/tickets/reserve.aspx?performance...](http://sfopera.com/purchase/tickets/reserve.aspx?performanceNumber=2470)

</comment><comment><USER4> Tosca is my favorite opera by far. Saw it again last season in LA, great story and there are some wonderful solos. Highly recommended if you can get there.</comment>


Intel unveils button-sized Curie module to power future wearables - <AUTHOR> http://www.wired.co.uk/news/archive/2015-01/07/intel-curie-quark-chip <comment><USER2> PLUG: I am already making this if you are interested, it is called MetaWear and it is a really tiny BLE wearable platform that comes with an API. Feel free to check it out at mbientlab.com or message me with any questions or if you just want a coupon (I might be inclined to give away some free boards too).</comment>


Ask HN: What is the market price of a day of CPU? - <AUTHOR> I'm curious about the economics of cryptocurrency mining on ordinary hardware. If there are any experts out there, I'd appreciate a back of the envelope estimate of the value of a day's worth of the CPU of a random computer, say a 5 year old Mac laptop. <comment><USER2> You could use a website like WhatToMine[0], together with an estimate of the hashrate of the specific CPU you are looking at, to figure out how much money you could generate with said CPU over a day of mining at 100%. Estimates can be obtained from crowd-sourced websites like monerobenchmarks[1].

Focus on CryptoNote-based coins: Monero, Electroneum, Sumokoin are some of them. These are still profitable with modern CPUs. Hashrate of a given CPU will be the same over any CryptoNote-based cryptocurrency.

[0] [https://whattomine.com/](https://whattomine.com/) [1] [http://monerobenchmarks.info/](http://monerobenchmarks.info/)

Edit: Just to add some real numbers. My home desktop is based on a Ryzen 1700. It is currently overclocked @ 3.4 GHz. I can get mine around $1.60/day worth of Electroneum at current prices. Estimated TDP is <80W (CPU alone), which at SoCal electricity costs results in $0.30/day. Profit is then around $1.30 a day.

<comment><USER3> This is a good reply, and one thing to keep in mind is the profit is for current prices. If they go up and you don't sell then that $1.30 a day could be more like $1,300 a day in a few months or years.

</comment></comment><comment><USER4> Check mining for Monero on a CPU. The economics still work for that cryptocurrency (it's the one commonly found in Web Ads. maliciously)

</comment><comment><USER5> I'm not sure, but you can't compete with mining ASIC rigs using CPUs is my general understanding.

<comment><AUTHOR> I believe that. But a day of ordinary CPU must have some value, however small, and I'm curious what it is.

<comment><USER3> There are too many variables at play, what CPU, what crypto, etc...

Why don't you run a miner on your computer and find out.

If you're paying for your energy and equipment it'll most likely be a negative in terms of profit but would be a fun experiment and espouse a hacker ethos.</comment></comment></comment>


The Pirate Bay verdict: 4-10 months prison, SEK 46 million in damages (Swedish) - <AUTHOR> http://www.svea.se/templates/DV_Press____21065.aspx

<comment><USER2> as someone familiar with the swedish prison system, 4-10 months will be cut down by a 3rd (a reduction for good behavior is automatically granted to each prisoner, unless proven otherwise.). A prisoner also has a nice private room with cable TV and internet.

46 million SEK is 5-6 million USD.

<comment><USER3> They shouldn't go to jail for copyright infringement, even in the US it is not considered as a crime.

Article in English: [http://torrentfreak.com/the-pirate-bay-appeal- verdict-101126...](http://torrentfreak.com/the-pirate-bay-appeal- verdict-101126/)

<comment><USER4> Copyright infringement in the US is absolutely a crime, and 4-5 year sentences are not uncommon:

<http://www.cybercrime.gov/ip.html>

</comment></comment></comment><comment><USER5> google translated version - [http://translate.google.co.uk/translate?js=n&prev=_t&...](http://translate.google.co.uk/translate?js=n&prev=_t&hl=en&ie=UTF-8&layout=2&eotf=1&sl=auto&tl=en&u=http%3A%2F%2Fwww.svea.se%2Ftemplates%2FDV_Press____21065.aspx&act=url)

</comment><comment><USER6> What will happen to website?

<comment><USER7> Whatever happens next, not much will change for the users of the popular BitTorrent indexer. The Pirate Bay website will remain online and operating as usual. None of the defendants are involved in the site anymore, and all assets are reportedly owned by the Seychelles based company Reservella.

From:[http://torrentfreak.com/the-pirate-bay-appeal- verdict-101126...](http://torrentfreak.com/the-pirate-bay-appeal- verdict-101126/)

</comment></comment><comment><USER8> If you've read, "Catch Me If You Can", by Frank Abagnale Jr., then your opinion of Swedish prisons might be that they're country clubs where you get to sew parachutes and go to school for free, in comparison to those in the US. This doesn't sound so terrible, considering that this is a large scale criminal organization (whether you think what they did is a crime or not, the Swedish legal system has officially deemed it one).

The owners would have far more personal protection from legal in the US, though.

</comment><comment><USER9> 4-10 months jail time is like a vacation.

<comment><USER10> Swedish jails are not to be compared with those in the US or plenty of other places in the world but having your freedom to move restricted is still one of the harshest punishments that civilized countries inflict on their citizens.

I find it hard to believe that you equate that with that which we normally consider an expression of extreme freedom, that of traveling and having the freedom to organize your time any way you want.

<comment><USER11> I reckon a Swedish jail is a lot nicer than being deployed in Iraq or Afghanistan, where your freedom of movement is restricted and you are under constant threat from people who spend their days and nights trying to kill you.

<comment><USER10> You can only be deployed if you're in the army, most countries have volunteer armies. What is your point exactly ?

<comment><USER12> Sane people can, and often do choose to do things which could be considered worse than a few months in a Swedish jail.

Given a choice between a Swedish jail and a tour in Iraq, I would choose jail. But then I am not American, or Swedish.

</comment></comment></comment></comment></comment><comment><USER13> If jail time > 12 months, sentence = prison else sentence = jail

<comment><USER14>
          elseif (sentences == consecutive){
            serve(time,chargeCount,jail)
          }

There are other variables, such as Jurisdiction, also impact how a person will be sentenced. Laws might differ a bit in Sweden though.

That code isn't very good. A person can serve >12months if the sentences are ran consecutively. Depending on the criminal, crime, and place, the person charged may want to be in prison instead of jail.

<comment><USER15> Are you sure that jails even exist in Sweden? I would be surprised. Isn't that some kind of weird American quirk?

This brochure from the Swedish government [0] differentiates between remand prisons and correctional facilities (of varying security levels), no mention of anything else at all.

[0] <http://www.regeringen.se/content/1/c4/33/41/0feab306.pdf> (PDF)

<comment><USER14> It looks like a 'remand prison' is similar to the common law 'jail'.

remand prison: Where people who are suspected of offenses and who have been detained by a court while waiting for trial are held.[from the link above]

[0] <http://legal-dictionary.thefreedictionary.com/Remand+prison>

<comment><USER15> I'm seriously confused by the US law system and apparently, also by the Swedish one. At least I found out that in my native Germany "jails" (that's how it's translated) don't exist any longer but apparently did until 1970. Germany has now only prisons, someone who is kept in custody prior to the trial is in exactly the same building as those who are properly in prison.

<comment><USER14> I meet someone on ChatRoulette once who was an intern at one of the courts in Germany. During our conversation it became obvious that English Common Law and Germanic/Salic Law are two different beast. It is important to remember that there is no universal set of rules, as cultures value things differently.</comment></comment></comment></comment></comment></comment>


Show HN: CLAHub - Easy contributor license agreements with GitHub  - <AUTHOR> http://jayunit.net/2013/01/09/clahub-easy-contributor-agreements-on-github/

<comment><AUTHOR> CLAHub is a side project I put together a few months ago, and just got around to releasing. It's open source. It's not finished per se, but I'd love to hear what you think.

Questions from the blog post: Do you use a CLA for your project(s)? Would this encourage you to add a CLA if you don't have one already? (That's not really my goal - just to reduce friction where CLAs are already valuable.) If you have a CLA, would you use something like this to reduce the barrier to entry and your overhead? What kinds of features would be useful?</comment>


How do I protect myself in a world where everything about me is leaked? - <AUTHOR> <comment><USER2> Brings to mind a lyric:

My guard stood hard when abstract threats

Too noble to neglect

Deceived me into thinking

I had something to protect

Good and bad, I define these terms

Quite clear, no doubt, somehow.

Ah, but I was so much older then,

I'm younger than that now.</comment>