OkCupid has less-than-OK policies. Especially if you're "ugly." - <AUTHOR> http://bitchmagazine.org/post/okcupid-has-less-than-ok-policies-especially-if-youre-ugly <comment><USER2> I'm not quite sure what the problem is. OkCupid's goal is to help its users find dates. People rarely date someone who's very significantly more or less attractive than they are. Directing people to users with whom they're much likelier to find success actually seems quite sensible, not "less than OK".

<comment><USER3> Hell, I would like if OKCupid let me know my percentile. If I thought I had a hot shit profile that actually rather sucks (by real user analytics feedback), it would benefit me to know.

[edit] People are taking this far too personally. _You_ didn't get rejected as unattractive, your _profile_ got rejected as unattractive. There are more ways than one to rectify this. Remember, these people don't know you, they can only view a tiny slice of you via your profile - one that you are in 100% control of. Perhaps your failure is not that you're irredeemably ugly, but rather that your profile inspires no attraction. Conversely, if you "won" the profile attractiveness game, it may not mean you're nearly as attractive in real life as your profile suggests.

This reminds of the PUA mantra as it has been related to me: "she didn't reject _you_ , she rejected your _approach_ "

<comment><USER4> > If I thought I had a hot shit profile that actually rather sucks (by real > user analytics feedback), it would benefit me to know.

The "YourBestFace" feature would help you with that.

Most interesting thing I found out? Pictures with my grandma: awesome. Pictures with my grandfather: horrible.

<comment><USER5> Wow, I hadn't heard of that feature!

It makes me wonder why these people are running something as small-time as a dating website. I haven't seen so much useful creativity and cool new ideas and openness since Google got bigger.

<comment><USER6> Why is dating "small-time"? What other category of website can actually charge _subscription_ fees and still attract a large mainstream user base?

<comment><USER7> OK Cupid is free btw

<comment><USER4> But you can pay a subscription and get no ads, better filters, and extra blah blah blah.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> _The policy discriminates against those deemed less attractive for whatever reason (bad photo, profile misspelling, etc.)._

Heaven forbid people are rewarded for being liked! Shouldn't a bad photo or a misspelling count against you?

 _The policy reinforces the notion that hot people deserve love and happiness and "ugly" people should just get used to being alone._

What does attractiveness mean if not that people like to look at you more? It would be weird for a dating site not to respond to this dynamic.

 _...we've all got different preferences when it comes to physical attractiveness, and just because someone hasn't gotten as many click-thrus as someone else doesn't mean that users won't find that person attractive._

Interesting. I wonder if HotOrNot can tell you what the correlation among user ratings is (i.e. whether an 8 is more likely to be seen as an 8 or a 2). I would be pretty surprised if the 8's were just as likely to be seen as 2's by a random viewer.

 _OkCupid is segregating the groups, which seems counter-productive to, you know, DATING._

Really? If you're in a dating mood, you don't look for specific kinds of people? I doubt this. If you're actively looking for mates, you'll still write off >90% of the people you see on a daily basis (count how many people you walk past who are within 10 years of your age, a member of the sex you're attracted to, and not--by your guess--currently romantically attached).

I used to think that the problem with calling prejudice "discrimination" was that it rid us of a serviceable word. But it's worse than that: now, we're rid of a serviceable concept, too. Suddenly, discrimination--making judgments about how things differ--is also a problem.

</comment><comment><USER9> If you think looks don't matter, then this shouldn't bother you as you are just as likely to make a match no matter how attractive the subjects are. If you think looks do matter then you have no right to complain. I think people are just upset to learn that they are in the unattractive group.

</comment><comment><USER10> "however, we've all got different preferences when it comes to physical attractiveness"

"this policy is a bunch of discriminatory, attractiveness-norm-reinforcing"

"why are they falling prey to the same arbitrary attractiveness standards as your local meat market-y douchebar?"

This is what reading too much sociology will do to you. I just spent a year with it as a major, it won't happen again.

<http://en.wikipedia.org/wiki/Physical_attractiveness>

<http://en.wikipedia.org/wiki/Sexual_attraction>

<comment><USER11> Indeed, it does appear to make you believe things which everybody should know from experience are false. Attractiveness standards are not "arbitrary", however much you might want to believe it. We have _slightly_ different preferences when it comes to physical attractiveness, but the differences are fairly minor. And attractiveness norms don't need any "reinforcing", they seem to be pretty damn-near hardwired in our genomes.

Reading this, I expected the author to be a trollish blob, but clicking on her name reveals she's nothing awful: [http://bitchmagazine.org/sites/default/files/imagecache/prof...](http://bitchmagazine.org/sites/default/files/imagecache/profile- photo/profiles/images/IMG_0039.JPG)

I suppose that makes sense: if she were completely hideous she'd know about it, but if she's so-so in appearance then she's more likely to be offended by her non-inclusion in the top half.

</comment></comment><comment><USER12> If I were running that site I would be interested in sending that email to a randomly-selected half the userbase and then seeing if and how they behaved differently on the site. After all, the letter says both that you, personally, are more attractive, but also acts as kind of guarantee that the people you are being matched with are more attractive too.

There may be some ethical considerations here of course.

<comment><USER4> This sounds like something that they'd do. Those guys are serious math nerds.

> There may be some ethical considerations here of course.

Reading OkTrends, I'm pretty sure they're not worried about it.

<comment><USER13> Not that they don't have standards--I'm sure they're very careful not to release anything that would reveal private information about specific, identifiable users.

Other than that, yeah. Those guys pretty much do statistics for the lulz. I would not be surprised at _all_ if wzdd turns out to have been correct...

<comment><USER4> Since I didn't get one of these letters, I'm pretty sure he is. ;)

</comment></comment></comment></comment><comment><USER14> This boils down to the simple fact that the truth sometimes hurts, so we avoid talking about it as much as we can. Thus it's difficult to be marketable and reflect reality at the same time.

</comment><comment><USER15> This post doesn't make sense. It specifically says that this doesn't affect match percentages which is the primary way that the site matches people. It is just taking into account that the people who are the most conventionally attractive tend to stick together. The biggest problem I have with dating sites is that I have to go through hundreds of profiles to find someone who I like that also might like me. IMO, the smarter the matching, the better it is for everyone.

<comment><USER3> Ehhh, I still think dating sites fail at their job, and a large part is the ease at which you can zoom through dozens of profiles and reject them all - all without having ever conversed or met the other person.

You think you're making an informed choice - that this person is clearly incompatible with you (or you with them), but consider the relationships you have/had, and ones around you... how would many of those profiles look on a dating site? How many perfectly fine relationships would have been written off by either side if they had a profile to read about the other person beforehand?

Which isn't to say that filtering is bad, but rather that the "scan profile, decide if you want to contact" idea is by its nature encouraging users to set bars that are too high for their own good.

If their match algorithm was good enough, I'd be interested in seeing a dating site where you don't get to view the other person's profile. It will only give you the absolute most bare-bones information about this person, and put you two in contact. This is, after all, how most relationships blossom (i.e., in a general void of information about each other).

<comment><USER15> <http://www.crazyblinddate.com/>

The people behind OKC actually started a site exactly as you describe. It's currently being renovated or something though.

</comment></comment></comment><comment><USER16> At first I was like, "wow, that's offensive."

But then I was like, "damn, how come I didn't get that email too?"

<comment><USER17> Why is it offensive? Long-term relationships report the highest happiness levels when both partners are of roughly equal attractiveness.

<comment><USER18> But I rate myself above average in every category! Just like everyone else!

<comment><USER19> Congratulations! You are more attractive than 70% of the population! Just like everybody else.

</comment></comment></comment></comment><comment><USER20> They left out the main reason it's offensive: What do you mean the scales recently tipped in my favor? I'm just _barely_ above average now, and I was previously at 49% or lower? What if I thought I was in, say, the top 25%?

<comment><USER21> so, ignorance is bliss?

<comment><USER22> Pretty much. If you're a guy, you'll do far better if you're overconfident of your attractiveness than if you have an accurate impression.

<comment><USER23> Unless you're actually really hot, surely.

</comment></comment></comment></comment><comment><USER24> My theory:

I would bet that the system a sliding scale, not a hot or not situation. More than likely users are being shown matches that the system deems to have similar "attractiveness" levels, based on that click-through metric mentioned in the email. The email we see in this article would then just be a notification letting the user know that he or she has cross into the top 50% of click throughs. As their click through has been increasing slowly over the length of their membership they would have been seeing more and more other "attractive" people as their rank increased.

</comment><comment><USER25> Isn't this an obvious marketing angle designed to get people to come to the site more often? Somehow I doubt they are really giving people less matches based on this. Anyway, assuming an even distribution of matches, matching "ugly" top "ugly" and "attractive" to "attractive" will result in an even match distribution.

<comment><USER26> I would assume that men are disproportionately more unattractive than women meaning e.g. the 20% of "hot" men get their pick of 80% of women who are "hot". Just like in real life. _goes reads mystery method_

<comment><USER11> If you live somewhere where 80% of women are hot, I want to move there.

<comment><USER26> college

<comment><USER27> Uh, ugly people don't go to college?

<comment><USER28> Just thinking about the demographics, your average college student is between 18 and 24. While there are certainly exceptions, this is generally the age at which most people will be at or near their high for physical attractiveness.

Also, college students disproportionately grew up in middle and upper class households so they generally had access to good food, good healthcare, good dental care (including cosmetic dental care), not to mention better clothes and (where appropriate) makeup.

Furthermore, tying in to their age, college students tend to care more about their appearance than the average population. They often consider dating and even looking for a spouse to be a major activity of college. They often have more time to care about it than working professionals. They often have more social pressures to care about it. So, compared to the average population, they put more effort into looking good and that effort often has at least some results.

So, while there are certainly less physically attractive people in college, the student body of most colleges is on average noticeably more physically attractive than the average population.

</comment></comment></comment></comment></comment></comment><comment><USER29> Ack! The author doesn't quite understand how this is implemented, nor how OkCupid handles matching people. If she did, I imagine she would have found the practice itself significantly less objectionable, though her points about the e-mail's phrasing stand.

(Full disclosure: I have an OKC profile, and on My 28th, I received the e-mail mentioned in the article.)

Members on OkCupid answer questions about lifestyles, dating, sex, etc. (e.g., "Do you think it is appropriate for parents to choose their children's religion or a lack of religion for them?") and then state how their ideal match would respond, as well as how important it is that a partner have similar views.

Your set of responses is compared to every other profile's set of responses, and the intersection between each pair is used to calculate a "match percentage," which is a pretty good predictor of how folks will get on, or at least have compatible views. [0,1]

Almost any displayed link to another profile is accompanied by your match percentage with that individual. It's a major component of the site.

Now, when searching for people to message, most folks set up basic filters -- gender, orientation, age, kids, distance, etc. You have to order the result set somehow, and that's often either just the match percentage, or you can elect to sort by "Match & Distance," "Match & Last Online," etc.

As far as I know, searching is the primary means through which people find each other on the site, and this change will not impact that _at all._

There are a few places where OkCupid will show you somewhat random collections of profiles: On the homepage when you log in, in the sidebar on every page, and in two features: Quickmatch and Quiver.

Quickmatch is just a procession of profiles that you're asked to rate from one to five stars. If two people rate each other highly (or poorly), the site notifies them. Your "quiver" holds a rotating set of three profiles that their algorithms think are particularly good matches which you can choose to message or explicitly ignore.

In all but one of these cases, the candidate profiles are displayed with little or no additional information beyond a picture. On Quickmatch, the user's entire profile is displayed, but you must rate them before their account name is revealed and you're able to communicate with them.

The email indicates that OkCupid is using click-through data from these sources ferret out which profiles are the most appealing to its users. The _only_ change that results from being one of those profiles is that when OkCupid shows you a random profile, it is more likely to pick from the set of more appealing profiles.

That's it.

If your profile is not within the upper half of all profiles, then you'll still get the same distribution of recommendations as before. And your profile will still show up in OkCupid's recommendations to more appealing users, albeit slightly less often.

But again, that's only for places where OkCupid itself recommends profiles -- on the front page, in the sidebar, on Quickmatch, and in Quivers. Search ranking remains absolutely unchanged.

Contrary to the author's assertion that "the dreaded bottom 50% presumably do not have access to potential matches in the top 50%," the bottom 50% still has exactly the same access to the top 50% as before. They're just less likely to be _randomly suggested_ to the top 50%.

I'd also challenge the assertion that "the policy reinforces the notion that hot people deserve love and happiness and "ugly" people should just get used to being alone." Rather, I think this may be designed to reward users who take the time to craft engaging profiles by showing them other profiles that have been vetted by the community.

The policy assuredly does _not_ "[make] dating decisions on the users' behalf without considering personal preferences" since match percentages and search rankings are completely unaltered.

While the policy is indeed "kept secret," and the language is offensive, I find it hard to accept that the policy is segregational or that it has a significant impact on the site's operations. I'm not even sure it's "attractiveness-norm-reinforcing," since they're tracking click-through rates, which is not _necessarily_ attractiveness.

Links about match percentages:

[0]: [http://blog.okcupid.com/index.php/2009/09/29/how-races- and-r...](http://blog.okcupid.com/index.php/2009/09/29/how-races-and- religions-match-in-online-dating/)

[1]: <http://www.okcupid.com/faaaq>

</comment><comment><USER30> reminds me of "hot or not"

</comment><comment><USER31> So in other words, it mimics real life?</comment>


Paypal: Elaborate hoax by Ronaiah Tuiasosopo to steal my $2K - <AUTHOR> http://paypalsucks1.tumblr.com/

<comment><USER2> I got the some request, uploaded the requested documents and had no issues?</comment>


Why doesn't IFTTT fix bug? - <AUTHOR> Created a IFTTT account with email address(such as email@example.com), and changed the email to firstname.lastname@example.com, and created an applet `send me an email`, you will see the email will be sent to email@example.com, I think the email should be sent to firstname.lastname@example.com, it's a bug here, and I had emailed about this issue several times (more than one year), but the bug still remains. <comment><AUTHOR> I think I know the reason now.</comment>


Google+ for Google Apps domains is in the works - <AUTHOR> https://plus.google.com/u/0/116070746143818505850/posts/WatUnsHeLTD

<comment><USER2> Odd, if I log in with my Apps account as primary and try to go to G+, I still get the message about Profiles not being enabled. I guess they're just testing on a few domains, or maybe rolled something out by accident.

<comment><AUTHOR> The trick is to be logged into Gmail and G+ with your Google Account, log off from Gmail, log back in with your Apps account (one which has been transitioned to a Google account) and finally switch to G+.

<comment><USER2> Hmm, didn't work. Maybe I did it wrong...

</comment></comment></comment><comment><USER3> So that Google can automagically create your "Work" circle? :)</comment>


Ask HN: How f'd up is this workflow? - <AUTHOR> https://anti-captcha.com/mainpage <comment> crooked-v The existence of it seems entirely ethical to me, given that ReCAPTCHA will refuse to allow audio or other accessible checks for anyone who's "not human enough" because they're running an adblocker.</comment>


Power to the People - <AUTHOR> https://blog.jessfraz.com/post/power-to-the-people/ <comment><USER2> I'm not arguing that data centers aren't power hungry but I will say that I'm a bit concerned that proof-of-work crypto-currencies are consuming way more power than the coins will ultimately be worth. I know that bitcoin has made millionaires but I still can't spend it at my grocery store.

</comment><comment><USER3> 48V is interesting. It's a fairly safe voltage for humans to encounter. POTS in USA has used it for a long time, and PoE runs pretty close to it. It's easy to buy batteries for backup. As noted in TFA, it doesn't require components as beefy as those with 12V. I wonder if this sort of effort on Google's part could lead to more consumer-level electrical gear with strange voltages? ISTM a modern home with modern lighting should drive all of that with PoE or something else much like it...

</comment><comment><USER4> Im not sure the economics of running our own rack servers makes too much sense for most companies and teams. But for groups like cloudflare, netflix, any edge computing or distributed cache systems this makes total sense.

If I had to guess Id say oxide will look like some kind of high voltage rack level installation of ARM cpus for groups or teams that actually still need on-prem or cdn-esque capabilities.

</comment><comment><USER5> I was excited to read about how to return power to the people from centralized services and data centers that arose to power the modern Web.

Indeed, this article started out talking about centralized data centers, but then veered off to talk about power consumption instead of Power to the People. I guess as a play on words, "power" can refer to power consumption.

But if you want to find direct solutions to centralized data centers usurping the power of people and their local communities, I wrote an article two years ago with the same name:

[https://qbix.com/blog/2017/12/18/power-to-the- people/](https://qbix.com/blog/2017/12/18/power-to-the-people/)

</comment><comment><USER6> I wonder what software stack choice brings to the table here. Are the differences between the power draws of services written in (equivalent scope & quality) Python/jvm/Rust/node of _any measurable significance_?

[Edited to emphasise empirical interest]

<comment><USER7> Interestingly, this has been studied.

[https://greenlab.di.uminho.pt/wp- content/uploads/2017/10/sle...](https://greenlab.di.uminho.pt/wp- content/uploads/2017/10/sleFinal.pdf)

There's a quicker writeup here if slogging through paper's isn't how you want to spend your time.

[https://thenewstack.io/which-programming-languages-use- the-l...](https://thenewstack.io/which-programming-languages-use-the-least- electricity/)

<comment><USER6> Nice, thanks. I've just glanced through and will have a proper read later. It would I guess be pretty complex to extend these kind of isolated tests to whole real-world installations.

</comment></comment></comment><comment><USER8> That is an excellent post, but shouldn't we rethink our usage of data instead?

We know we shouldn't rely that much on private corporation to run public services infrastructure and own people data.

Today there is plenty of tools emerging to host your own cloud, that is a path we should explore as well there is so much to be done in this space to create simple to use product for all.</comment>


Interview with a Nigerian Internet Scammer - <AUTHOR> http://www.schneier.com/blog/archives/2010/02/interview_with_16.html <comment><USER2> I don't think the interview is real. There are various phrases he uses that are too American - like "take out loans", "I would use", "send faked letters", "spend all of their time online", "up the chain, to someone", "build up trust", "In the early days".

Those particular sentences are American constructs and would not usually be used by foreigners, particular foreigners from a colonial english background.

<comment><USER3> Unless the interviewer re-phrased everything the "Scammer" told him, this interview is certainly fake. Nigerians (in Nigeria) definitely don't talk like the supposed scammer. FWIW, I'm Nigerian

</comment></comment><comment><USER4> "We had something called the recovery approach. A few months after the original scam, we would approach the victim again, this time pretending to be from the FBI, or the Nigerian Authorities."

I laughed, am I a bad person ?

<comment><USER5> No, a bad person would be nodding vigorously and taking notes.</comment></comment>


The forbidden railway: Vienna – Pyongyang (2008) - <AUTHOR> http://vienna-pyongyang.blogspot.com <comment><USER2> Some contextual notes on how this compares to today:

* American citizens have been denied access to anything except specially chartered train cars since 2013.

* Train service runs daily between Pyongyang and the Chinese border at Dandong. It takes much of a day to travel to the borer.

* Train service from Rason up through Tumangang runs twice each month, and a car from that train will hook up with the next trans-Siberian train outside of Vladivostok and continue to Moscow.

* It shouldn't be expected that the same train runs from Pyongyang to rason as onwards to Russia. The state of the tracks between rason and Pyongyang have apparently deteriorated (largely in terms of intermittent power) such that it can take several days to make the trip down the east coast.

* Russians in the Pyongyang embassy regularly book train passage between the city and the Russian border.

* Standard visas issued by DPRK continue to list tumangang as a valid port of entry.

<comment><USER3> Do they really have a specific rule for American citizens ?

</comment></comment><comment><USER4> Is it ever immoral to visit a country as a tourist? If North Korea does not fall into this category what country does? I can't imagine being excited about visiting Phnom Penh during the Khemer Rouge killing field days. Is visiting Pyongyang acceptable when conditions in North Korea are so deplorable? Why contribute to propping up such an evil regime?

<comment><USER5> Not only it isn't immoral, it is highly moral and the best you personally can do for them.

I was born in the Soviet Union. It has fallen because of Western tourists coming there, providing the real evidence of the world from the other side of the curtain. Soviet government welcomed foreign tourists, as they were genuinely concerned about what Western countries are thinking about the USSR (for some reason; BTW, Russia is still very sensitive to this). But soon, Soviet people started to think of unthinkable questions, such as "why all these tourists from purposedly struggling capitalist countries are so well fed and well dressed?".

North Korea's government is making the same mistake.

<comment><USER6> That's absurd. We are talking about a totalitarian regime which does not care in the least what the West thinks, which carefully ushers tourists who feed it the hard foreign currency it needs through a well-honed propaganda machine (read the blog posts of people doing the tour - they all get bused to the same damn statues and propaganda museums and places) surrounded only by hand-picked minders & chaperones chosen for their loyalty with no contact with the general population, with most tours in a city, Pyongyang, whose populations is also chosen for loyalty to the regime. Try to go 'off script' and you'll see how they treat tourists. Thinking you'll change anyone's mind is as sad and pathetic as the people who go there and drop a Bible behind a toilet and think they have any chance of making a difference.

 _Real_ evidence of the world from the other side of the curtain is provided by Chinese & Korean smugglers smuggling in K-dramas and hard drives stuffed full of forbidden foreign media and balloon drops from missionary networks.

You aren't doing jack by going to NK as a tourist. You're propping up one of the most evil regimes with your money - no ifs, ands, or buts. At least when people waste money climbing Mount Everest, they're only endangering themselves.

<comment><USER5> > We are talking about a totalitarian regime which does not care in the least > what the West thinks

You are wrong. First, totalitarian regimes care _a lot_ about what the West thinks. I know it because I grew up in one. They have to be just scary enough, look crazy enough, and display some signs of "progress" enough (like — can anybody in the West organise Mass Games? Look at our highly efficient society!) Modern Russia is, unfortunately, now falling in the same behaviour pattern.

Now, of course, tourists that are allowed to contact foreigners, especially Westerners, are filtered through layers and layers of state security. But it is impossible to do thorough filtering. You can't stop kitchen talks (they attempted to do it in Soviet Union and East Germany, but failed). Despite you always are in well-staged Truman show, it is not perfect, and real world is always showing through cracks, and most importantly, they can see _you_ through cracks.

Back in USSR, in town of Omsk in Siberia where I grew up, a foreign tourist was a legendary event to be talked about for months (which is why it is of uttermost importance to travel beyond capital cities, where life is less staged and opportunities of random encounters are more numerous) — and if he managed to leave some artefacts, like US-made pen or postage stamps, they were caressed as real treasures, the evidence of world beyond the wall.

And, of course, smugglers and missionaries are also doing their jobs (VHSs with Hollywood movies also played their part in the fall of USSR). But not everybody can be a smuggler or missionary. Everybody can be a tourist and do their part, though.

And about the money — as a tourist, you'll hardly help the evil regime with more than $1000-$2000 (do you know how much a rocket costs? This is a small change). North Korean government is not doing it for your money. They want to look good in your eyes, to pretend they are not that evil (see that other comment in this thread — they want more people to think that way).

<comment><USER6> > I know it because I grew up in one.

You did not grow up in North Korea. North Korea is not the USSR, and it operates differently. I laid out several ways in which it differed in explaining why being a tourist is only harmful.

> Everybody can be a tourist and do their part, though.

You know what part you can do which is even more helpful? Donate to malaria bed nets, or donate to the missionaries and other NGOs.

> And about the money — as a tourist, you'll hardly help the evil regime with > more than $1000-$2000 (do you know how much a rocket costs? This is a small > change).

And how 'small change' is _maybe_ contacting a regular North Korean and _maybe_ changing their view about something and this someday _maybe_ having an effect?

Every dollar of hard foreign currency counts for a tiny impoverished country under sanctions. The NK economy is small and stagnant and regularly straining under the burden of the rocket & nuclear programs.

The NK regime believes that the tourism is very useful and effective, and it is not endangered in the least by the prospect of toilets with Bibles behind them, or the chance a tourist will see through 'a crack', and I agree with them.

> North Korean government is not doing it for your money.

They are absolutely doing it for the money. Just like they were doing Kaesong for the money, not to 'look good' based on some obsolete analogy to the USSR.

<comment><USER5> Have you ever had an actual conversation with a live North Korean? Because I had, and I still insist on my point of view. :)

</comment></comment></comment></comment></comment></comment><comment><USER7> I visited North Korea on a tour in 2010. Back then, I had to leave my mobile phone in China, and the Google Maps of North Korea was totally blank.

The most important things for me - Jesus and technology - are illegal in North Korea. It was a fascinating experience! What surprised me most is that it is a "country", with working trains and postal service and businesses. The government just has totally different priorities to me.

I'd recommend North Korea for a honeymoon. There's no choice of hotels or restaurants, because you have to go to the government-approved ones. Other people can't contact you, so there's no disturbances. It was actually very relaxing!

On another note, I took the Trans-Siberian train across Russia in 2009, and narrowly avoided being arrested when trying to see if a North Korean logging camp is still active (I guess it is). Do you think it's safe to write up that experience now?

</comment><comment><USER8> This was a great post when I read it last. I really wish the author would repost the pictures or post them to a service that they eventually don't disappear from.

</comment><comment> guard-of-terra [http://eurasia2005.blogspot.ru/](http://eurasia2005.blogspot.ru/) \- wanted to check another blog by same author

Unfortunately, all images here have bit rotten.

<comment><USER9> Luckily it was archived with at least some of the images: [https://web.archive.org/web/20150707005712/http://eurasia200...](https://web.archive.org/web/20150707005712/http://eurasia2005.blogspot.de/)

</comment></comment><comment><USER10> Hi, I can only see a few lines in the post. Could you please help me with the significance?

<comment><USER11> There is a link to the 'detailed travelogue'

[http://vienna-pyongyang.blogspot.de/2008/04/how- everything-b...](http://vienna-pyongyang.blogspot.de/2008/04/how-everything- began.html)

</comment></comment><comment><USER12> Previous discussions/HN links:

[https://news.ycombinator.com/item?id=10875434](https://news.ycombinator.com/item?id=10875434) (4 points, 41 days ago, 2 comments)

[https://news.ycombinator.com/item?id=2155794](https://news.ycombinator.com/item?id=2155794) (124 points, 1847 days ago, 19 comments)</comment>


Rust for functional programmers - <AUTHOR> http://science.raphael.poss.name/rust-for-functional-programmers.html <comment><USER2> Sounds as if there are some bits of the article that could be tightened up or corrected, but I found the article very helpful. It's been about 10 years since I've coded in a C-style language (Java, C#, C++), but I'm very familiar with significant-whitespace languages (Python, Haskell, Coffeescript). The C-style-ish-ness of Rust has colored my perception of the language: the features sound great... but it looks like C? Admittedly, an unfortunately shallow perspective, but we've all got a lot of ground to cover and the view from 10km is necessarily incomplete.

The article's side-by-side examples really opened my eyes. I understand that Rust doesn't implement all of the functionality of Haskell, but it's comforting to see analogous functionality. So Traits aren't Type Classes; but as a beginner in Rust and as a first-order approximation, I can hear sorta- Type-Classes when I see Traits. That'll get me past the first steps, then I can dig into the detail of Traits.

I would suggest the author include a section on Side Effects since that's a big talking point around functional languages. Some allow them pretty freely (Ocaml) and some don't (Haskell). The only place I really see mention of this Big Deal is a little header to a code comparison saying "Recursion with side effects:".

<comment><USER3> I find it odd that you're dividing languages based on syntax. Saying "significant-whitespace languages (Python, Haskell, Coffeescript)" suggests that there's some sort of commonality between them, when they're really vastly different languages. It's almost like saying "blue-white-red countries (France, Cambodia, Russia)" :P

<comment><USER2>
         suggests that there's some sort of commonality between them

There is a commonality: they use significant whitespace. I understand that this is a syntactic difference and, given that I said I had used each quite a bit, that they're quite different languages. That said, syntax is chosen for a reason and I feel most comfortable in the significant whitespace world. I'm excited by Rust but, shame on me, the syntax had confused me into thinking the language was more C-ish than Haskell-ish. My point in the grandparent was that the article did a nice job of changing my (admittedly shallow) opinion.

</comment></comment></comment><comment><USER4> The stuff about boxing, Rc and Gc is simply wrong. For example:

`box foo` is Box<T>, the old ~T, nothing to do with Gc or Rc.

Gc is not at all clever and does not do cycle collection.

There are quite a number of other wrong or slightly wrong things about Rust, and a total ignoring of many Rust conventions.

<comment><USER5> The "stuff about boxing" has been discussed on the reddit thread, and I will have it fixed by tomorrow. Thanks for highlighting.

As to "Gc not being clever", the code is clear that it is intended to be clever in the long run, so the essence of the message could stay. Maybe the wording could be made more precise, thanks again for highlighting.

As to the "number of other wrong or slightly wrong things", I would be more than happy to fix the text if you have concrete remarks.

<comment><USER6> I'd like to know what is exactly wrong, I tried to look for the reddit thread, assuming it would've been this one:

[http://www.reddit.com/r/rust/comments/2al19j/rust_for_functi...](http://www.reddit.com/r/rust/comments/2al19j/rust_for_functional_programmers/)

but there're no comments as of now

EDIT: found it

[http://www.reddit.com/r/programming/comments/2akz51/rust_for...](http://www.reddit.com/r/programming/comments/2akz51/rust_for_functional_programmers/)

</comment></comment></comment><comment><USER7> It's funny, this article is dripping with attitude about how Rust will bring poor naive C programmers who are caught in the 70s into modern language design.

You could write just the same kind of article about how Rust will bring out- of-touch theorists into modern software engineering where you actually need a C-level of performance and predictability. And then show examples of all the same "for" loops with mutable variables that you're used to writing in C have direct analogs in Rust.

But both bits of snark would miss the point, which is: Rust is awesome _precisely because_ it merges these two schools of thought into something that preserves the advantages of both.

<comment><USER8> Your comment about merging two schools of thought reminds me of two blog posts by the designer of Rust:

Part 1: [http://graydon2.dreamwidth.org/3186.html](http://graydon2.dreamwidth.org/3186.html) (discussion: [https://news.ycombinator.com/item?id=8026868](https://news.ycombinator.com/item?id=8026868))

Part 2: [http://graydon2.dreamwidth.org/189377.html](http://graydon2.dreamwidth.org/189377.html) (discussion: [https://news.ycombinator.com/item?id=8028255](https://news.ycombinator.com/item?id=8028255))

<comment><USER7> Great links, thanks! I'll have to sit down and read these in detail when I have some time.

</comment></comment></comment><comment><USER9> As a Haskell dev about to get into Rust (and appreciates occasional parallels to OCaml) I found this very insightful. I especially like the attention given to the tables of language literals.

Not that it takes away from the purpose of the post but I couldn't help but see some issues in the Haskell code.

The code under "Recursive data structures" is not valid, top-level code in a Haskell source-file isn't evaluated like in Ocaml, I'd remove the "let" keywords and put "main = " in front of the putStrLn function (which is also misspelled).

As others have mentioned, the ADT example is wrong, you need to use "data" instead of "type", and the convention for the optional type in Haskell is "data Maybe a = Nothing | Just".

      hello x =
          test x

This might be intentional, but it's very unconventional to put a newline after the equality sign in that short function.

      if v /= 1 then collatz v
                else return ()

This is better written as:

      when (v /= 1) (collatz v)

and compares better with the Rust and OCaml code.

<comment><USER5> Thanks for those comments, I have incorporated them in the document.

</comment></comment><comment><USER10> This is interesting, although it contains a few misconceptions/mistakes/typos.

[http://www.reddit.com/r/rust/comments/2al19j/rust_for_functi...](http://www.reddit.com/r/rust/comments/2al19j/rust_for_functional_programmers/ciwlm2i)

<comment><USER5> You sir are a very patient and enlightened commenter. I am grateful for your detailed comments! I'll answer in detail in the reddit thread.

</comment></comment><comment><USER11> I've been very hungry for some rust doc ... as everyone knows, past some good introductory stuff, a lot of detail is not documented yet. I'd vote you up +100 if I could. Thanks for this.

</comment><comment><USER3> Nice article! This Haskell is incorrect, though:

        {- Haskell -}
        type Maybe a =
            None
          | Just a

        {- x : Maybe t -}
        case x of
           None -> False
           Some _ -> True

In that snippet, `type` needs to be `data`. Also the canonical constructors are `Nothing` and `Just` (but that doesn't have to do with correctness :))

There are also a few times where you use a single colon for a type annotation in Haskell, instead of a double colon.

Also, I disagree with this:

> Rust's "traits" are analogous to Haskell's type classes.

> The main difference with Haskell is that traits only intervene for > expressions with dot notation, ie. of the form a.foo(b).

That's more of a syntactic distinction; the difference at a semantic level is much bigger: Haskell type classes extend to higher-order types. For example, Functor and Monad rely on a type with kind `* -> *`, and it can get more complex than that, for example with monad transformer classes (like State and Error).

Also, an important difference is that Rust traits can be used as Java-style interfaces; for example, you can have a list of objects of different types, but that all implement `Show`.

<comment><USER10> Rust traits only don't support higher order types because they are missing from the whole language, i.e. it's not a philosophical difference between traits and type classes.

Also, Haskell has existential types, which are exactly like Rust's trait objects.

<comment><USER3> Rust has generics, which are higher order types (you can't have just a vector, it needs to be a vector "of something"). I'm not sure if the rust team would describe them that way, but there doesn't seem to be that much of a theoretical difference.

Thus if they wanted to, they could (presumably) allow for a higher-order trait like Functor:

        trait Functor {
          fn map<a, b> : (|a| -> b) -> Self<a> -> Self<b>
        }

(I'm not sure if that's valid syntax but you get the idea).

As for existential types, they're an area of Haskell I haven't really explored that much, but they seem to be seen as a bit more of an advanced feature than their equivalents in Rust or Java. Not just because they require a GHC extension and additional keywords, but because there's a bit more theoretical overhead to understand how they work, while the presentation in Rust/Java is more intuitive and straightforward.

<comment><USER10> > Rust has generics, which are higher order types (you can't have just a > vector, it needs to be a vector "of something"). I'm not sure if the rust > team would describe them that way, but there doesn't seem to be that much of > a theoretical difference.

No, there's no first class "type level functions", i.e. you _always_ need `Vec<T>`, and you can't ever write `Vec` by itself, which is what a true higher-order type is (and what Functor needs:

      impl Functor for Vec { ... }
      impl Functor for Option { ... }

Thus, your example isn't at all possible now or even in the near future.

<comment><USER3> I'm aware that my example isn't possible, which is why I said, "if they wanted to, they (presumably) could allow for..."

My point being that Rust restricts what one can do with higher-order types, but those types still exist and are expressible in the language. From a theoretical point of view, there doesn't seem to be any reason that they _couldn 't_ allow for traits on higher-kinded types -- they simply choose not to. Perhaps for performance reasons, or for simplicity, or for syntax or whatever, but I haven't seen any reason why they couldn't. That was the point that I was making.

</comment></comment></comment></comment></comment><comment><USER12> I really liked this article! The side-by-sides were very well done. Thanks!

</comment><comment><USER13> What the for loop actually expands to is much easier to read.

        [<label>] for <pat> in <iterator expression> { ... }

        let __iterator = &mut <iterator expression>;
        <label> loop {
            match __iterator.next() {
                None => break,
                Some(<pat>) => { ... }
            }
        }

<comment><USER10> It doesn't actually expand to that any more. You can see what it does expand to by running rustc --pretty expanded with a recent compiler:

      for pattern in iterator {
          body
      }

becomes

      match &mut iterator {
          i => loop {
              match i.next() {
                  None => break ,
                  Some(mut _value) => { let pattern = _value; { body } }
              }
          }
      }

</comment></comment><comment><USER14> I like a lot things about Rust. But on the downside it's syntax feels a little too much like C for comfort. Working with pointers to this extent has never been my idea of productive programming. In addition the whole Box, Rc and Arc business feels almost like a kludge. Are they part of the language or just some add on? The syntax makes it feel very much like the later.

</comment><comment><USER15> It might be useful, from a language-evangelism point of view, to show how much of this Go doesn't do. This isn't to criticize Go--but I have gotten the impression (perhaps wrongly) that these languages are competitors.

<comment><USER16> Rust and Go are often thought of as C++ replacements, which dcauses them to be compared, however the reality is more subtle. C++ is quite flexible, and so it finds itself in many niches where there were no languages to fit. Rust and Go are targeting two of these niches, and have the ability to compete with C++ in them.

Go is designed to take advantage of large amounts of concurrency, while still providing good performance (think cloud). Rust allows low-level control while giving the OOP structure required for large programs, like web browsers, or even game engines. Go was also (mistakenly) referred to a systems language at one point, which didn't help the issue.

<comment><USER17> > _Go is designed to take advantage of large amounts of concurrency, while > still providing good performance (think cloud)._

Java/JVM and C#/.NET fall in that space as well and are doing a very good job, while at the same time exposing a managed runtime that can be used as a target for other languages, thus lowering the friction for bootstrapping such new languages. Because of this, in a sense, Java/.NET are better replacements for C, which has also been used for building portable libraries freely usable across multiple languages. I'm still getting thrills when using well tested, mature Java libraries from Scala, Clojure or JRuby.

Where Java/.NET really suck is for building real-time or soft real-time systems, because they are managed and thus heap allocation must be managed by a garbage collector. Go has precisely the same limitation by design, with the difference that because it's younger, it doesn't have pauseless garbage collectors available for it - like say, the one from Azul Systems. Go GC is even less good than the garbage collectors available in the reference Java/.NET implementation - the one in version 1.0 at least wasn't even precise, let alone concurrent.

And this is not about _performance_ per se, btw. This is about dealing with real-time constraints. In certain contexts speaking of the "cloud", it's not enough if your server is able to respond to tens of thousands of requests per second in under 100ms per request, if you can't guarantee that kind of delivery for more than 99.99% of requests. For video decompression, another industry dominated by C/C++, the average throughput doesn't matter if you can't guarantee a consistent frame rate per second - how annoying would it be if when watching a video, the playback would suffer short freezes every couple of seconds? To make matters worse, if the GC stops the world, it can act like a global lock (GIL) and then you become aquatinted with Amdahl's law, as it severely limits vertical scaling, even if your logic is embarrassingly parallelizable.

Go was referred to as a systems language, but I don't think that was a mistake on their part. If Go wouldn't have been referred as a systems language, then that would've meant admission that the real competition for Go is actually the JVM with all its languages running on top of it.

</comment></comment></comment><comment><USER13> There's a missing semicolon in the Rust collatz code, let .. match { ... } ; <\- here.

The Rust loop version of collatz is also missing a semicolon and missing a ! in println!.

</comment><comment><USER17> As an outsider with only a very superficial understanding of Rust, it seems that Rust has all the right features for functional programming, except for immutable/persistent data-structures exposed by the standard library.

This is the missing link for people wanting to do FP in Rust and even though this is an issue of standard library and not necessarily one of language, this will be a source of pain for people wanting to do FP in Rust, as FP means working with referential transparency, which begets immutability. This I think is worth mentioning, being the biggest road-block when wanting to adopt an FP style in any language - after all, any language that supports higher-order functions can be used for FP (or OOP) with varying levels of pain.

Again, as an outsider with a superficial understanding of Rust, it seems that Rust will make FP enjoyable in a language that doesn't need a garbage collector. But judging from articles and announcements made, Rust's primary objective to make concurrent programming safer isn't necessarily to make immutability effective, but rather to limit/control both shared reads and writes. And I can think of contexts in which you don't necessarily want that - after all, the shared reads of an immutable value are embarrassingly parallelizable, persistent data-structures working really well in say single- producer multiple-consumers scenarios. Plus immutable values are for having referential transparency and the common concurrency issues that we are commonly seeing are only a symptom. Truthfully, Rust must allow specialized algorithms and low level code, so I expect it to give the possibility of choosing your path instead of forcing a solution down your thrown.

But herein we are ending with a problem also exposed when working with C++. People have been doing FP in C++ with varying levels of success. But the problem with persistent data-structures that are doing structural sharing is one of memory management. It's much harder to implement persistent data- structures without relying on a garbage collector. LISPs that encourage an FP style, Ocaml, Haskell, SML, F#, Scala and all languages advertised as FP I can think about are garbage collected. Rust can use an optional garbage collector for "shared references". But that negates the biggest advantage when using Rust, the community is moving away from shared references and Rc/Arm touched in this article would be awful solutions to this problem.

Therefore I hope seeing progress in seeing a library of immutable data- structures that I could use in Rust or at least advice on how to deal with effectively immutable data-structures or something.

On the bright side - Rust's type system seems to be solid (yay generics, yay type-classes), which means it's just a matter of time before the libraries will get there.

<comment><USER18> I think once you gain a more than superficial understanding, you'll be happy with Rust. :)

> the shared reads of an immutable value are embarrassingly parallelizable,

This is absolutely true, and Rust lets you do that. You just have to dot your is and cross your ts: [https://gist.github.com/steveklabnik/8de9b9b0ae2e45383d85](https://gist.github.com/steveklabnik/8de9b9b0ae2e45383d85) Rc adds reference counting, to ensure that this reference will be okay for the duration of all of the threads. If you just used a regular old boxed value, one of the threads could invalidate the reference.

That's just one example. As you say, there'll be libraries eventually: people have been focused on the language itself, and given how easy Cargo makes it (will make it) to share libraries, I wouldn't be surprised to see an awesome persistent/immutable data structures library appear.

<comment><USER17> Well I definitely want to play with Rust and seems really promising, even from the point of view of a superficial observer.

My impression is that reference counting, while deterministic, has some problems due to reliance on atomics (which gives rise to contention issues, even in cases in which intuitively there shouldn't be any contention) and because of cyclic references - but maybe this isn't such a problem in practice when used for persistent data-structures or if there are multiple versions of an interface suited for different scenarios.

My intuition has definitely been proven wrong before. And I have high hopes for Rust - seemingly being a language allowing for FP and for fine grained memory management while not setting my hair on fire :-)

<comment><USER19> Rust actually has two different reference counted smart pointers: `Rc`, which uses non-threadsafe reference counting, and hence is not sendable across thread boundaries; and `Arc`, which uses atomic reference counting and can be send across thread boundaries.

You can definitely create leaking cycles with both though, but Rc and Arc also support Weak pointers to safely break up cyclic ownership trees.</comment></comment></comment></comment>


In severe crises, governments base their decisions on what other countries do - <AUTHOR> https://www.pnas.org/content/early/2020/08/10/2010625117 <comment><USER2> ...except Sweden.

As a fan of science I like this: we do need to try new things. As a citizen of Sweden I don't like this because our novel ideas are often worse than the established way and when the ideas fail we don't go back to the previous model.

Our school system is still broken, while Finland took all the good from our experiment-without-a-control (and performed their own crazy experiments that lucked out) and now have the best education system in the world. One would think Sweden would copy them. But nope.

<comment><USER3> If you're looking for a positive, at least your country's leadership isn't taking advice from a television pillow salesman.</comment></comment>


Trying to make a plan to validate a SaaS idea - <AUTHOR> Hi everyone, in succession of my previous posts about the SaaS I am trying to validate I decided to actually sit down and make a stepped process of the actions I should take to validate as best as I can my idea before I start building an alpha version of the service.
Here is what I have come up with so far.
1. Launch a simple one page landing page with a signup section for their email.
2. Expose it to potential customers for a week: reddit, linkedin etc
3. See if I have any signups, if so how many
4. If I had some subs, run some questionaires by them to see what they really want, also ask for what troubles them the most and if they have tried other similar solutions and what went wrong.
5. Launch a more detailed landing page with the price plans and a pre-order option with a big discount. This way the idea will be validated by having users to actually pay for it, which is the hardest part
6. Send follow up emails to update every contact that has signed up
7. Validate the idea against how many sales it did within the first week(or month?)
8. If I did any sales, start building the MVP while staying in close touch with the early bird customers
9. Maybe in the meantime invest on some ads?
So far I have made a landing page with the proposed features and three price plans that asks the user to sign up and logs his plan selection. I haven't got any subscriptions yet but I got some valuable feedback that essentially said that the page is not clear enough as to what the service is doing and how it's solving the problem it is. So I decided to go back a step and I am currently refactoring it into a single landing page with subscriptions to an alpha version with the promise to be part of the creation of the service. Hoping to hey some early birds and begin the feedback cycle.
Looking forward to hear your thoughts about my thoughts and my approach.
Many thanks! <comment> BA4gDY-cqjsEPWn I would skip on investing in ads in the beginning. Focus on gathering feedback from face to face conversations or at least some other way where you know there's a human on the other end and what they are saying is (mostly) genuine.

<comment><USER2> This x100

Ads won't tell you pain, they won't clue you on the market size and segment.

<comment><USER3> Agree, I just talked to as many people as possible. Started figuring out what problems I could solve, the personas / niches that are relevant, possible paths across the chasm.

Now, 6 months later, we've started a beta program and are exploring more rigorous methods for understanding customers, pain/value props, and adoption / retention

</comment></comment></comment><comment><USER3> The most helpful activity will be to get out the door, so to speak. You will learn more in less time by talking to people.</comment>


Revised 'Net Censorship Bill Requires Search Engines To Block Sites, Too - <AUTHOR> http://www.wired.com/epicenter/2011/05/revised-net-censorship-bill/

<comment><USER2> They chip away our freedoms every day, but how much is acceptable? The government wants total control of information and it looks like we're about to hand it over. I guess it's cool that we got to experience an open internet, but that won't be true for future generations. Sad really.

<comment><USER3> It's sad, but look at history a moment. When has learning been open and free, and as distributed (courtesy of the 'net) as it has been during the last two decades? We have set a new record in the annals of history.

That's got to count for _something_.

I think that it's only natural that good things come to an end. Silver dishes are wonderfully beautiful, but quickly tarnish in an absence of care. The government has taken great pains, through its public schools, to cultivate a generation that does not care.

And so we leave the reigns of our government in the hands of corrupt politicians… then wonder why everything goes down the tubes.</comment></comment>