Russia presses Apple to install Kremlin-approved apps - <AUTHOR> https://www.economist.com/europe/2019/12/18/russia-presses-apple-to-install-kremlin-approved-apps <comment><USER3> Once Apple complies, the next law is:

Now let our apps have special privileges on your phones or you can't sell it here.

(Emboldened.)

</comment><comment><USER4> Does anyone know how much Russian iPhone says are worth to Apple?

Also interesting to know would be much the iPhone platform is worth to Russian app developers if they can no longer buy Apple hardware to test/develop against?

If both of these figures are small then it could well in Apple's interests to just abandon sales in Russia.

Since, from the article, this proposed law would only cover sale of new devices those really motivated would still be able to buy abroad.

<comment><USER5> iPhones are very expensive (new one costs more that average monthly salary), but very popular in Russia.

</comment></comment><comment><USER6> _If_ Apple trusts the security of its own operating system, it should be able to sandbox the apps just like any other app.

While the US doesn't force companies to install apps, it does force companies to support E911 and the system used for Amber alerts and other mandated alerts.

<comment><USER7> > _While the US doesn't force companies to install apps_

The US doesn't need to. Most companies dominating the field are US based. If they weren't, the US would turn protectionist and require specific favors from them to let them operate in the USA pronto...

A lot of the grandstanding "we would never do that" stems from this dominance...

<comment><USER8> > If they weren't, the US would turn protectionist and require specific favors > from them to let them operate in the USA pronto...

This is already the case. They're not called favors, they're called federal laws.

However, there are no federal laws requiring the installation of software on almost anything (maybe military applications?) There is no need. The government can just go through ISPs & carriers & companies for surveillance purposes. Russia's government can do the same thing.

This move is an attempt to energize the Russian software market and not much else.

<comment><USER5> Unlike US court, Russian government or courts cannot order Apple or Google to disclose or remove information (ok, they can, but Google simply ignores their lawful requests). So the situation is non-symmetric.

Although I am against this law because probably it is there to allow spying for Russian citizens and prevent them from using secure messengers like Telegram or Tox.

</comment></comment></comment></comment><comment><USER9> IMHO, the proper answer to such government behavior should be - to tell them, to suck off apple pure out of tetra pak.

</comment><comment><USER10> _Do you want to allow "Приложение бэкдор ФСБ" to access your location?_

<comment><USER11> Google translate to the rescue!

I think that sums it up too.

<comment><USER12> Google translate says "FSB backdoor app"

</comment></comment></comment><comment><USER13> While I personally strongly dislike the law discussed in the article, I find the title misleading.

Taken at face value, the law, as approved by the Russian parliament [1], is, ostensibly, designed to improve the experience of the local customers (who, annoyingly, are depicted as too clueless to know how to install the applications they want). It is introduced under the rubric of "protecting customers rights", demands that smartphones, PCs and smart TVs come with pre- installed local software, and surely, surely, could be spun under a different narrative: an adorably humanist one, concerned with tailoring to the local language and culture (which might have been chosen by the left-leaning commentariat if it were about a small country obsessed with preserving its national identity), or a cynically economical one, focused on protecting local jobs.

Again, I am not defending the law — I find it offensive towards the customers who have to delete all that pre-installed crap. I am just amused by the tone that the Economist has chosen to present this news.

1 - [https://sozd.duma.gov.ru/bill/757423-7](https://sozd.duma.gov.ru/bill/757423-7), in Russian

</comment><comment><USER14> This very worrying, particularly because Apple recently caved in and marked Crimea as Russian...

<comment><USER15> Crimea only appears as Russian if you're viewing it from within Russia, which recognizes Crimea as part of Russia, not Ukraine.

If you're viewing Crimea from Ukraine, it will appear as Ukrainian, because Ukraine recognizes Crimea to be part of Ukraine.

That seems fair, doesn't it?

<comment><USER5> That means that American companies like Apple have admitted that Crimea is a part of Russia, not just an occupied territory of a foreign country? Despite the fact that there are no international treaties that would confirm transferring this territory to Russia?

<comment><USER16> There's an interesting mix here though. As a nerd with a passing interest in politics, I don't want to call Crimea lost. But at the same time, there needs to be a healthy dose of reality - if I'm on the ground, and crossing this imaginary line is going to mean russian soldiers with guns pointed at me - <USER2> think I'd prefer my map to render that line, imaginary or not.

<comment><USER17> Agreed, I'd definitely have to 1-star an app if it led me into a DMZ or military blockade.

<comment><USER18> Haha - this is exactly what happened to me when Maps.me app (formerly OpenStreetsMap) led me to UK military base in Cyprus (it made a route which skipped border checkpoints to occupied Turkish part of the island)

</comment></comment></comment></comment></comment></comment><comment><USER19> Unpopular opinion.

Putting all the conspiracy theorists aside the intent of the law is actually to gain what western countries have a new phone that has localized apps that non-English speakers can use.

For some apps, like twitter, translation of the ui is enough for some others local apps are just better.

Knowing how laws are being implemented in Russia it is hard to tell what this will turn out into, most operators already wrote an open letter to the president to not sign the law, but it was still signed.

So I see it more as an attempt to created isolated marked similar to china one rather than total surveillance scenario.

<comment><USER20> > a new phone that has localized apps that non-English speakers can use

Apple localizes their operating system.

<comment><USER19> Most of those apps are still made with USA/Western Europe customers in mind and their habits so just translating text in the ui will not add a ton of relevant content in case of a social app.

Google assistant just doesn't work very well outside of USA for example.

</comment></comment></comment><comment><USER21> The point of law is not to force backdoors but to counter monopolies.

Google devices come with Google maps, search and so on. When people get new devices, often they will stick to whatever is pre-installed.

Russia is probably on of the few countries that has perfectly capable alternatives, like Yabdex. So now people will have an option to choose what to use - Google, Apple or yandex apps.

Obviously owners of the platforms (apple and Google monopolies) are not to happy to lose control.

That of course does not mean that Russian government won't try to force some fishy stuff on devices. Ukraine is completely separate and orthogonal issue.

See Matt Stoller's take on the broader issue - [https://mattstoller.substack.com/p/how-russian-antitrust- enf...](https://mattstoller.substack.com/p/how-russian-antitrust-enforcers- defeated)

</comment><comment><USER22> >Local digital-rights activists like Artem Kozlyuk are worried, saying that these apps could "secretly collect information: location, tools and services being used and so on".

Technically impossible.

>The apps can be deleted, but only if users know to do that

Like any other app.

>and there are suspicions that they might leave behind backdoors into users' phones after they are gone.

Technically impossible.

I can't read the rest of the article. What are the apps about?

<comment><USER23> It's only technically impossible if the system software and/or hardware can't be compromised/exploited.

If you are just going by the intent and marketing of any platform vendor, plenty of things are technically impossible. But exploits and flaws in software and hardware exist, and the resources a nation state can bring to bear to find and use them are significant.

There is a reason vendors run bug bounty programmes, why the jailbreak scene is still a thing, and cybercrime in general is booming.

No one vendor has solved computer security.

<comment><USER22> I know someone would come up with this argument. But Apple and the community will be looking at those apps closely. Even if they managed to slip an exploit into them, it wouldn't last long.</comment></comment></comment>


Ask HN: How much do you make in side projects? - <AUTHOR>

<comment><USER2> There was a similar thread about a month ago, you should check it. Also, in the first comment you can find another 7 threads about this.

[https://news.ycombinator.com/item?id=8844083](https://news.ycombinator.com/item?id=8844083)</comment>


The Incredibly Stupid One - <AUTHOR> https://www.pownetwork.org/bios/h/h135.htm <comment><USER2> Playing dumb works extremely well to get out of extortion attempts too.

I've driven through a stack of countries notorious for extortion by Police and Military - Congo, Nigeria, Honduras, Kenya, Guinea - just to name a few.

One of my tactics to avoid paying a cent is playing dumb. It's super easy when they don't speak English. I do my best to understand their (French/Spanish/Portuguese/Whatever), all the while remaining very polite and friendly. It's a real shame when I don't understand they want money, and virtually always they wave me through in disgust.

On a two year drive from Alaska to Argentina I paid one $5 bribe.

In three years around Africa through 35 countries I paid once in Ivory Coast, because I was too big for my boots and let on that I speak French.

Playing dumb has a lot of advantages.

For anyone interested, here's me dealing with a real-life extortion attempt in Nigeria [1]. This was in Nigeria, so it's all in English, but the script is identical in any corrupt country.

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

<comment><USER3> I vaguely remember a post from you on reddit or HN or somewhere a long time ago when you were first getting ready for this trip and the responses were like "You're going to get robbed/break down in the middle of nowhere/You won't find jeep parts in Africa/Why not drive a land cruiser/you will die in the Sahara." Glad to see you proved the naysayers wrong.

<comment><USER2> Thanks! Yeah, those comments were intense. So much hate and anger from so many people who've clearly never been even remotely close to Africa.

In fact, I met some of the friendliest and most welcoming people I ever have all throughout Africa!

</comment></comment></comment><comment><USER4> Man, what a story. Please, HN readers, dedicate 15 minutes of your time today to read it. It's so worth it.

I won't spoil some of the great passages, but let me leave you with the conclusion:

> These sailors are the products of the neighborhoods, churches, schools and > families working together to produce individuals blessed with a sense of > humor and the gift of freedom who can overcome any kind of odds. These > sailors are tremendously loyal and devoted to their units and their leaders > in their own private and personal ways.

> As long as we have the Dougs of this world, our country will retain its > freedoms.

<comment><USER5> We are talking about the vietnam war ... how were soldiers fighting in it retaining the freedoms of the US?

Just wondering ...

<comment><USER6> Well, they were defending the freedoms of South Vietnam, which was a sovereign republic which was being invaded by another country. They were resisting international Communism, which had a goal of establishing Communist governments in every country, to include the United States. So by defending South Vietnam from its invader they were defending the United States.

<comment><USER5> No, a coup in South Vietnam happened, that lead to starting the war. They were not invaded. Not arguing about the sovereign nation part, yet I recommend you read up a bit on the history (maybe not only US history books).

vietnam war domino theory, haven't heared that in a while. So the US was defending their freedoms against communism ... and lost? So they lost their freedom and communism took over the world?

Watch Apocalypse Now and full metal jacket to see how freedoms were defended.

</comment></comment></comment></comment><comment><USER7> I'm amazed by his cleverness. Playing dumb to get one up on his captors. I also really liked how he took steps to protect his senior after his release.

</comment><comment><USER8> Part of the recitation of names mentioned in the article: [https://www.youtube.com/watch?v=c-7ktaSAjGA&t=1950](https://www.youtube.com/watch?v=c-7ktaSAjGA&t=1950)

Less musical than I expected...

</comment><comment><USER9> Reminds me of this guy. [https://en.wikipedia.org/wiki/Jeremiah_Denton](https://en.wikipedia.org/wiki/Jeremiah_Denton) He repeatedly blinked his eyes in Morse code during the interview, spelling out "T-O-R-T-U-R-E".

<comment><USER10> Thanks for that link! I had not known that story - but in retrospect I know I've seen references to it a number of times.

The story is so wild that... I always assumed it was a fictional trope, and didn't think to look for a real story behind it. Glad to be educated.

</comment></comment><comment><USER11> "And, yes, She did have Canberra, Australia on her Port of Call list."

That might be somewhat difficult, given Canberra is entirely inland.

<comment><USER12> Well technically Jervis bay is part of the ACT but you'd have a hard time getting a military ship in there.

<comment><USER13> One of my favourite facts about Jervis Bay Territory is that while:

-It is counted as part of the ACT for senate representation.

-It is part of the seat of Fenner in the ACT for the house of reps.

-It is governed under the laws of the ACT.

It is still legally a separate territory. Great for a tricky trivia question.

</comment></comment></comment><comment><USER14> His Wikipedia entry: [https://en.wikipedia.org/wiki/Doug_Hegdahl](https://en.wikipedia.org/wiki/Doug_Hegdahl)

</comment><comment><USER15> Reminds me of the archetype of the "wise fool"..

> To call a man a fool is not necessarily an insult, for the authentic life > has frequently been pictured under the metaphor of the fool.

> In figures such as Socrates, Christ, and the Idiot of Dostoyevsky we see > that foolishness and wisdom are not always what they seem to be.

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

</comment><comment><USER16> Was the US unaware that POWs were being tortured at the Hanoi Hilton before Brent's release?

<comment><USER17> I don't think so, but the Northern Vietnamese generated a bunch of FUD about it. Gross simplification, but essentially committed anti-war activists or others opposed to the US campaign (including foreign powers) would sometimes accept the Northern Vietnamese account of humane treatment as fact.

What Brent did was get concrete intelligence about exactly who was still alive and in prison, so that families could know their relatives were still alive and N. Vietnam could be publicly held to account for their survival at least.

</comment></comment><comment><USER18> I heard a former RF-4 pilot and POW at the Hanoi Hilton speak; it was honestly one of the best motivational speeches I've ever hear. Talk about a positive look on life. The other amazing thing was seeing him do the 'tap code' in real time.

<comment><USER19> is the former pilot you are referring to, Ron Bliss? He passed away in 2006; he and i were neighbors; i knew him very well

</comment></comment><comment><USER20> > The Communists took a siesta for two hours every afternoon which was a good > deal for us as we were free from torture and harassment. I was laying on the > floor on my bed board and Doug was skipping, yes, skipping around the room.

My mental state also reacts to stress with unreasonable cheerfulness, at times. It has something to do with the joy of all the new problems and opportunities paired with an appreciation/confidence that I am not going to die imminently (he was put in a cell where they kept long-term prisoners), in the face of it...a type of relief. Having survived multiple events where my survival was in serious question, I am a consummate pessimist with an expectation that I can die at any time. Therein lies a freedom.

Skip if you can. Live. I get it.

<comment><USER16> >Having survived multiple events where my survival was in serious question

Out of curiosity, what were these events?

<comment><USER20> Emergency open heart surgery, severe anaphylaxis from a previously unknown allergy to tetracycline that swelled all my tissues (internally as well) which had all the bad effects you can imagine (unconsciousness frozen joints/lockjaw swelled tongue etc after severe pain) with lumps the size of fists on my limbs, starving to the point of eating out of the dumpster (a year of living out of my car) multiple times (you can graze within grocery stores for so long), nearly freezing to death in an alleyway in new york city next to the hudson with my now wife, aggresive-yet-otherwise-benign tumor growing on my scalp (years later that has left a MASSIVE scar), etc. I count about 12 for just myself.

</comment></comment></comment><comment><USER21> > Upon release I compared notes with Doug and we determined that time frame > was the same time he accused the Vietnamese in Paris of murdering me [I had > not written home once writing became voluntary] for embarrassing them in a > Life magazine bowing picture. Thanks to Doug, despite the scars on my body, > the Communists had to produce me alive at the end of the war.

I'm feeling a bit stupid myself, because I'm not following the implication here. Why would Hegdahl's accusation cause the VC to leave Stratton alive, or to check him for signs of torture, or to pay him any special attention at all? If Hegdahl _hadn 't_ ever mentioned him, why would they kill Stratton specifically?

I enjoyed the story, and appreciate the tongue-in-cheek delivery, but it may have been intended for an audience better acquainted with the geopolitics of the war than I am. Any help?

<comment><USER17> I'm making some assumptions here, but the N. Vietnamese viewed the prisoners as political negotiating chips. They were very casually indifferent to their survival and indeed many died. Quite a few were killed. However, the N. Vietnamese tried to paint a very different picture publicly, that the POWs were being humanely treated.

Doug openly accusing the N. Vietnamese of murdering Stratton meant the Stratton's value to come out of his imprisonment alive was greatly increased, as that made the N. Vietnamese look good and the Americans look more foolish.

Stratton, for various reasons, may also have thought the N. Vietnamese would kill/disappear him because he had signs of obvious torture, which would put lie to their claims of humane treatment.

The fact this happened "in Paris" indicates it happened during the Paris peace accords (which effectively ended most US involvement in the Vietnam war), so was a matter of concern to the top officials in the country.

</comment></comment><comment><USER22> What is the actual physical process in getting sent overboard from a firing ship? That does seem very unusual.

<comment><USER23> have you ever shot a gun? The rapid gas expansion which expels the bullet can get quite big for big guns like 50cal. Now scale that up to a bullet 8" (20cm) in diameter which has an ultrasonic muzzle velocity. The shock wave from a shot fired could push a person so hard, they go over a railing into the water.

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

<comment><USER17> Yup- an 8" gun uses ~90 lbs of powder. That is a big blast and not all of it goes forward.

</comment></comment></comment><comment><USER24> This is an amazingly cool story. One of the best things I've read on the internet.

</comment><comment><USER25> >One morning he had the 0100 watch while the Canberra was steaming down the coast of North Vietnam firing its 8-inch guns against targets of opportunity (bicycles, water buffalo and occasional trucks) on Highway 1.

Just steaming along casually bombarding civilians and livestock like normal.

<comment><USER26> The North Vietnamese would often transport military supplies on livestock, by bicycle, and in unmarked vehicles. In any case, it doesn't excuse their repeated torture and murder of PoWs.

<comment><USER27> That's a straw man argument. To apply the principle of generosity, OP is referring to the author's total lack of acknowledging US crimes against Vietnamese civilians, even as it focuses (quite reasonably!) on the torture of American POWs.

There can be no conversation about the US war in Vietnam without recognizing the hundreds of thousands of civilians killed by American forces.

[https://en.wikipedia.org/wiki/Vietnam_War#Casualties](https://en.wikipedia.org/wiki/Vietnam_War#Casualties)

<comment><USER26> What are you talking about? Not everything you dislike is a logical fallacy. I am not saying that I know for a fact that those targets were military; I am just saying that it was very difficult to differentiate 'legitimate targets' in a situation where the enemy does not advertise their insignia (as required by the Geneva Conventions).

The Vietnam War was a war, and wars cause civilian casualties. North Vietnam ran a very effective, organized campaign of terror against South Vietnam and its supporters. The South Vietnamese and American forces were each responsible for many deaths of innocents, through negligence and more isolated malevolence.

<comment><USER28> Why were we there again?

"A war is a war" is a particularly terrible argument given the war in discussion was the Vietnam War</comment></comment></comment></comment></comment>


Show HN: Distributed Scraper - <AUTHOR> http://stdlib.com/nemo/scrape <comment><USER3> Is it me or is 'stdlib' not the best name for something that's not the <stdlib.h>?

<comment><USER4> Founder here; as much as it pains many of us to hear, the vast majority of software developers never interface with <stdlib.h> directly. You can think of our choice of name more as an homage for a new generation of web-based developers.

The question we asked ourselves was --- if I'm a developer today, and I want to release services for people to easily use and compose, take advantage of new "serverless" technology, where do I put it and how do I distribute it? How do I keep my services organized? Can I build a business around an API? What does that look like?

The name "Standard Library" was a natural fit --- I consider it a huge amount of serendipity that the domain was available. We've also been lucky to have a huge amount of support from our developer community --- we got a few questions like this to begin with, which naturally caused some unease, but far more positive reactions in total. I'm very happy we've been able to build something people like. The name choice has not negatively impacted our SEO or anything like that, thankfully! :)

If you happen to play with it at all, let me know what you think!

(Humorous aside; it is more frequent for newer developers to ask us about "sexually transmitted diseases" than it is for them to get the C reference - which is totally fine, don't mind sharing knowledge! But when I told my non-CS mother about the business we were building, definitely had to really quickly explain the background of the name.)

<comment><USER3> Thanks for your reply! So is this a library or a service? It looks like a library but why would I need to sign up to use a library?

<comment><USER4> It's a library of services, but we provide deployment, authorization, rate limiting, billing, and documentation layers for developers. Think of it like GitHub for Services instead of source control. (+ Making the usage-based billing model highly accessible to every developer.)

</comment></comment></comment></comment><comment><USER5> Does anyone know of a scraper with a simple UI that's usable by less technical people? Similar to Kimono (bought by Palantir and shut down). [https://techcrunch.com/2016/02/15/palantir-acquires- kimono-l...](https://techcrunch.com/2016/02/15/palantir-acquires-kimono-labs- for-its-web-scraping-service/)

<comment><USER6> I have tried [https://dexi.io/](https://dexi.io/) (free account) about a year ago and it looks very good. One downside is that it was issuing requests from Europe by default, so you had to bring your own proxy for the US, for example.

</comment></comment><comment><AUTHOR> Mainly built this as an experiment to pull a bunch of data for some ML work I've been doing. Wrote about it more extensively here: [https://hackernoon.com/microservice-series-scraper- ee970df3e...](https://hackernoon.com/microservice-series-scraper- ee970df3e81f#.ex6qh4aek)

AMA!

</comment><comment><USER7> "Distributed" as in using proxies? Where do the requests come from when I scrape a page?

<comment><AUTHOR> I guess it's not truly distributed in that sense. StdLib uses AWS Lambda, which have widely different IPs and I believe they're multi-region.

I haven't had issues hitting a wall with getting caught doing any scraping. But then again, I haven't done it at a 10k/pages/sec rate or anything like that.

<comment><USER7> Thank you! This is very interesting.

I have wanted to implement something like this one - ie: Lambda doing the downloading of the page itself.

I have wondered how it would work with very strict sites like Yelp - <USER2> similar to what you would get in their API (so doesn't make sense not to use their API).

What are your stats like if you don't mind? How much people are using it and much are getting blocked (404 or 500 after 1000 requests, etc.)?

Edit: Is it possible to use my own credentials for AWS?

<comment><AUTHOR> I don't track that information on the function – but I really should!

Based on StdLib's dashboards – a bunch of folks have been using it per month with a steady pace of a few 100 scrapes a day type of thing.

We've been using it internally for quite a while now.

And as far as I know, StdLib doesn't allow you to use your own AWS credentials. They have their own gateway and a bunch of stuff on top of Lambda that makes the whole experience a lot easier and more powerful (e.g. 128MB limit on payload vs 5MB for Lambda)</comment></comment></comment></comment>


Hashing for the Homeless - <AUTHOR> http://causes.github.io/blog/2013/06/04/hashing-for-the-homeless/

<comment><USER2> Do homeless people have a single canonical name that they will use consistently?

Is it fair to request that they structure their day around a hashing algorithm that they don't understand?

There's an arbitrary kind of "command" oriented aspect to this that I'm not crazy about. Sort of a "the algorithm says that you go here at time X" element that is inscrutable and will no doubt inspire a lot of theories about how it's rigged ("Hispanic names always get to go in the morning, did you notice?").

I would suggest colored tokens that are good for certain timeslots: Red might mean "Monday at 9, Tuesday at 10, ...". I don't know if they are persistent or good for one use or both. The tokens can be recollected so you know how many are circulating for a given time/place and can avoid oversubscription.

These could be handed out at random and traded among the clients so they can put together a schedule that suits them. This removes the "arbitrary computer says so" kind of element of the hashing scheme.

<comment><AUTHOR> > Do homeless people have a single canonical name that they will use > consistently?

They have an identity.

> Is it fair to request that they structure their day around a hashing > algorithm that they don't understand?

It is not fair that they are homeless. It is not fair that the best thing for many of them to do is to stand in line starting at 3AM the _previous day_ to get a bed for a night. It _is_ fair to offer them a fair chance at a shower in a predictable way. Rather than standing in line for hours in hopes of a shower, they can come and maybe get a shower... or not. Unfortunately, rationing is necessary.

The tokens idea is interesting, but the meaning of them is a good bit more abstract than remembering a single time. Also, things get lost, and keeping things is pretty hard when you're homeless - basically everything you hope to keep has to be carried with you at all times.

</comment></comment><comment><USER3> If I had to quickly assign numbers to buckets using a hash table would be obvious but I would never have thought of using the same ideas for assigning people to lines.

This reminds me of a joke I once heard - if you want the cold soda you need to get to the one in the back of the fridge. That's what you get for implementing the fridge as a stack.

Data structures are all around us, we just need to recognize it.

<comment><AUTHOR> You won't believe this, but we actually have a soda fridge here that has a deque implementation on the door with a note that cold ones will be at the back.

I'll provide a pic if demanded. ;)

<comment><USER3> That, I need to see.

<comment><AUTHOR> OK, I misremembered, it's a queue, not a deque. Still: <http://imgur.com/a/Yujev#0>

Also kinda random since we don't use much Java here. I do like that people debugged it, though.

<comment><USER4> I've been meaning to cross out the "synchronized" there. It's unnecessary since Queues are already threadsafe.

</comment></comment></comment></comment></comment><comment><USER5> It's an interesting idea but I don't think the ID problem is as trivial as the proposal makes it. For example,

<http://www.nlchp.org/content/pubs/Photo%20ID%20Barriers1.pdf>

<comment><AUTHOR> By "ID", I don't mean government-issued photo ID, necessarily - just the ability to know how a person is will do.

It may be that the person is a repeat user so that the staff recognizes them, or it may be that someone else can vouch for them. And some will have photo IDs, too. ;)

</comment></comment><comment><AUTHOR> Author here if people have feedback.

<comment><USER6> I think you're missing the point about homelessness.

In most parts of the US you can get social services if you're willing to (1) deal with horrible bureaucracy, and (2) stop using drugs and alcohol.

Chronically homeless people aren't homeless because they're poor but instead they have mental health issues that leave them disconnected from avenues for help. There are many "homeless" people that don't sleep on the street because they stay with friends or family, or, like William Shatner in the early 70's, live in a car.

Because the chronically homeless have bad enough problems relating to people they don't need complicated rules coming between them and services they need.

<comment><USER7> > In most parts of the US you can get social services if you're willing to (1) > deal with horrible bureaucracy, and (2) stop using drugs and alcohol.

To even have a chance of being loosely correct, the "willing" here needs to change to "willing and able". For both items, that is a pretty big difference from just "willing".

<comment><USER6> I'll agree with that.</comment></comment></comment></comment>


MSFT open sources production serialization system written partially in Haskell - <AUTHOR> http://blog.nullspace.io/bond-oss.html <comment><USER2> So it seems like _someone_ , _somewhere_ , knows how to get non-trivial Haskell code to compile on Windows ; )</comment>


Why do men strive for status and money? - <AUTHOR> https://micaelwidell.com/why-do-men-strive-for-status-and-money/ <comment><USER4> From the article:

"In earlier societies where marriage did not exist..."

I could stop reading right there. There are essentially no known human societies, past or present, in which marriage does not exist. (Possible exceptions for a few very small societies in highly unusual situations.) Marriage is considered a human universal by anthropologists.

But a bit further on:

"This study looked at research being done on 33 nonindustrial populations (nonindustrial = pre-marriage, pre-contraception)"

You're seriously equating nonindustrial with a lack of marriage? You understand that the industrial revolution was less than 200 years ago, right? And that people have been getting married for all of recorded history?

<comment><USER5> You left out the sentence before that:

 _Marriage stops the "natural" dynamic by tying every male to a maximum of one female_

That guy must be kidding, right? Monogamy is one thing, but what about other forms of marriage that involves more than one man and one woman?

But the rest of the sentence that you quoted is even worse, but so that it makes more sentence, I'll quote the entire sentence:

 _In earlier societies where marriage did not exist, the most dominant males had children with many women, and the males at the bottom of the hierarchy did not get to procreate at all._

But in most societies around the world, the poor tend to have more kids. Who is the author of that article?

He's:

 _a 33 year old semi-retired entrepreneur (I co-founded the Swedish marketplace Fyndiq where I was CTO for the first six years). Nowadays I spend my days mostly reading, writing and photographing stuff._

And making up crazy ideas about society.

<comment><USER6> > But in most societies around the world, the poor tend to have more kids.

That might be true for women but not for men. And the author is talking about men.

<comment><USER7> I very much doubt that most of the extra children these women are having are all sired by rich fathers, as opposed to men in their own social group.

<comment><USER6> There's plenty of statistical evidence for a positive correlation between income and offspring for men, e.g. [http://iussp2009.princeton.edu/papers/91467](http://iussp2009.princeton.edu/papers/91467)

</comment></comment></comment></comment></comment><comment><USER8> The eminent public american philosopher Tony Montana worked on this problem and, I feel, has the final word on the topic:

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

More seriously, most male/female social differences can be explained by the fact that women can have perhaps ten children in a lifetime, whereas men can have ten children in a day. Therefore the base sexual strategy of males is "many", and the base sexual strategy of women is "best". Men, therefore, must strive very hard for "best", particularly in winner-take-all societies. Lifelong monogamy attenuated both of these tendencies and, in my opinion, is the bedrock of civilization.

One man and a thousand women is a potential civilization, whereas one woman and a thousand men is a horror movie.

<comment><USER9> "One man and a thousand women is a potential civilization, whereas one woman and a thousand men is a horror movie."

Very well put.

"Men, therefore, must strive very hard for 'best'"

Aren't I getting a lesson in this. Spent most of my life in pure abjection until a doctor, with some actual competency, prescribed me some ritalin.

You would not believe how mad I am. Now I'm trying to play catch-up to be the best and it's absolutely infuriating to hear people tell me to "relax".

I went through unimaginable hell because the wrong men were promoted to higher positions and nobody told them to eat shit. I can't even recourse to a notion of ultimate karma and fairness because I've realized how ultimately such notions are a case of the sourest grapes over losing in the competition.

There are MANY terrible and incompetent men and I want to devour them all. But my wants are nothing compared to what I need to do (develop skills and behaviors that are marketable and which act like positive feedback on another). My apologies for the little detour but figured that someone here has an inkling of what I feel and it's nice to know that one's turbulence isn't a lone storm.

<comment><USER10> And ritalin fixed this? What did I just read

<comment><USER9> Imagine how maddening it is to have a million random thoughts swirling through your brain and you can't execute on any of them unless you "feel" like it.

It's life changing to have (better) control of executive functioning. And it's sobering if you have a lifetime of being moralized at by lesser people for things that aren't too much under your control.

<comment><USER11> [https://www.reddit.com/r/AskReddit/comments/54q6ha/serious_t...](https://www.reddit.com/r/AskReddit/comments/54q6ha/serious_therapists_of_reddit_have_you_ever_come/)

I don't mean to imply you have this disorder. However, in my limited experience, I have found viewing anyone as inherently "lesser" has only been destructive for everyone involved, especially oneself. People are different, they all have their crosses to bear, just as you do.

<comment><USER9> Well NPD could be a possible "problem". The problem with that though is that when one goes through certain situations, where one is clearly the "brightest" guy in the room while "less bright" men have the reins of power, it reinforces that self-ranking system. If I have a complex analogous to NPD, it's because I've been through enough shit to give me a certain level of confidence.

"People are different, they all have their crosses to bear, just as you do."

Some people just suck and should be imprisoned, killed, or disbarred from any position of authority. A lot of sucky people somehow get into positions, including being responsible for the care of homeless veterans.

"Lesser" people do exist. But I know precisely I'm not the shit. A major irony is that as the capacity for directed work and improvement improves, I'm more and more aware how "far" I am from having a certain comfortableness in my present situation.

It's the anxiety of status, because one knows what happens to those with low status. It's the anxiety of death and waste because one knows what happens to bodies over time. It's the anxiety of regret because one is stuck with memories of one chemical regime while being in a more able one. The socialite is haunted by memories of being a dullard and .

</comment></comment></comment></comment></comment></comment><comment><USER12> To get women. I think anyone could have told you that.

<comment><USER13> That's way too simplistic answer and not true in many cases. Does Donald Trump strive to be a president to get more women? I don't think thats his primary motivation.

<comment><USER14> Maybe not official, or even expressed motivation. We humans tend to think high about ourselves (compared to animals), that's why we tend to rationalize our basic instincts.

We channel our hunting instinct in FPS computer games, or professions such as soldier or policeman. We are ashamed of our sexual desire so we developed complex system of rationalizations that we call "love". And we don't want to admit that we enjoy dominating others, so we call the jobs where we are in charge, such as governor or mayor "public service".

<comment><USER5> _We humans tend to think high about ourselves (compared to animals)_

What makes you think animals don't think high about themselves?

 _We are ashamed of our sexual desire so we developed complex system of rationalizations that we call "love"._

Humans developed love? Seriously! Did we also develop gravity? Love is a universal (read: not limited to or developed by humans) attribute that we express to one extent or the other.

<comment><USER15> Developed in the same sense horned animals developed horns.

Inevitable name for an ancient concept of attachment.

</comment></comment></comment></comment></comment><comment><USER16> Because stuff costs money? Financial stress is the leading cause of friction in relationships: [http://www.cnbc.com/2015/02/04/money-is-the-leading-cause- of...](http://www.cnbc.com/2015/02/04/money-is-the-leading-cause-of-stress-in- relationships.html). Something as small as getting a parking ticket ($50 here in DC) can cause a lot of stress for a family for whom that's not something they can just wave off. Also, high status jobs are usually a lot more interesting. A lot of people would code for free--nobody would restock shelves for free.

And women strive for status and money too. Women outnumber men in college--and it's not because they're trying to improve their prospects on the marriage market.

</comment><comment><USER17> Terror Management theory (Ernest Becker's Denial of Death) would suggest that these needs are based on the psychological desire to transcend death - <USER2> oneself immortal - through gathering not only great wealth and status, but any achievement that would reach past that person's lifespan.

<comment><USER18> I find this explanation particularly compelling because it also explains a host of behaviors that have little to do with producing children.

Khufu didn't build the Great Pyramid as a place for his kids to live in.

</comment></comment><comment><USER19> IMO reasonably high testosterone levels is one of the best feelings in the world.

I run a startup and during the inevitable valleys where my self-perceived status is low, my testosterone falls off a cliff.

I've suffered from low testosterone in the past and now that I understand the importance of sleep, diet (greens!), and exercise I can mitigate the drops quite a bit - but status is still a big ingredient.

It has become taboo to discuss the importance of status and sex for male health, but there is an epidemic of males who aren't thriving.

<comment><USER20> How did you measure your testosterone levels? (Just curious)

<comment><USER19> I've had it tested. Now, with some experience I can self gauge by how I feel.

I do not take exogenous testosterone but will be open to it as I age if healthy lifestyle can't keep it up.

</comment></comment></comment><comment><USER21> I have always found the "everything I do is to carry my genes forward view" to simplistic

\- Why do pregnant women have sex

\- Why do women have sex after menopause

\- Why do men stay with women who are no longer fertile

\- Why do 50 % of young people identity as bisexual in some way.

\- Why do sperm banks have to advertise for doners

\- Why do people adopt kids, its not their genes

And don't get me started on monogamy...

<comment><USER22> Just off the cuff...

Pregnant women have sex because rewiring women to NOT want sex while pregnant would be evolutionarily pointless, not to mention sex is used to bond male partners.

Likewise, sex after menopause. Women still seek shelter from males post- menopause and also want males around for their children and grandchildren's sake.

Men's instincts do not have the abstract concept of "infertile" if a woman appears otherwise sexually appealing.

I'm skeptical of the idea that 50% of young people identifying as bisexual, but if there is truth to this, I imagine that it is largely females who identify this way. And bonding between females is likely to strengthen the 'herd'.

Men's instincts do not have the abstract concept of sperm banks. Even if they did, men are also selective in where they deposit their sperm, and in any case are largely motivated to reproduce through sexual desire. If sperm banks were the only way we reproduced, then we'd have evolved a desire for that.

The idea that there are any humans on Earth that aren't closely genetically related is absurd...

As for monogamy, it's a rational response on the part of males who want to be sure they are the father of their mate's children and who want a better mating opportunities than they might have if it was winner-take-all.

Obviously, I'm not sure of the veracity of any of these, but I think it's fairly simple to explain most of these from an evolutionary point of view. I think it is a mistake to assume that because the rational part of our brain can grasp more efficient ways to spread our genes (e.g. sperm banks), that we must therefore do that if we are wired to spread our genes. The parts of our brains wired that way aren't quite that literal and probably haven't had time to catch up with those concepts.

<comment><USER21> But then why is it that its pretty much only bonobo apes and humans where this "rewiring" hasn't taken place?

Some apes kill other apes offspring when they take over a group. Others don't.

Some animals such as gibbons and bald eagles mate for life, but most animals are not monogamous.

If evolution principles were so hardwired you would probably expect them to universally

<comment><USER22> Your question seems along the lines of "if beaks are so successful, why don't all species have beaks?"

All animals are the way they are because of a combination of random mutation and environmental pressure. If a trait is successful in one species, it doesn't mean it will occur in another species. If it does occur in another species, it won't necessarily be reproductively beneficial depending on environment and other factors specific to the speices, so may not ever become a generalized part of the species.

</comment></comment></comment></comment><comment><USER23> Ironic for circa 2016 it is the poor in the US that generally have more children yet the goal oriented machinery within us males churns on.

[ edit: Adding a statistic to validate the above assertion: [https://www.statista.com/statistics/241530/birth-rate-by- fam...](https://www.statista.com/statistics/241530/birth-rate-by-family- income-in-the-us/) ]

</comment><comment><USER24> Men strive for _resources_ because women used to rely heavily on men for those resources. It's really kind of weird how this ends up being an epiphany for many people, though I find it painfully obvious. Men and women are not difficult to understand if you don't look through the "blank slate" prism.

</comment><comment> saiya-jin power is a drug, it twists the mind of even the best makes them crave for more... a perpetual lust. that's what I like about democracy on paper - <USER3> has too much of it, and never for too long. clever those greeks were

</comment><comment><USER25> I found an interesting talk called "Is there anything good about Men?" that includes potentially useful ways to frame questions about differences between men & women:

[http://www.denisdutton.com/baumeister.htm](http://www.denisdutton.com/baumeister.htm)

"Nature rolls the dice with men more than women."

and

"Culture has plenty of tradeoffs, in which it needs people to do dangerous or risky things, and so it offers big rewards to motivate people to take those risks. Most cultures have tended to use men for these high-risk, high-payoff slots much more than women."

<comment><USER26> That was interesting. really really interesting. I feel like I understand my male family members a little bit better after it.

</comment></comment><comment><USER27> Do most of us agree that people strive for excessive (excessive meaning to their detriment) status, power, and wealth? I rarely see that behavior from my peers. I believe most people are very content with their current status, for example Gallup measures that 80% of Americans are satisfied with their standard of living and 48.7% live with a lot of happiness and little stress (compared to 10.7% with a lot of stress and without happiness). When 55% of workers are "completely satisfied" with the recognition they receive and 41% completely satisfied with their salary, it seems like most people are happy and are not striving for excessive wealth and power.

</comment><comment><USER28> I wonder if this operates at the mimetic level instead of the genetic level, making this a cultural phenomenon rather than a biological one. As the article points out, in humans this striving for status/money doesn't confer much of a biological advantage, at least beyond a point.

Hypothesis for mimetic reproduction: People with status and money (who tend to have desired it and worked towards it) weild more influence on a larger set of people than otherwise, and can broadcast their approach/perspective. A large number of people will then aspire to follow in their footsteps and similarly seek status and money, continuing this cycle.

</comment><comment><USER29> >Why do men strive for status and money?

Lovelessness; Because money and status is a proxy for love from friends and would-be lovers that we crave:

"The predominant impulse behind our desire to rise in the social hierarchy may be rooted not so much in the material goods we can accrue or the power we can wield as in the amount of love we stand to receive as a consequence of high status. Money, fame and influence may be valued more as tokens of—and means to—love rather than ends in themselves."

Snobbery; Because underneath small talk amongst casual social situations underlies a constant of "sizing up" and civilized snobbery:

"The company of the snobbish has the power to enrage and unnerve because we sense how little of who we are deep down—that is, how little of who we are outside of our status—will be able to govern their behaviour towards us. We may be endowed with the wisdom of Solomon and have the resourcefulness and intelligence of Odysseus, but if we are unable to wield socially recognized badges of our qualities, our existence will remain a matter of raw indifference to them"

Outsized expectations; Because meritocracy, "American Dream" doesn't empower people; rather statistically forces us to confront the mediocrity of our ordinariness of lives, while feeling anxious about alleged "wasted potential" :

"In aristocracies, servants often accepted their position with good grace; it was not impossible for them to harbour, in Tocqueville's words, 'high thoughts, strong pride and self-respect.' In democracies, by contrast, the propaganda of the press and public opinion relentlessly promised servants that they, too, could reach the pinnacles of society and make their fortune as industrialists, judges, scientists or even presidents. Although this sense of unbounded opportunity could initially excite a surface cheerfulness in them—particularly in the younger ones—and though it did encourage the most talented or luckiest among them to fulfill their goals, as time passed and the majority failed to raise themselves, Tocqueville's noted that their mood darkened, bitterness took hold of and choked their spirit, and their hatred of themselves and their masters grew fierce."

\- Alain de Botton. "Status Anxiety"

</comment><comment><USER30> Because someone has to or civilization doesn't exist.

</comment><comment><USER31> Because women are attracted to rich and powerful men.

</comment><comment><USER32> If the goal is to generate a lot of useless "just so" stories, then this is good advice:

"Take any behavior seen in all humans, ie. not something that is due to local culture, and place that behaviour in the kind of tribal group that we lived in during most of evolution. Then ask the question 'what would be the consequence of this behaviour?' "

But if the goal is to figure out why things actually are the way they are, rigorous agent based modeling would be a much better way to proceed.

Also, all notions of human happiness were also shaped by human evolution, so the whole essay is nonsense. If evolution shaped our understanding of happiness, then evolution does not, in any simplistic way, explain why me might do things that go against happiness.

</comment><comment><USER33> This is such a mystery. Oh and by the way, what _do_ women want? Yet another mystery. Life can be so confusing.</comment>


Ask HN: What does the end of net neutrality mean for startups and side projects? - <AUTHOR> If we're about to see the end of net neutrality in the US, what does that mean for new startups and side projects? Is it going to be harder to gain visibility for new projects?<p>Are we likely to see more regional growth, with different growth patterns based on the policies of whichever ISP operates in a given user's area? <comment><USER2> It has to depend on the nature of the site, right? E.g. if you are doing something that is bandwidth heavy then losing NN is going to hurt. But if you are only moving a small amount of bits anyway, then probably no impact.

</comment><comment><USER3> >Will it be harder for newcomers to make it against Big Web Pipes Inc? Yes. >More regional 'net growth? Eh, the speed of electrons is basically the speed of light, so the reach may not be affected all that much.

<comment><AUTHOR> >More regional 'net growth? Eh, the speed of electrons is basically the speed of light, so the reach may not be affected all that much.

No, by regional growth I was asking what happens if a new project is more visible on one ISP than on another. Right now there are certainly regional effects when promoting a project, but that happens because of regional interest.

It seems some ISPs will make original content and projects more restricted than others, simply through differing approaches to how internet "packages" are put together. I can imagine new projects having a harder time gaining visibility in some regions, if emphasis is put on existing services at the ISP level.</comment></comment>


3 Irritating Things That Angels and VCs Do in the First Meeting and Conversation - <AUTHOR> https://blog.trytomo.com/3-irritating-things-that-angels-and-vcs-do-in-the-first-meeting-and-conversation-c39035f3daab <comment><USER2> And, many VCs are sheep wanting to know what other VCs are doing instead of what is likely to succeed. When I went through the rounds at Sand Hill in 2001 before the bust, all they could talk about were pet sites. And I mean _all_ of them talked about it.

Another sign that they were sheep was that three or four were definitely going to buy in to my startup, but they all wanted another VC to be the lead VC, which none did. Very frustrating. And this after my previous two startups being successful with IPOs.

</comment><comment><USER3> This guy is going to burn some bridges.</comment>


Using Bitcoin To Send Money To Uganda Would Be Awesome, If It Actually Worked - <AUTHOR> http://www.forbes.com/sites/kashmirhill/2014/05/22/using-bitcoin-to-send-money-to-your-brother-in-uganda-would-be-awesome-if-it-actually-worked/

<comment><USER2> > sending $40 [with MoneyGram] costs $10, which is, you know, crazy

Yes, that's crazy. Send $40 to your brother, and he only receives $30.

But it's even more crazy than that. On top of the $10 fee, MoneyGram then skims more money with an unfavorable currency exchange rate.

> if there's only one guy in your town exchanging Bitcoin for regular cash, he > can gouge you worse than MoneyGram

If this one guy gives you a Bitcoin rate worse than MoneyGram, then you'll just use MoneyGram.

The local MoneyGram agent only keeps a small slice of the 25% fee. If a Bitcoin entrepreneur could make more profit with a 10% fee than he would with MoneyGram, the recipient could keep $36 of the transfer instead of $30.

Eliminate the rapacious middleman, everybody wins.

<comment><AUTHOR> The currency exchanges seem to be the hardest part. I think Bitcoin needs to be established further as a spendable currency in it's own right.</comment></comment>


Nginx – Contains an unpatched remote code execution vulnerability - <AUTHOR> https://twitter.com/TheHackersNews/status/1134442673756987392 <comment><USER2> dupe [https://news.ycombinator.com/item?id=20063719](https://news.ycombinator.com/item?id=20063719)</comment>


The Quickest Wins in SEO - <AUTHOR> https://segment.io/academy/the-quickest-wins-in-seo <comment><USER3> > example.com/sitemap.xml should point search engines to interesting parts of > your site.

Really, an XML Sitemap should be used to show Search Engines ALL pages on your site, and should only be used when it can be dynamically updated via a CMS or database that knows of all URLs. Don't even get me started about the idiocy of using a random CRAWLER (e.g. <https://www.google.com/search?q=xml%20sitemap%20generator>) to generate a sitemap to be used by the best CRAWLER on the internet.

I know the tone of the post is informal, but this wouldn't be a HN comment thread without some nit-picking.

<comment><USER4> Yeah, I think if it makes sense for the site, you should focus more on making it fully crawlable. Generally, humans should be able to find all of your content, too.

</comment></comment><comment><USER5> Also a quick win (ironically), don't use the .io extension unless you're actively targeting the indian ocean territory because Google doesn't include it in it's list of Generic TLDs.

See [http://support.google.com/webmasters/bin/answer.py?hl=en&...](http://support.google.com/webmasters/bin/answer.py?hl=en&answer=1347922)

<comment><USER6> Is this actually an issue? I'm very doubtful.

<comment><USER7> Yep and the physical location of the ip counts I had the devil of a time getting a .ie site to rank in google uk a while back.

<comment><USER8> The physical location of a server is increasingly less and less of an issue (see: CDNs).

As you mention, though, ccTLD choice is another story entirely.

</comment></comment></comment></comment><comment><USER9> I just did a major SEO audit for our site. Changing title tags and h1 tags are insanely important. It literally looked like we were hiding ourselves from Google. I'll probably do a post soon about this on our/my blog.

<comment><AUTHOR> Would love to read that when you do. I think I understand what the title tags require, but I haven't heard about the h1. Is that just changing it to make sure that the h1 is the title of the page instead of the site?

Also how does the HTML5 heading system (where you can have multiple h1s on a page) affect SEO, do you know?

<comment><USER10> h1 is an indicator to the search engine that you consider that blurb/content to be the most important on the page. So the h1 should be optimized for the keywords you are trying to rank for. Also, if you have a bunch of h1 tags on a single page, it can actually dilute the weight of your most important heading. I recommend using just one h1 tag on a page to keep Google from having to guess what is most important. I also recommend not using any other h tags on the page for the same reason. Don't try to rank for a bunch of keywords on one page. Instead, concentrate on one or related keywords per page and use h tags to signal to the search engine what you think is most important.

Search engines are dumb. Make everything really obvious to them.

<comment><USER5> Have you seen the effects of not using any other h tags on your site besides the h1?

In my experience, I've seen the opposite. Well done h2s in fact, can really boost a series of site's rankings.

<comment><USER10> Yes, I have seen the main keyword get boosted in the SERPs when other h* tags are removed. I have seen this on multiple sites. This is not a rare technique and other SEOs do it too.

No doubt your page also can get ranked using the normal h- hierarchy.

The point of this technique is to put as much value on the main keyword as possible. Make it really obvious to the search engines what your page is about. Your page may have other requirements, so use accordingly.

</comment></comment></comment></comment></comment><comment><USER11> Probably one of the better SEO articles I have read in a while. I wish clients could understand this.

Just want to point out that your Twitter share button should point to the article's page (current page) not your main url.

</comment><comment><USER12> If you're looking for a free tool to analyze your site for titles/descriptions/broken links/etc, Screaming Frog SEO is great.

<comment><USER13> Second this, I actually pay for the yearly license and it's saved me far, far more than it's cost in the first full site crawl I ever did with it :)

</comment></comment><comment><USER14> No, healthy sites should not have 30-50% search traffic. If that's what you have, you have too few regular users and are at high risk to lose a huge chunk of your traffic and consequently business at the next _< random animal name>_ Google update.

Also, bear in mind that Google has acknowledged that keywords in URLs "help a little", so this is a good SEO win that has (arguably) nothing to do with how useful people find your content. It's much easier than putting effort into better content, too.

<comment><USER5> > No, healthy sites should not have 30-50% search traffic.

I'd argue this really depends on what type of set you're running (and what the purpose is).

<comment><USER7> I agree even well know brad site say BBC NYT etc still get people searching for brand terms "BBC" or "NYT" cos they are to lazy to type it in.

</comment></comment></comment><comment><USER15> Does PageRank mean anything?

HN apparently has a PR of only 6, while for example my blog, which doesn't get a lot of traffic, has a PR of 5 (and even 5h on some pages).

PageRank used to be talked about a lot and now it seems it's not even mentioned; is it still relevant?

<comment><USER16> It is still relevant, but in absolute terms it's a small portion of how pages are ranked.

The PR of the HN homepage is probably pretty irrelevant as I doubt it gets much traffic from organic search for anything other than "hacker news".

The PR of your blog homepage has to be taken in context for the type of search terms it might rank for (and remember that PR is for pages, not domains - <USER2> PR of your homepage will be different from the PR of each blog article).

If your blog was about vegan-friendly fondue recipes, a PR of 5 might indicate you had a link profile which meant you ranked highly because there likely isn't a great deal of competition in that particular niche.

If your blog was about dating tips, a PR of 5 wouldn't really indicate anything by itself because it's a really competitive niche.

<comment><USER17> and apparently "ryan dahl", "how to get stolen domain back" and "overhead walks on two legs" :-p

</comment></comment></comment><comment><USER18> This is still 'SEO 1.0' stuff. If you have something to sell, i.e. an e-commerce site, or if you have a recipe, or if you have a large collection of flora and fauna, the quickest win is to use semantic markup - 'SEO 2.0'. Let The Search Engine (Google) know what is description, title, price, currency, size, weight and so on with semantic markup tags and you are presenting The Search Engine with information that can be made sense of. Otherwise it is just throwing more needles in the haystack.

<comment><USER19> Micro formats are underrated and simple to achieve: <http://microformats.org/wiki/Main_Page>

<comment><USER20> This is a really good point. Google actually has a really good tool for testing this: <http://www.google.com/webmasters/tools/richsnippets>

Here is an example: [http://www.google.com/webmasters/tools/richsnippets?url=http...](http://www.google.com/webmasters/tools/richsnippets?url=http%3A%2F%2Fwww.simply- watches.co.uk%2Fdeal%2Fthe-brilliant-gift-shop%2Fcitizen-eco-drive-gents- titanium-watch-683425725&html=)

</comment></comment></comment><comment><USER21> I have been looking for a way into marketing for a while and I am glad i you posted this. I ran my website through hubspot and i found many wholes that could increase my visibility when fixed.

Thank you for sharing</comment>


Deep Learning in Clojure from Scratch to GPU: Learning a Regression - <AUTHOR> https://dragan.rocks/articles/19/Deep-Learning-in-Clojure-From-Scratch-to-GPU-14-Learning-Regression <comment><AUTHOR> The table of content of the series is at:

[https://dragan.rocks/articles/19/Deep-Learning-in-Clojure- Fr...](https://dragan.rocks/articles/19/Deep-Learning-in-Clojure-From-Scratch- to-GPU-0-Why-Bother)

If you want to be notified about the book, please subscribe to the newsletter at the bottom of the page.

<comment><USER2> Are you planning on including some of your other content besides the Deep Learning sections? I personally would like to see the 'Linear Algebra Refresher' posts included.

<comment><AUTHOR> That will be another book "Vector, Matrices, and Linear Algebra for Programmers". Expect early draft releases in May/June.

</comment></comment></comment><comment><USER3> Very nice work. Clojure's REPL support is orders of magnitude better than Python's. Hopefully Clojure will be able to compete with Python in the near future for data science/ML work.

<comment><USER4> Incanter[1] has been around for a long time and I recently discovered kixi.stats[2]. Links to some other resources can also be found on the Skymind wiki.[3]

[1] [http://incanter.org/](http://incanter.org/)

[2] [https://cljdoc.org/d/kixi/stats/0.5.0/doc/readme](https://cljdoc.org/d/kixi/stats/0.5.0/doc/readme)

[3] [https://skymind.ai/wiki/clojure-ai](https://skymind.ai/wiki/clojure-ai)

<comment><USER5> kixi.stats is very nice, but Incanter has been unmaintained for a few years.

</comment></comment></comment><comment><USER6> Interesting. Hope it will run on mac (should be). Got a ti1080 and a vega 56 to compare.

<comment><AUTHOR> It does run on a mac, but for this particular release of jcuda 10.0 that I'm using, the mac binaries are not bundled, so you'll have to build them yourself. I managed to build it on a mac, so it will be included in the next release of JCuda that matches CUDA 10.1, we are just waiting JCuda author to update the bindings. You can upvote that issue at [https://github.com/jcuda/jcuda- main/issues/29](https://github.com/jcuda/jcuda-main/issues/29)</comment></comment>


The Fragile Generation - <AUTHOR> http://reason.com/archives/2017/10/26/the-fragile-generation <comment><USER2> I saw this a few days ago and thought: Okay somewhat "yes" to the sentiments expressed about over protectiveness. But-- and this is a very, very big "but":

This article completely ignored the big-picture question "are kids actually safer?" if favor of anecdotal examples and feelings.

And there can be a whole bunch of reasons for why the answer is "um, yeah. like, really a big 'ol YES". Cause & effect can be debated, but _they are_.

How do I know? I went to the data. CDC Wonder data, specifically filtered for incidence rate of accidental death from 1999 to 2015 for 3-year olds to 17-year older.

Results? Gradually, year by year and across all age groups, the number of deaths per 100k people dropped to from its 1999 rate to less than half that in 2015. IIRC, it amounted to more than 4000 fewer dead kids.

Keep in mind, this was only the really bad things, the accidental _deaths_. Not injuries, trips to Emergency rooms, maimings, etc.

Oh, those other things decreased too (Thanks you CDC WISQARS dataset!) by roughly 23%, which amounted to over 1,000,000 fewer non-fatal (but serious enough for CDC reporting) accidental injuries.

So, have we lost a bit of that ineffable, wild-roaming childhood freedom as a society? Yeah, I guess we have in some ways. Of course that same free-roaming exploration and curiosity is also now funneled to other things instead, like the ease of plunking down $50 for a kid-friendly robotics programming kit that I can sit my 8-year-old in front of and say "Have at it!".

I think the trade off for 4,000 fewer dead kids each year, and 1,000,000 fewer seriously injured, is well worth it.</comment>


Why Swift Guard Should Be Avoided - <AUTHOR> https://medium.com/swift-programming/why-swift-guard-should-be-avoided-484cfc2603c5 <comment><USER3> Has anyone seen production code with <=10 lines of code per function before? I've honestly never seen it, and I think at that point the code becomes harder to read because you're tracing through function definitions to decipher what a single function should do.

I usually notice functions get hard to read when they hit 80 lines or so long (generalization, of course), and try to keep mine under say 50 unless it's one of a few core functions in an application.

Interested in hearing others' experiences.

<comment><USER4> > Has anyone seen production code with <=10 lines of code per function before?

I have seen code where _a_ function was shorter than 10 lines. ;-) In that same code base, I have seen _a_ function that was ~750 lines. And for that particular function, it actually made sense. It involved a lot of local state, and breaking it up would have involved passing lots of parameters to the new, shorter functions. (The average function in that code base was around 50-60 lines, I guess.)

Using a fixed number, like "10 lines" seems arbitrary to me. Sometimes it makes sense, sometimes it does not. It also ignores other factors, such as comments. Or readability. Sometimes, I 100+-line function can be marvelously clear, other times, a 5-liner can be so dense it makes my eyes bleed.

I have grown wary of "Always do this"/"Never do that"-advice.

"Try to keep your functions short. If they grow long, look if it makes sense to break them up into multiple shorter functions" is sound advice. But to do so without questioning or thinking is problematic.

<comment><USER5> > I have seen a function that was ~750 lines. And for that particular > function, it actually made sense. It involved a lot of local state, and > breaking it up would have involved passing lots of parameters to the new, > shorter functions

If I was refactoring it, and 750 lines is a massive red flag that it is in need of refactoring; then the local state indicates that it becomes not a function or a bunch of functions, but a class with state and private methods. Is that hard to spot?

<comment><USER3> I actually missed that one part of his response when I agreed in reply. 750 lines is definitely a red flag for refactoring.

<comment><USER4> Well, I agree that 750-ish lines is a bit extreme, but that function was a Win32-message handler. It basically consisted of a _huge_ switch statement that figured out what the message was, did a little parameter mangling and then called a function that did the actual work.

So while that function was very, very long, it was relatively simple to understand and did not contain a lot of logic. Also, the fact that it was a huge switch would have made breaking it up slightly non-trivial.

<comment><USER5> Yes, the "big switch" is the canonical example of something that's hard(er) to break down and easy(er) to read as 1 function.

Though I would still try things like :

\- making each case in the switch as small as possible, preferably a 1-liner.

\- making a separate object that does the "parameter mangling".

\- grouping all the bits of state into an object to hold the "message loop state".

\- Or most radically but best: these "map", "lookup", "strategy" style patterns that reduce it to a table of (message id, handler fn) pairs [http://stackoverflow.com/a/126453](http://stackoverflow.com/a/126453)

<comment><USER4> It was years ago that I worked at that company. Unfortunately, things like refactoring weren't very big there, and the other developers - who were, I should emphasize, really nice guys! - were not exactly open to change.

When I was hired there, that application had been in development for ~15 years, and a lot of what I did was maintenance. So making coming in as the new guy, then starting to change things, I had to tread rather carefully.

FWIW, I got each of the three developers to individually admit to me that if we had the time and the money, we would basically throw the old code out and rewrite it from scratch, using the lessons they had learnt since. But time and money being what they were, that was not likely to happen. (I was really proud I got them to admit that, though - one of the other developers was _very_ defensive of his work, and getting him to admit that was quite an achievement; I actually gained some valuable people skills in doing so.)

I was glad, though, that the code was relatively readable and organized in a sane manner. There was some cruft that had accumulated over the years, but overall it was surprisingly sane. That was one of the first times I had to read somebody else's code, and it was good code for that purpose - <USER2> commented, yet very clear.

Also, keep in mind that this was C. Different languages offer different ways of decomposing / structuring code.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> >What previously was a thirty-line function with several indentation levels and intermediate variables that had to be kept in the head is now ten functions, each having a self-documenting specific name.

My gut feeling is this wouldn't pass the unofficial code reviews at my work - too many functions making the code look messy, instead of cleaner.

Does anyone have any counterpoints?

<comment><USER7> To me the general idea of splitting a complex problem into a series of less complex problems is good. However the example used seems trivial and the solution is worse than the problem:

> 1\. It is pretty long, sixteen lines, multiple parts separated by empty > lines.

I wouldn't call 16 lines "long".

It contains empty lines for easier reading. Well done, not actually a problem.

But it lacks any comments on why the assertions have to be made.

> 2\. It does several things. It gets an item by name, validates parameters, > and it implements the logic of vending an item.

These are the things that naturally belong together. Separating validation from logic is not a very good idea. The logic requires the specific assertions in the validation part. They belong together.

> 3\. It has several abstraction levels. The high-level vending process is > hidden among the finer-level details like Boolean checks, usage of specific > constants, math operations, etc.

In the single function implementation it's actually not hidden because it's all in one function. Use some comments to structure your function.

\---

In my opinion separating this function into multiple functions would only make sense if these parts are used multiple times AND if they are commented well on why they need to act this way.

<comment><USER5> > However the example used seems trivial and the solution is worse than the > problem:

That's more or less the problem when discussing how to work with complex, real world software and giving examples of how to do it: the examples end up being simple enough that the techniques aren't worthwhile in that case. Don't mistake that for the techniques not being worthwhile ever.

I have seen the same when code is presented showing examples of how to use an IoC Container. The response "but this overcomplicates the code" is true, but misses that it doesn't apply to the (far larger) codebase that IoC containers are aimed at.

</comment></comment></comment><comment><USER8> This is just nuts. If you disregard the curly braces each of these guards are just two lines of code. When you place them into a function definition they each become 3 lines of code. Just so you can replace them with single lines in the original code.

That isn't software engineering. That is religious fanaticism.

E.g.

            guard item.count > 0 else {
                throw VendingMachineError.OutOfStock
            }

Is a very low complexity statement. One comparison is made and an enum value is thrown. You are gaining no clarity by placing this inside a separate function.

<comment><USER9> This is an oversimplified example. When I imagine how both approaches would look like in actual production code with much more complex requirements, it makes much more sense.

</comment></comment><comment><USER10> Related discussion by John Carmack:

[http://number- none.com/blow/john_carmack_on_inlined_code.htm...](http://number- none.com/blow/john_carmack_on_inlined_code.html)

[https://news.ycombinator.com/item?id=8374345](https://news.ycombinator.com/item?id=8374345)

Cached:

[http://webcache.googleusercontent.com/search?q=cache:LQgMUMT...](http://webcache.googleusercontent.com/search?q=cache:LQgMUMTnhn0J:number- none.com/blow/john_carmack_on_inlined_code.html)

</comment><comment><USER11> A great example of how you can write spaghetti code without using goto: Just split a simple function into a dozen functions with generic names like "validate", and you've made sure no-one ever will comprehend your code.

</comment><comment><USER12> Lots of short functions are usually worse than a single long function. When you go to figure out what the code is doing, instead of reading through each statement of a single function and understanding it as you go, you keep being interrupted by new functions you have to read and understand. What does "reduceDepositedCoinsBy" do? Yes, I'm sure it subtracts its argument from the deposit amount, but what _else_ does it do? Could it be causing the bug I'm trying to fix? No, it just does the obvious thing, OK, now what does "removeFromInventory" do? And so on…

<comment><USER13> So, leaving aside the fanaticism around number of lines a functions should have which I disagree with, there are some big advantages of splitting a functions in logical units.

1\. If you have ever written unit test for 300 line function you know it gets dicey. Such a function will likely require too much setup and will require complex mocks/patches/doubles to be unit tested.

2\. As I mentioned before, I don't believe in number of lines thingy but logical unit of separation. If a function, opens a file, reads & parses config data from it, reads URL from the config data , parses http response and writes updated bits to config data - these distinct things can be logically separated and will be easier to unit test perhaps (again production scenario might be more complicated). Also, with modern IDEs and editors jumping back&forth between functions should be a breeze and your IDE/editor should provide an outline of file which can be scanned quickly.

3\. If you have written a long function that does too many logical things(not again by number of lines) - next person who makes changes to it, isn't going to break it up - even if breaking up makes sense. For example, lets say in above example original code was written with expectation of certain format of config data but now somehow the function has to support more than one config data. Now the code is so tightly coupled that - it is harder to break out parser of this new format to new function and hence the function will keep growing (and did I mention the unit test setup has to support new config format as well somehow).

3\. If however, lets say method computes moving average of a timeseries, it probably makes sense to have it all in one function even if it becomes slightly longer.

TL;DR - Cargo culting must be avoided at all costs, however we don't need to throw the baby with the water. Each problem calls for our own judgement. Separate the functions by logical units, rather than number of lines, use proper editor/IDE.

<comment><USER5> > Each problem calls for our own judgement.

Indeed it does, but if you have never even tried to go full "Uncle Bob" and write really small SRP functions and classes, then your judgement won't be well-informed. You'll be surprised how well it can work if you've never tried it. It works for readability, maintainability and testability.

Statements like the grandparent's "Lots of short functions are usually worse than a single long function" IMHO mostly show a lack of relevant experience.

<comment><USER13> Let me come out and say - I think OP is wrong. When people write 500 line long functions the only way they are going to test it is, run with real input and see if it breaks.

Such testing is not only insufficient, but any regression that is added as a result of a change will go unnoticed too, until a real user hits that bug. You will notice how most people who are supporting long functions - don't even talk about how the heck they are going to test it.

</comment></comment></comment></comment><comment><USER14> That says nothing about the guard itself, only about code organization. Ifs in some of his refactored functions can be as well guards. I think this is much better: [http://radex.io/swift/guard/](http://radex.io/swift/guard/)

<comment><USER15> Exactly. Here's a version of his refactored code which re-replaces the if statements with guard statements: [https://gist.github.com/cellularmitosis/9a175facd5fe260403f1](https://gist.github.com/cellularmitosis/9a175facd5fe260403f1)

</comment></comment><comment><USER16> I agree that you can split validation parts into separate functions but this is conflating two concerns, for example the rewriting of the guard statement from

      guard item.count > 0 else {
        throw VendingMachineError.OutOfStock
      }

to

      if count == 0 {
        throw VendingMachineError.OutOfStock
      }

only proves that you can refactor the code to not use guard whereas the article starts by talking about small functions, where you could in fact still use guard in this case.

<comment><USER14> Yes. And if all your code is composed of three-lines methods, then ok. Otherwise guard is extremely usefull, because unlike 'if' it leaves your constant/variable accessible outside the guard scope.

</comment></comment><comment><USER17> If an article starts with basically "Because Uncle Bob said so", _cum grano salis_ doesn't even cover my mindset when reading the rest of it.

Function size has been a pretty peculiar fetish. Even when viewed on the mythological 80x24 remote terminal, the initial function doesn't seem to be that hard to understand, and spreading it out between some function with lackluster naming doesn't really improve it all that much ("Computer science has two hard problems: cache invalidation, naming things and off by one errors").

Literate programming or the rather esoteric "refinements" at least had the advantage of being able to use proper sentences to describe the functional component and with the former you even had the option of being able to look at the code in both forms.

Having said that: As I'm not a Swift programmer (ba-doom-tish), is this all the language has that approaches Design By Contract?

<comment><USER5> > If an article starts with basically "Because Uncle Bob said so", cum grano > salis doesn't even cover my mindset

Uncle Bob is a recognised expert in the area. So no, his opinions on SRP should not just be dismissed out of hand.

</comment></comment><comment><USER18> Another take on guard [http://ericasadun.com/2016/01/01/another-take-on- guard/](http://ericasadun.com/2016/01/01/another-take-on-guard/)

</comment><comment><USER10> I don't think it's useful to extract every guard statement into a separate function. Consider importing a json file where each field could potentially contain invalid or missing data. Sure, you could create functions like parseTitle, parseSubtitle, parseAuthorName etc. but these functions will probably only be called from one place and I don't think they improve readability.

On the other hand, I do think that larger functions should be broken up into smaller parts where it makes sense, e.g. a separate function for parsing each object in the json example.

</comment><comment><USER19> All too often, in every stack, the language is blamed for design deficiencies which lie with the programmer.

</comment><comment><USER20> It seems foolish to take function length as a standard of good code. The example refactor looks horrible to me.

How about the function can be read top to bottom, doesn't mess with global state (unless it explicitly is documented as doing so), and has clear inputs and outputs. Who cares if it is 5,10 or 100 lines if it does that.

</comment><comment><USER21> So the example of a function that's too long, because functions should be 10 or fewer lines, is a function that has exactly 10 lines with code on them.

</comment><comment><USER22> Guard makes things less readable because it "hides" variable declarations. If you break it out onto it's own line I'm sure it would make things look downright ugly.

"Don't put multiple statements on a single line unless you have something to hide" \- [https://www.kernel.org/doc/Documentation/CodingStyle](https://www.kernel.org/doc/Documentation/CodingStyle)

(If you disagree or if you think I said something wrong and my comment deserves to be hidden, I'd love to know why!)

</comment><comment><USER23> This article seems to confuse clarity brought by folding code with versatility brought function reuse.</comment>


AxLang: Formally Verifiable Smart Contracts for the Ethereum Ecosystem - <AUTHOR> https://medium.com/axoni/axlang-formally-verifiable-smart-contracts-for-the-ethereum-ecosystem-6201203be4e8?eif <comment><USER2> It's good to see people finally leveraging an existing language for secure smart contracts rather than develop a new one from scratch.</comment>


Show HN: Bringing Pull Requests to Ship, a macOS native client for GitHub Issues - <AUTHOR> https://www.realartists.com/blog/pull-requests.html <comment><USER2> Before you try it out, just know that it will install a webhook on every single one of repositories that you have permissions on, not just the ones under your personal account, but all the organization ones as well. And GitHub doesn't seem to have a way to easily remove them all at once, even after the app's permission has been revoked.

EDIT: as pointed out by Prefinem below, using the "Logout" feature uninstalls all webhooks: [https://www.realartists.com/docs/2.0/uninstall.html](https://www.realartists.com/docs/2.0/uninstall.html)

<comment><AUTHOR> Sorry you were surprised. Just to check, was the Privacy Notice displayed before you logged in? It looks like this: [https://s3.amazonaws.com/support.realartists.com/PrivacyNoti...](https://s3.amazonaws.com/support.realartists.com/PrivacyNotice.png)

We do plan to make repository selection for sync configurable in the next release.

<comment><USER2> I was too eager to try it out that I did not read it carefully enough. Completely my fault! Yeah repository selection would be nice!

</comment></comment></comment><comment><USER3> @TheTon

Like another use said, I would rather pay once and receive updates than a monthly subscription. I know that you are using your own servers to pull information, but I don't know why that is even necessary. I would rather have an app that doesn't pass any information through a third party server.

I also ran into a problem when trying to create a milestone for a repo (this was the second milestone I was creating with the app) and it locked up.

Other than that, it's extremely nice, and if you ever made it into a one time purchase, I would probably pick it up right away.

EDIT: Just a couple of notes. I tried out a couple of other applications to compare features (since I can see how nice managing issues, etc from a single app is compared to the website) and I have to say that Ship is by far the nicest out of the bunch.

As posted below: [https://www.realartists.com/docs/2.0/uninstall.html](https://www.realartists.com/docs/2.0/uninstall.html)

T̶h̶a̶t̶ b̶e̶i̶n̶g̶ s̶a̶i̶d̶, w̶h̶e̶n̶ I̶ w̶e̶n̶t̶ t̶o̶ c̶l̶e̶a̶n̶ u̶p̶ /̶ r̶e̶v̶o̶k̶e̶ a̶c̶c̶e̶s̶s̶ t̶o̶ a̶l̶l̶ t̶h̶e̶s̶e̶ a̶p̶p̶s̶ t̶h̶a̶t̶ I̶ j̶u̶s̶t̶ a̶l̶l̶o̶w̶e̶d̶ a̶c̶c̶e̶s̶s̶ t̶o̶ G̶i̶t̶h̶u̶b̶, I̶ f̶o̶u̶n̶d̶ a̶ t̶o̶n̶ o̶f̶ h̶o̶o̶k̶s̶ o̶n̶ n̶o̶t̶ o̶n̶l̶y̶ t̶h̶e̶ o̶r̶g̶a̶n̶i̶z̶a̶t̶i̶o̶n̶ l̶e̶v̶e̶l̶, b̶u̶t̶ e̶a̶c̶h̶ r̶e̶p̶o̶ l̶e̶v̶e̶l̶. I̶ k̶n̶e̶w̶ t̶h̶a̶t̶ y̶o̶u̶ w̶o̶u̶l̶d̶ h̶a̶v̶e̶ h̶o̶o̶k̶s̶, b̶u̶t̶ I̶ a̶s̶s̶u̶m̶e̶d̶ t̶h̶e̶s̶e̶ w̶o̶u̶l̶d̶ b̶e̶ o̶n̶ t̶h̶e̶ o̶r̶g̶a̶n̶i̶z̶a̶t̶i̶o̶n̶ l̶e̶v̶e̶l̶ o̶r̶ r̶e̶p̶o̶ l̶e̶v̶e̶l̶, b̶u̶t̶ n̶o̶t̶ b̶o̶t̶h̶. E̶i̶t̶h̶e̶r̶ w̶a̶y̶, i̶t̶ t̶o̶o̶k̶ m̶e̶ a̶r̶o̶u̶n̶d̶ 1̶0̶ m̶i̶n̶u̶t̶e̶s̶ t̶o̶ c̶l̶e̶a̶n̶ u̶p̶. N̶o̶t̶ s̶u̶r̶e̶ i̶f̶ y̶o̶u̶ h̶a̶v̶e̶ p̶l̶a̶n̶s̶ f̶o̶r̶ a̶u̶t̶o̶ r̶e̶m̶o̶v̶a̶l̶ o̶f̶ w̶e̶b̶h̶o̶o̶k̶s̶, b̶u̶t̶ t̶h̶a̶t̶ w̶o̶u̶l̶d̶ b̶e̶ a̶m̶a̶z̶i̶n̶g̶ i̶f̶ y̶o̶u̶ d̶i̶d̶.

Either way, I will be keeping my eye on Ship because I really enjoyed it for the most part and it is better than the alternatives I found IMO. Keep up the good work!

<comment><USER4> This also makes it impossible to use for Github Enterprise because the installation is (usually) not available from the public internet and most enterprises won't be cool with the data being accessed/stored by a third party.

It's too bad, it looks like a cool product.

<comment><AUTHOR> We can support GitHub Enterprise with a self-hosted appliance. If you're interested I'd love to talk.

<comment><USER4> That self-hosted appliance would have to undergo a year-long security review process. Basically we'd have to know all the internals, how things are implemented, with which libs, which versions, how it gets updated...

For something that really should be a piece of desktop software, that most likely won't fly.

I understand your business decision to go for a SaaS model instead of a fixed price, but the added value of the service (vs. a product) doesn't justify it on the user's side.

<comment><USER5> I wonder, would you be able to check if the self-hosted appliance is making requests to IPs other to the one that hosts your Github Entreprise instance? If you can check for this, you can be more confident that your data is not being sent out to machines you do not control.

<comment><USER4> That would help build a case for mitigation, but it would still have to undergo the entire scrutiny process.

</comment></comment></comment></comment></comment></comment><comment><USER6> I'll preface this by saing: I'm not a Mac user and am unlikely to ever use this or any other tools built for macOS.

But, it's really great to see work being done on an intuitive native interface for this sort of thing. Major props for the write-up on the security of the tool, too. Lots of transparency there as to how the tool works under the hood, and it sounds like you've put a lot of thought into how that should work.

<comment><USER7> Out of curiosity, why did you feel the preface necessary? Your point seems to stand without it just fine.

</comment></comment><comment><USER8> I really like this app, but I don't think I will buy it.

Why?

It is the monthly subscription fee. If I stop paying then I lose functionality. I'd rather pay $50 or something and get regular updates and continued functionality than $5 a month.

Yes, I know, I already pay GitHub $7/mo, but I can't get paying monthly for a client app.

<comment><USER9> You are being downvoted but I agree. Not everything should be a never ending monthly fee. I'll pay for a good app and happy to buy the next major release if I think it offers enough functionality to upgrade.

<comment><USER10> In this case, maybe an annual fee might be better... but it seems like the application itself requires a server component (that they host) for webhooks from gh and push notifications to their client ui.

<comment><USER9> Ah...got it. If they are relying on their infra to provide services that makes sense.

</comment></comment></comment></comment><comment><USER11> I really like the look of the app. It's nice to see established well developed desktop interface concepts applied well.

The first link in the blog post should really link to the home page. A download link is unexpected and unwelcome for someone who's trying to figure out what Ship is for the very first time.

<comment><USER12> Good point. I updated the link.

</comment></comment><comment><AUTHOR> James and I have put a ton of work into this since we first showed you Ship six months ago. We've fixed many bugs, improved fit and finish, and even lowered the price.

Trials have been reset, so if you looked at Ship earlier, feel free to give it a fresh look on us!

We'll be in the thread and would love to hear your feedback.

<comment><USER13> I'm excited to give this a try, as it's downloading, is there support for:

\- Approving / rejecting on the PR as a whole?

\- @ mentioning

\- Assigning team members to a PR

\- Viewing a subset of the diff (i.e. all changes since my last review, or even better all changes between these two commits)

<comment><USER12> Yes, yes, yes, and yes :)

@mentions are an aspect of the product that's a little weak right now. There's a lot more we can and should do with it. We plan to improve this in a future release.

</comment></comment></comment><comment><USER14> I don't use GitHub anywhere near enough to warrant using this anyway, but it's sad to me that true native app development (a rare and positive thing these days, it seems) is shackled with what I consider the scourge of the modern app landscape: monthly subscription pricing, justified by a man-in-the-middle server(s) for reasons that are in no way logical.

How many email "clients" have launched in the last few years, only to be shutdown without any future use possible because they all had a hidden server component?

So you get to pay almost as much as most people will pay for all of GitHub, for an app that's tied to another company being around, with the bonus that they get to see all your private repos?

I know a lot of people won't see any issue with this, and that this is "normal" for them, but this is most definitely not "normal" for me, and it pains me that so many people accept this as "normal".

<comment><AUTHOR> When we initially started development, the application directly synced with GitHub. Turns out, to accurately reflect the current state of Issues on GitHub, you need to poll multiple resources per repository every minute, in addition to subscribing to hooks (hooks alone don't cover everything). Even if those requests are all 304 Not Modified responses, they add up in size, number, and time. Furthermore, some views, like Issue details, actually require tens or even hundreds of requests to refresh completely.

The server component can quickly make needed requests in parallel over a reliable, high bandwidth, low latency connection. Then, once the changes are known, the server streams them down to the app as deduplicated, compressed, incremental changes. This allows the application to sit idle, using essentially no CPU, network, or battery resources.

It's unfortunately the only way to provide a good user experience.

<comment><USER12> Not to contradict what my partner, kogir, is saying here, but I think the benefit, as a Ship user, for subscription pricing goes even further than any discussion of the server.

Imagine that a future GitHub API v5 is perfectly suited to the feature set and user experience that we want to offer with Ship. That's great, now we can happily delete our server.

But, GitHub itself is a subscription service that is not a fixed target. They routinely introduce new features and APIs, in fact nearly weekly [1]. Our app is only valuable as long as we provide utility to you beyond what you get by just using github.com. When GitHub adds a new feature, and your collaborators start using it, if it isn't usable in Ship, then Ship now has negative utility compared to loading up github.com in your browser. This isn't just hypothetical either -- we do a lot of work to keep up with GitHub's pace of development.

Imagine you sign up today and then 2 months from now GitHub makes a change that substantially reduces the utility you get out of Ship, or Nick and I go out of business. With the current subscription pricing, you will have spent $10 for 2 productive months with the app, and you can go back to using GitHub in a web browser with no downside, because Ship (intentionally) doesn't have any lock-in.

Now contrast that with a model in which we ask for $70 up front for Ship. I think this is not unreasonable considering the pricing of standalone dev tools of similar utility (for example, consider fancy diff tools like Kaleidoscope [2] or Beyond Compare [3]). As I'm sure you know, most indie Mac software has a sales curve that starts off with a big spike over the first week or two after a release and then it trails off pretty sharply. That's fine for an offline app, but I hope you can now see how the subscription pricing model is a better fit for Ship, both for us and for our users, given the large surface area and fundamental nature of our integration with GitHub.

[1] [https://github.com/blog/category/ship](https://github.com/blog/category/ship) [2] [https://www.kaleidoscopeapp.com](https://www.kaleidoscopeapp.com) [3] [http://www.scootersoftware.com/shop.php](http://www.scootersoftware.com/shop.php)

</comment></comment></comment><comment><USER15> I'd pay $40 for this. Can I pay you $40 once instead of $5 a month?

</comment><comment><USER16> I can't wait for a Visual Studio Code implementation of this...

</comment><comment><USER17> Any plans for bitbucket?

<comment><USER12> Sorry, not at the moment. We're all in on GitHub right now.

</comment></comment><comment><USER18> Any support for iOS (Ipad Pro) down the road?

<comment><USER12> Maybe. We did iOS support on Ship 1.0, and I think it turned out pretty well. For Ship 2.0, the Mac app is a Cocoa app, and the codebase is already factored into UI/non-UI areas, so it's somewhat portable, but of course much of the UI stuff has to be rethought to work well on iOS.

</comment></comment><comment><USER19> Is it just me or do none of the links work?

<comment><USER12> Sorry, I was doing something dumb with javascript on those, so if you were browsing with it off or were blocking resource loads from ajax.googleapis.com, it wouldn't work. I think it's fixed now.

Here's a direct link to the app: [https://www.realartists.com/builds/2.0/Ship.app.zip](https://www.realartists.com/builds/2.0/Ship.app.zip)</comment></comment>


Project Orion (nuclear propulsion) - <AUTHOR> http://en.wikipedia.org/wiki/Project_Orion_(nuclear_propulsion)

<comment><USER2> An amazing TED talk by a guy whose father worked on the project: [http://www.ted.com/talks/lang/eng/george_dyson_on_project_or...](http://www.ted.com/talks/lang/eng/george_dyson_on_project_orion.html)</comment>


Seven More Chrome Extensions Compromised - <AUTHOR> https://threatpost.com/seven-more-chrome-extensions-compromised/127458/ <comment><USER2> This is getting ridiculous. Google should make 2FA mandatory for all extension devs.</comment>


Ask For Opinion: what you do when everything is going wrong? - <AUTHOR>

and you feel that there is no way out.<p>I know I've to give some details and will be ignored by some, but still.<p>(yes it's account-for-a-post, apologies for that.) <comment><USER2> Well, if you don't punch out (pull the ejection handle), one piece of advice from the head of LMI was to focus on one thing and get it done. I.e. better to make some forward progress than let yourself get overwhelmed and paralyzed.

I would add: especially since some of the things going wrong will get resolved one way or another.</comment>


Uninitialized RAM is always Random: building a TRNG - <AUTHOR> http://hackaday.com/2015/06/29/true-random-number-generator-for-a-true-hacker/

<comment><AUTHOR> Personally I would have thought that the RAM was _somewhat_ similar at each power up. But Voja's research definitely proves me wrong.

I wonder how this would stand up to liquid nitrogen cooling to hold the bits in RAM between resets? How much do you think one bit flipping affect the randomness?</comment>