What Our Digital Footprint Says About Us - <AUTHOR> http://www.gsb.stanford.edu/insights/what-digital-footprint-says-about-us <comment><USER2> The way we each approach and interact with social media does say a lot about us. However, as in my case, and im sure others here would agree, I generally prefer to not interact with social media by actively liking or sharing things. I merely observe, I use the social media tools that allow me to connect and reconnect with others, but I believe that the onlooker or the analyst that tries to derive information from my likes and dislikes, will ultimately come out empty handed. So this indeed says a bit about me, but I may be entirely different from another fellow "observer" of social media who also doesn't actively like or share.

</comment><comment><USER3> It's trivially easy. I built a _simple_ proof of concept a last month with ~30 lines of code:

[http://caseysoftware.com/blog/social-apis-for-social- evil](http://caseysoftware.com/blog/social-apis-for-social-evil)

</comment><comment><USER4> > Sorry, we are unable to generate a prediction. An insufficient number of > your Likes match with those in our database, and we don't believe in > guesswork.

Huh. I click like a lot on Facebook, I wonder what throws their algorithm off.

</comment><comment><USER5> > First of all, just being on social media, I believe, makes people happier.

Um, no. [http://uk.businessinsider.com/social-media-use-can- contribut...](http://uk.businessinsider.com/social-media-use-can-contribute- to-anxiety-and-depression-2015-6?r=US&IR=T)

> The same instincts drive us to read celebrity magazines and watch soap > operas.

Wait, what?

</comment><comment><USER6> The whole linked site -- [http://applymagicsauce.com/](http://applymagicsauce.com/) just seems deeply unethical for a University, regardless og where it sits on the spectrum of [abuse of human research subjects] to [selling snake oil]

</comment><comment><USER7> Took the test on the website. The results are so off. It couldn't even predict my gender, not to mention other traits. If that website actually reflects their method, it is ridiculously overclaimed.

<comment><USER8> My guess is that they just don't have enough data to do very good clustering.

</comment></comment><comment> ux-app > Facebook serves one of our most basic instincts: to socialize, gossip, and > feel needed

I've never had a social media account. Feels strange that I seem to be missing a "basic instinct". Not sure what to make of this.

<comment><USER9> Many things serve those instincts, like friends, family, hacker news. You're getting your needs met via other sources.

</comment></comment><comment><USER10> Heh heh. So wrong. I'm no androgynous 27-year-old.

<comment><USER11> I'm not conservative, 26, or female.

It also says I'm smarter than just 49% of the population, while IQ tests say at least 80%. Maybe I'm just good at taking tests and Facebook is the real me?</comment></comment>


Dynamic Ridesharing (lists ridesharing startups/projects) - <AUTHOR> http://dynamicridesharing.org/

<comment><AUTHOR> Just felt like posting this in light of the lyft/uber news today, in case anyone wants some pointers to other projects.</comment>


Visualizing Uber and Lyft trips in San Francisco: more than 200K trips a day - <AUTHOR> https://medium.com/@billycharlton/visualizing-uber-and-lyft-usage-in-san-francisco-928208b1978a <comment><AUTHOR> Sure - PostgREST provides a RESTful API endpoint for any PostgreSQL database. It's kinda magic.

It's an interesting beast: it has almost no configuration at all, you just point it to one database schema, and it then uses the postgres permissions system to decide what tables & views to expose, and who gets to see them.

The only part of it that was a little tricky was creating multiple database users for anonymous views off the internet vs. internal staff who would want to do more than just select some rows.

<comment><USER2> That is not actually correct. PostgREST does not "uses the postgres permissions system to decide what tables & views to expose".

PostgREST exposes everything within a particular schema and then every call gets translaed into a query and executed. It's the database (PostgreSQL) that is deciding if the query will be executed or it will raise a permissions error. PostgREST just kind of says "hey db, this is the current user. Now run this query for him"

From a high level, postgrest is just a pure function that translates a rest call to a sql query and executes it with the privileges of the user that is making the request. The database does all the heavylifting

<comment><AUTHOR> Thanks for the clearer explanation -- you're correct, the database decides that. That's the beauty of it!

</comment></comment></comment><comment><USER3> Cool stuff! We actually built a similar system to analyze the NYC taxi dataset (or any other geospatial dataset). We use the (PostgreSQL wire protocol compliant) HyPerSpace database in the backend [1]. Let us know if you're ever experiencing performance problems with PostGIS.

[1] [https://db.in.tum.de/downloads/publications/hyperspace.pdf](https://db.in.tum.de/downloads/publications/hyperspace.pdf)

<comment><AUTHOR> Wow, I'll take a look. Looks awesome! This particular dataset was _very_ small because the agency which did the data collection aggregated everything into neighborhoods before they gave it to me. So, performance hasn't been a problem at all yet. We'll be tackling some larger datasets soon, so we'll see!

</comment></comment><comment><USER4> Very nice visualization and write-up! The tech details are pretty interesting. In particular, noting the back-end was done up in PostgREST. I've been itching for a project to kick the tires on that for a while.

Any more you can add about the experience of "writing" the back-end in PostgREST if you're hanging out in this thread, Billy?

</comment><comment><USER2> Can you share what parts of PostgREST way of doing things you found nice and what parts are lacking?

<comment><AUTHOR> Nice things: simple tool that does one thing well. As mentioned above, it lets the database itself decide on permissions. If you want SSL support, just put it behind an NGINX reverse proxy. It lets you get creative with queries in the query-string part of your url.

Lacking: I didn't really find anything lacking; it was able to do everything I needed. I'm a pretty basic end-user, not an expert. At first I was confounded by the limitation of one schema per PostgREST instance; but that's easy to work with or work around. I created a single "api" schema which contained nothing but views of tables that lived in other places. You can also just run more than one instance of PostgREST if you want to expose more than one schema.

<comment><USER2> For your next PostgREST based project you might want to try [https://github.com/subzerocloud/postgrest-starter- kit](https://github.com/subzerocloud/postgrest-starter-kit) with the aid of [https://github.com/subzerocloud/devtools](https://github.com/subzerocloud/devtools)</comment></comment></comment>


Ask HN: Presenting IT Security to College Kids - <AUTHOR>

I have an opportunity to talk to college students on Security next week. The idea is to excite them about building a career in IT security. I am looking for pointers, suggestions to help me prepare. <comment><AUTHOR> Any suggestions or pointers are welcome.</comment>


Groupon India sells Onion. Traffic crashes site. - <AUTHOR> http://america.aljazeera.com/articles/2013/9/6/indian-onion-salesignalsworseningeconomy.html <comment><USER2> This is nothing but a marketing ploy.

Firstly, selling any commodity for 10-15% of its market value will attract lots of opportunistic buyers. This isn't an "Indian" thing. You could try this in other countries by selling, say, Kale or Chicken Breast or Soylent, and people would still sign up. A deal's a deal in every country.

Secondly, Groupon was selling 3000 kg per day, with a limit of 1 kg per order. Some sites mention they sold out the first day within 80 minutes. Other than that, I haven't seen any evidence/data about the incoming traffic that caused the site to crash. So till I do, I'll treat news of the "crash" like a marketing gimmick from the company.

Lastly, as other folks have commented, Groupon India isn't exactly the platinum standard for ecommerce website design or operations in India.

In 2011, they (specifically, the Indian company they acquired and later folded into Groupon India) leaked 300,000 user passwords that were stored as cleartext ([http://www.theregister.co.uk/2011/06/28/groupon_india_privac...](http://www.theregister.co.uk/2011/06/28/groupon_india_privacy_breach/))

The same year they decided to rebrand themselves to Crazeal.com ([http://techcrunch.com/2011/10/03/no-groupon-in-india- company...](http://techcrunch.com/2011/10/03/no-groupon-in-india-company- rolls-out-crazeal-in-11-cities/)), only to re-re-brand themselves as Groupon India in Nov 2012 ([http://www.afaqs.com/news/company_briefs/?id=55477_Groupon+I...](http://www.afaqs.com/news/company_briefs/?id=55477_Groupon+Inc.+announces+rebranding+of+Crazeal+to+Groupon+India))

Given this history - of poor design, senseless acquisitions and multiple u-turns in strategy - I wouldn't be surprised if their code is a taped-up patchwork that will crash regardless of 90% discounted onions.

<comment><USER3> > Given this history - of poor design, senseless acquisitions and multiple > u-turns in strategy - I wouldn't be surprised if their code is a taped-up > patchwork that will crash regardless of 90% discounted onions.

Can you qualify your comments with what is _good_ design, _sensible_ acquisitions and what you'd call the "correct" strategy? Have you ever started or steered a company that went on to become something? Even half as big and inspirational as Groupon?

[Edited]

<comment><USER4> > Have you ever started or steered a company that went on to become something? > Even half as big and inspirational as Groupon?

This is a terrible line of argument, since it considers the possibility of problems being obvious even to a layman as nonexistent. The next time you're tempted to make such an argument, ask yourself: "Have i ever made a full- length feature film?" I'm sure the answer for yourself is no, yet you have surely criticized one.

<comment><USER5> Roger & Ebert never made a movie, but I agreed with most of their reviews.

<comment><USER6> Roger Ebert is one person.

<comment><USER2> I assume the previous commenter meant "Ebert & Roeper"

<comment><USER7> Siskel & Ebert for us old timers!

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> This is hardly surprising. During my childhood in India, coupons were very rare. This meant that when a coupon did show up, it was usually a great offer and an enourmous flood of people would rush to cash in. It was common for newspapers to sell out just for a specific coupon.

I remember a company introducing a new orange flavored drink coming out with an offer where they'd give the drink for "free" in exchange for x number of oranges.

Oranges across the city sold out.

<comment><USER9> > drink for "free" in exchange for x number of oranges

Why just not eat the oranges?

<comment><USER10> I think the answer to that is the answer to the question of why any sugary soft drink exists at all.

</comment></comment></comment><comment><USER11> This seems like the kind of headline that would be in The Onion...

<comment><USER12> Yes I actually thought this was about the sale of The Onion website, until I saw a picture of actual onions in the article :) The aljazeera logo also kind of looks like an onion though...

<comment><USER13> Perhaps Onion should not be randomly capitalized...

</comment></comment></comment><comment><USER14> Is it really a big deal that Groupon India's site crashed? Was there not an article a few months ago on HN about how badly coded this website was? I thought it was just a localized version of Groupon but there was something appalling about it as I remember.

<comment><USER15> I believe Groupon runs many infrastructures. The US and Canadian platform, the CityDeal platform, and dozens of local acquisitions. India is almost certainly a local acquisition divorced from all the european and united states talent.

</comment></comment><comment><USER16> They say, 1 order per household & 3000 orders per day for 7 days. That's 21000 different deliveries (even if you order twice with a different account on a different day, it's still a different delivery). An average of 2 km run per delivery & a mileage of 117 mpg (50 kmpl) would amount to 211 gallons (800 litres) of fuel. (they use 100-125 cc fuel efficient bikes, ignoring the bulk transportation by bus/train to the end point delivery hub)

That's a nice blot on the environment. Burning fuel for delivering 1 Kg of onions to scattered destinations all over the country, brilliant idea, though not that conscious. Onion is something you can easily buy from the shop around the corner. And saving a few bucks won't change your living standard. People are ordering for fun.

On the other hand, offering discounted mobile recharge would have been eco friendly. But that's not the burning topic amongst a country that's obsessed with bargains :)

<comment><USER17> > And saving a few bucks won't change your living standard. People are > ordering for fun.

Great way to demonstrate first world myopia.

A large portion of the people in India live on no more than a few bucks per day. To them, this can be the difference between being well-fed and going hungry. Which is the biggest possible change in living standard.

<comment><USER16> Yeah right ! You completely missed the context. Picked one sentence out of the whole argument and didn't realize who it's being targeted at.

The ones who are living on a few bucks a day aren't the ones logging on to groupon at 1pm to compete for those onion prices for the 10 minutes that it lasted. Neither do they have broadband, credit cards, netbanking. Neither are they the target consumer for groupon.

</comment></comment></comment><comment><USER16> It's an interesting marketing scheme. Doesn't cost a lot. Per day they sell max 3000 kg of onions (will go on for 7 days). This will perhaps bring them a lot more publicity than advertisement space they can buy for that dollar. Practically every blog, deal site, newspaper will end up covering them. Enormous traffic too.

</comment><comment><USER18> The groupon post - [http://www.groupon.co.in/deals/shopping/Groupon-India- Onion/...](http://www.groupon.co.in/deals/shopping/Groupon-India-Onion/408055)

</comment><comment><USER19> Regarding the actual issue of onions being very expensive, what do people eat instead then? Here in Europe, I would consider onions to be one of the cheapest vegetables you can get.

<comment><USER20> They want onions, they still eat onions. Onions are a very important staple, it is like rice in Japan. Onion prices have skyrocketed in recent times due to monsoons this year and drought last year.

[http://worldnews.nbcnews.com/_news/2013/08/28/20228605-enoug...](http://worldnews.nbcnews.com/_news/2013/08/28/20228605-enough- to-make-you-cry-big-spike-in-onion-prices-sparks-fury-armed-robbery-in- india?lite)

 _The cost of a pound of onions has risen from around 9 rupees (13 cents) to an average of 45 rupees (65 cents) in the last month alone. The shortage is front-page news in the country, where high onion prices have been credited with swinging elections in the past._

 _" We all need onions," businessman Pradeep Kohli said. "My dining table is incomplete without onions, they're used in all Indian dishes and salads. What do we do if we can't have onions? It's a worrying time."_

</comment></comment><comment><USER21> Is it hard to grow onions in the average India climate?

<comment><USER22> No. But, the ruling party is looting India and is determined to make India bankrupt.

<comment><USER3> The ruling party was elected by the people twice over, so this comment to escape the fault of corruption and to put the blame entirely on a few doesn't seem to be well grounded.

For example, in my own little world of 100 odd Facebook friends roughly 18 voted for the ruling party and only 26% of my friends voted. So you can imagine, we the people brought it on ourselves. And we have been doing it for a couple of decades. Like it or not, this is exactly how _karma_ or lack of it comes back at you.

<comment><USER23> With both ruling and opposition (and every other party + independents) being in bed with corrupt/opportunistic elements, do you sincerely think the rest of your friends' voting would have made that much difference?

During the days of coalition Indian governments with more colors than a rainbow, they kept telling that all problems were due to lack of clear mandate. Fine, the current ruling party literally got the clearest mandate in decades - the people got record breaking scams/all time high prices in return.

And before you chastise the voter for voting based on caste/religion and not voting on policy issues, the twice elected American government purported to represent the opposite of christian-fundamentalist-gun-toting-nutbags, has broken several of its promises and has indulged in significant domestic and foreign transgressions. This is not a problem unique to third world.

If you only have the option of choosing between jerks and assholes, your voting (or not) won't make much difference.

<comment><USER3> > If you only have the option of choosing between jerks and assholes, your > voting (or not) won't make much difference.

Disagreed. There are two more options that you probably missed:

1\. Inform the election commissioner that you do not support any of the competing parties with your [reasons] on the ballot paper. Aka in tell the election commissioner that you need/expect better options.

2\. Form a political frontier which provides an honest option to people who want to vote.

> ... the twice elected American government purported to represent the > opposite of christian-fundamentalist-gun-toting-nutbags, has broken several > of its promises and has indulged in significant domestic and foreign > transgressions. This is not a problem unique to third world.

Doesn't justify the problems of India. This has nothing to do with the "third world" status, I agree with you there.

</comment></comment></comment></comment></comment><comment><USER24> LOL, this country.

<comment><USER3> While this comment is likely to attract down-votes but on a serious note just this one line adds so more depth to the problem. What a huge challenge of numbers and scale when it comes to economics of the Indian household!

The problem of overstocking to artificially create scarcity and then bend the prices over (of onions or rice or tomatoes) to profit quickly is such an age- old problem that has stuck around in India since the independence. It works like the _crude oil_ industry and works like a charm. Every time. There have never been any convictions or efforts reported on "fixing it".

No one even remotely seems close or interested (I could be wrong here) in thinking up a solution or to get involved in solving it. Thus, the LOL.

</comment></comment><comment><USER25> Lets see how many startups start selling onions to India.

<comment><USER26> ... as a service!

But seriously, isn't this how Groupon is supposed to work? Offer a stupid discount, protected by a limited supply in order to manufacture demand.

I'm not sure why this is top of HN?

<comment><USER27> Roughly speaking you're right, but there is already a demand for Onions, and there's no need to manufacture demand for "onions sold by Groupon" because Groupon don't want to keep selling onions.

It's as piece of marketing by Groupon, at the end of the day, and a reasonably clever one, hence it's on HN.

</comment></comment></comment><comment><USER28> Onions cost much more than 100 rupees around here. My advice to Indians: raise your prices! Don't work for less than a European salary, so that you may buy onions at a European price! That was the purpose of globalisation since the start: to equalize level of life, salaries and prices (on a global market).

<comment><USER29> > That was the purpose of globalisation since the start: to equalize level of > life, salaries and prices (on a global market).

Oh god no, that is economic history revisionism. Globalisation is first and foremost the method for rich countries/companies to outsource their workload to a cheaper provider. This is what it has become.

In the begining globalisation was about information and tech. exchange, a larger trade market and allowing people to move easily thought frontiers. Never, and still not, about fair trade.

You can't equalize level of life without social rights and globalisation don't push for that (especially in the US where globalisation is mistaken for global free-market).

<comment><USER30> "Globalisation is first and foremost the method for rich countries/companies to outsource their workload to a cheaper provider. "

The largest result of globalization has been dramatically raising the standard of living of hundreds of millions, if not billions, of people.

"You can't equalize level of life without social rights and globalisation don't push for that"

When you raise people's standards of living they begin to demand their own social rights.

<comment><USER29> >> "Globalisation is first and foremost the method for rich countries/companies to outsource their workload to a cheaper provider. "

>The largest result of globalization has been dramatically raising the standard of living of hundreds of millions, if not billions, of people.

Doesn't change anything to the fact that it wasn't intended. Companies promoting globalisation aren't doing it to raise standard issues of living. Quite the contrary.

>> "You can't equalize level of life without social rights and globalisation don't push for that"

> When you raise people's standards of living they begin to demand their own > social rights.

Same as above. Once the economic situation has been enhanced it will not bring social rights unless people (almose litteraly) _fight_ for it. Globalisation by itself doesn't guarantee social rights because it's not architectured to do so.

Moreover: people with low standard of living still demand for social rights (see brazilian tribes, north american natives, etc.) even when they can't participate in a more rewarding economy.

<comment><USER30> "Companies promoting globalisation aren't doing it to raise standard issues of living. Quite the contrary."

That's a straw man no one is claiming. A lot of non-companies did promote this aspect of it though (see below).

"Doesn't change anything to the fact that it wasn't intended. "

It certainly was intended by many who promoted it. Here's Paul Krugman in 1997:

 _The benefits of export-led economic growth to the mass of people in the newly industrializing economies are not a matter of conjecture. A country like Indonesia is still so poor that progress can be measured in terms of how much the average person gets to eat; since 1970, per capita intake has risen from less than 2,100 to more than 2,800 calories a day. A shocking one-third of young children are still malnourished--but in 1975, the fraction was more than half. Similar improvements can be seen throughout the Pacific Rim, and even in places like Bangladesh. These improvements have not taken place because well- meaning people in the West have done anything to help--foreign aid, never large, has lately shrunk to virtually nothing. Nor is it the result of the benign policies of national governments, which are as callous and corrupt as ever. It is the indirect and unintended result of the actions of soulless multinationals and rapacious local entrepreneurs, whose only concern was to take advantage of the profit opportunities offered by cheap labor. It is not an edifying spectacle; but no matter how base the motives of those involved, the result has been to move hundreds of millions of people from abject poverty to something still awful but nonetheless significantly better._

[http://www.slate.com/articles/business/the_dismal_science/19...](http://www.slate.com/articles/business/the_dismal_science/1997/03/in_praise_of_cheap_labor.html)

"Once the economic situation has been enhanced it will not bring social rights unless people (almost literally) fight for it"

Some social rights, like the increased standing of women, come naturally with economic benefits. Others, as said above, will be increasingly demanded by an empowered middle class looking to defending their property against injustice. In some cases yes they may have to _fight_ for some of those rights. How exactly are you proposing they get these rights, click their heels together and hope?

"Globalisation by itself doesn't guarantee social rights"

Straw man claimed by no one.

What alternative is there that you're offering and what contemporary example can you offer to rebut the transformations of South Korea, Taiwan, Singapore and more into much freer societies?

</comment></comment></comment></comment></comment><comment><USER31> This feels like shameless exploitation of hunger and poverty, a step above Howard Stern giving out shopping carts to homeless people. I'm sure the best part for Groupon is getting to say, sorry hungry people! No more cheap onions for you!

</comment><comment><USER32> its interesting they choose an agro commodity that has been classically a cause for major problems in india - [http://en.m.wikipedia.org/wiki/2010_Indian_onion_crisis](http://en.m.wikipedia.org/wiki/2010_Indian_onion_crisis)

though I'm not sure why any supplier in their right mind would sell via groupon at a discount when therr is massive price inflation for it. It's grown faster than the price of gold hence its probably driving the gold price!

</comment><comment><USER33> This sounded like an Onion article on Groupon!

</comment><comment><USER34> " _sold out in 9mins_ "

</comment><comment><USER35> I was also one of the customer who ordered 1kg onion at just 9 IND.

</comment><comment><USER36> what is so strange? vegetables are good :)</comment>


Change.org petition for common sense travel procedures from ebola outbreaks - <AUTHOR> https://www.change.org/p/barack-obama-and-u-s-senate-and-u-s-house-of-representatives-institute-quarantine-procedures-for-travel-out-of-countries-with-ebola-outbreaks

<comment><AUTHOR> Before creating this, I did search change.org and notice a fair number of ebola-related petitions.

I deliberately created a petition that was not US-centric and did not assume an "us vs. them" tension between the three west african countries involved and "the rest of the first world".

Note that the petition calls for the US itself to be held to these restrictions if it passes the "outbreak test" that is described in the petition and that it calls for a framework that would be protective of all possible destinations (not just the US) of infected travelers.

Further, I understand that a 21 day monitored quarantine for all travelers is logistically difficult, to say the least, which is why there is an alternate blood test route (the logistics of which I am completely in the dark about).

Remember - more cases in the US or Europe is not the nightmare scenario. The nightmare scenario is an infected traveler from West Africa returning home to Mumbai or Delhi. The conditions laid out in this petition reflect that and, I hope, address that risk.</comment>


Hosted Microsoft OCR library: Free OCR API web service - <AUTHOR> http://blog.a9t9.com/2015/09/ocr-api.html <comment><USER2> Never used an OCR library before so gave it a challenge with the latest xkcd cartoon.

curl [https://ocr.a9t9.com/api/Parse/Image](https://ocr.a9t9.com/api/Parse/Image) \--data "apikey=helloworld&url=[http://imgs.xkcd.com/comics/bells_theorem.png"](http://imgs.xkcd.com/comics/bells_theorem.png") { "ParsedResults": [ { "FileParseExitCode": 1, "ParsedText": "T-as IS CALLED I THEOREM. IT LAS FIRST\u2014 t: 1 wostcop n, FASTER- FIRM-LIGHT com)MCBT10N IS E6SlBLE! EL's rta\u201eNDERSTRtDlNGS ELLS THEX\u00dcI I-IPPPEN VIOLATE LOCALITY", "ErrorMessage": "", "ErrorDetails": "" } ], "OCRExitCode": 1, "IsErroredOnProcessing": false, "ErrorMessage": null, "ErrorDetails": null }

<comment><USER3> Doesn't look like it likes xkcd hand lettering or the font that approximates it. I had better luck with a this...

curl [https://ocr.a9t9.com/api/Parse/Image](https://ocr.a9t9.com/api/Parse/Image) \--data "apikey=helloworld&url=[http://www.uky.edu/Providers/ScannedText/page1s.jpeg"](http://www.uky.edu/Providers/ScannedText/page1s.jpeg") {"ParsedResults":[{"FileParseExitCode":1,"ParsedText":"In 1830 there were but twenty-three \r\nmiles of railroad in operation in the \r\nUnited States, and in that year Ken- \r\ntucky took the initial step in the work \r\nwest of fhe Alleghanies. An Act to \r\nincorporate the Lexington & Ohio \r\nRailway Company was approved by \r\nGov. Metcalf, Jarinary 27, 1830.. It \r\nprovided for the construction and reÔÇó \r\n","ErrorMessage":"","ErrorDetails":""}],"OCRExitCode":1,"IsErroredOnProcessing":false,"ErrorMessage":null,"ErrorDetails":null}

</comment></comment><comment><USER4> Using the web site for a quick test, it gets me better results than Tesseract. However, it missed some words that free-ocr.com gets every single time. (free- ocr.com seems to have some voodoo magic)

</comment><comment><USER5> Isn't this a violation of MS's EULA?

<comment><USER6> "One user may install and use copies of the software to design, develop, test and demonstrate your programs. You may not use the software on a server in a production environment."

License: [http://www.microsoft.com/web/webpi/eula/windows_runtime_ocr_...](http://www.microsoft.com/web/webpi/eula/windows_runtime_ocr_library_terms_of_use.htm)

<comment><USER7> Ouch. I was not aware of this, so thanks for the info! I guess the reason for this surprisingly restrictive license is/was the version 1/first release character of the software (namespace Windows"Preview".Media.Ocr).

The good news: In Win 10 the separate library is gone and the OCR feature is a regular part of Windows (Windows.Media.Ocr namespace). Along with this, the separate OCR runtime license is gone. -> I could not find any hint that the new OcrEngine class (or Windows Store apps in general!) have similar "no server use" restrictions -> I will move the OCR app to a Win 10 platform asap.

And while I can not speak for Microsoft, I have good reasons to assume that the ocr api service is doing Microsoft a favor by advertising the great Win 10 OCR features. My web service allows for quick prototyping and testing on any platform. But ultimately no web api can be as responsive as a native OCR solution - which is only available on the Windows platform.

I would not be surprised if the OCR engine shows up in Windows Server 2016, directly usable from ASP.NET.

<comment><USER7> Update: I confirmed that Microsoft's OCR.dll is indeed part of Windows Server 2016. More info: [http://blog.a9t9.com/2015/10/microsoft-ocr-on-windows- server...](http://blog.a9t9.com/2015/10/microsoft-ocr-on-windows- server-2016.html)

</comment></comment></comment></comment><comment><USER8> I tried this API with a document I had lying around which contains a lot of text in different tables. The text is pretty clear but this API was not able to parse the text to the point it's usable.

To give an example, a part of the text read "the limit" and was parsed as as "he imit". This despite it being extremely clear / easy to read for a human.

Update: Took another picture and uploaded a JPG instead of the original PDF. It worked fine this time.

</comment><comment><USER9> Can anybody recommend any good open source OCR libraries that run under *nix?

<comment><USER10> Tesseract:

[https://github.com/tesseract-ocr/tesseract](https://github.com/tesseract- ocr/tesseract)

[http://neilshroff.com/tesseract- ocr/doc/tesseracticdar2007.p...](http://neilshroff.com/tesseract- ocr/doc/tesseracticdar2007.pdf)

[https://ryanfb.github.io/etc/2014/11/13/command_line_ocr_on_...](https://ryanfb.github.io/etc/2014/11/13/command_line_ocr_on_mac_os_x.html)

<comment> w-ll I recently started playing with tesseract.

Here's a dockerfile that will install it in a minimal alpine image.

[https://github.com/wartron/docker- tesseract](https://github.com/wartron/docker-tesseract)

</comment></comment></comment><comment><USER11> I got this error; are you a victim of your own popularity?

        {"ParsedResults":[{"FileParseExitCode":-20,"ParsedText":"","ErrorMessage":"Timed out waiting for image parsing result or error generation by OCR","ErrorDetails":"System.TimeoutException: Timed out waiting for image parsing result or error generation by OCR\r\n   bei OCRInteractionLibrary.OCRInteractor.GetResultForImage(String tempPath, String imageName, FileInfo imageFileInfo, Boolean isOverlayRequired, AccesorType accesorType) in d:\\1tmp\\OCRReaderSolution914\\OCRReaderSolution\\OCRInteractionLibrary\\OCRInteractor.cs:Zeile 259."}],"OCRExitCode":3,"IsErroredOnProcessing":false,"ErrorMessage":null,"ErrorDetails":null}

<comment><USER7> Yep. -> Fixed.

</comment></comment><comment><USER12> Is it general knowledge that Microsofts OCR libs are better than Tesseract?

<comment><USER13> Does this imply you think Microsoft>Tesseract or are you asking what the consensus is?

<comment><USER12> I'm asking what the consensus is. In fact this is the first I've heard of the Microsoft offering.

</comment></comment></comment><comment><USER14> I'm really not a fan of the random highlighting of text, it just feels incredibly childish and slightly crazy.

</comment><comment><USER15> I wonder if the Microsoft OCR uses Stroke Width Transform - [http://digital.cs.usu.edu/~vkulyukin/vkweb/teaching/cs7900/P...](http://digital.cs.usu.edu/~vkulyukin/vkweb/teaching/cs7900/Paper1.pdf)

</comment><comment><USER16> Does anyone know who or what organization is behind A9T9? It seems the author/source is somewhat obscured. It would be important to know before using for more than a hobby project.

<comment><USER7> a9t9 here :-)

You find some information about me on [http://blog.a9t9.com/p/about-this- blog.html](http://blog.a9t9.com/p/about-this-blog.html)

(a9t9) is a place where I experiment with side projects, and I want to keep this separate from my day job. Therefore I am somewhat stingy with the personal information on the blog. That said, you are welcome to email me for details.

</comment></comment><comment><USER15> Is there some pre-processing done on the image prior to doing ocr on them and is this using Tesseract?

<comment><USER17> > _is this using Tesseract_

No, it isn't.

</comment></comment><comment><USER18> how can you create an API around this microsoft ocr library so I can just call localhost:3424/api/Parse/Image ?</comment>


No Javascript Day - <AUTHOR> http://shkspr.mobi/blog/2013/11/no-javascript-day/ <comment><USER2> No Javascript Day? Why not make it an eternity? I don't find it to be useful for anything which couldn't also be done another way.

His first example about webpages deliberately hiding content until some piece of javascript tells it to run is the most common problem when you run with javascript disabled.

In my experience the content is there fully formatted and laid-out but that some designer puts a "display: none" on a section so suddenly I can't see it. This can be fixed with ease using Firebug, I just disable or delete the offending style attribute. The javascript that the designer expect to be run does just the same thing. What is the point of hiding it by default? If you want it hidden, hide it using javascript when the page loads.

The more extreme example of entire pages being blank also happens. Google's own blogs and to a lesser extent the blog platform it bought (was that Blogger?) do this. If I get linked to a page that does it, I just leave. The content can't have been that good anyway. If it was you would want me to see it. Although you may have just wanted the hit to your page and because I just gave you that, why bother showing me anything?</comment>


Ask HN: State of e-paper? - <AUTHOR>

My google-fu proved inadequate when trying to research this topic. Most resources I found were trying to sell me something.
Can you enlighten me as to the current state of e-ink and e-paper products?
I am mainly looking at printers who let you print out to an e-paper. <comment><USER2> Do you mean "e-ink" and "e-paper" like in the Kindle? Or do you mean printable circuits?

E-ink and e-paper isn't really ink or paper. It's a display, that requires power (at least temporarily) and electronics to control it, like any LCD.

It's called "e-ink" and "e-paper" because, like ink on paper, whatever you program the display to show will stay there without power, and it will give you similar readability in normal lighting situations as ink on paper (if you had a thick pen on gray paper, at least).

As such, you can't "print out to an e-paper." The closest parallel would be "send to Kindle," that transmits a document over wi-fi or USB and has a program on the Kindle display it on the screen.

E-paper (bistable displays) development kits are generally available now at varying sizes from both manufacturers (like E-Ink) and distributors (like SparkFun or Adafruit). You can also readily disassemble many older Kindle and other e-readers and write your own programs to prototype things on their displays.

If you mean printable circuits, where something resembling an inkjet printer squirts out conductive metallic ink on a non-conductive sheet to make a circuit "board," I don't really know the state of that.</comment>


Ask HN: Which laptop to get? - <AUTHOR>

I need to buy a new laptop for development and some gaming, so I want a 'best'. I looked for 32Gb laptops but I couldn't find any (poor google fu?)
The default for a developer seems to be a MacBook Pro, which it may be upgraded this June according to rumours.
On the other hand, I feel I should try to escape Mac and use a Linux computer. Yes, I could install Linux to the MacBook Pro, but if I go that path I may as well get a different laptop.
Any recommendations on what machines should I consider? <comment><USER2> Have a look at the ThinkPad T and W ranges (440 and 450). The Dell Precision M3800 Mobile Workstation is interesting but only goes up to 16GB.

Does it have to be a laptop? A desktop will give you more power, more expandability, a better keyboard and screen, and much better ergonomics for a lower price.

</comment><comment><USER3> I'd get one of these when they do the Ubuntu version: [http://www.dell.com/us/p/xps-13-9343-laptop/pd](http://www.dell.com/us/p/xps-13-9343-laptop/pd)

I have the previous version, with Ubuntu, and it's a very nice machine.</comment>


German-designed 'smart' guns rerouted after cultural backlash in U.S - <AUTHOR> http://www.theglobeandmail.com/news/world/german-designed-smart-guns-rerouted-after-cultural-backlash-in-us/article22222138/ <comment><USER2> I own half a dozen firearms and I wish smart gun technology worked. The main problem with RFID smart guns is that they can be jammed. If such tech was required by law, any criminal with a jammer would create a zone where only they could shoot. This makes RFID guns useless for any sort of self or home defense. Likewise, police wouldn't be able to use them. There are similar problems with fingerprint reading. Reading a fingerprint isn't very reliable (dirt, cuts, etc), and the owner may need to use the gun while wearing gloves.

On the sort-of bright side, unintentional gun deaths are only around 3% of all firearm homicides. One could save many more lives by further restricting handguns. For example: make getting a handgun more like getting a private pilot's license. Unfortunately, such restrictions are probably unconstitutional.

<comment><USER3> > If such tech was required by law, any criminal with a jammer would create a > zone where only they could shoot.

I don't see why the system would do that. A "fail-safe" doesn't always mean failing closed; sometimes it means failing open. That is, if there is a jammer, then fall back to letting anyone shoot anyone, which is no worse than things are now. If there isn't a jammer, then let the law say who can shoot people.

(Yes, then anyone can buy their own personal jammer to make their gun "work." People can _also_ override those breathalyzer-meters that they have to blow into to get their cars to start. But, by-and-large, do they?)

<comment><USER2> Nice idea, but how does one reliably detect RFID jamming? This isn't rhetorical. I honestly don't know the answer.

<comment><USER4> "Jamming" usually works by putting out a bunch of energy on the same frequencies to overwhelm any actual signal. So, detect the overall amount of radio coming in, and turn off auth if it's too high.

<comment><USER5> But then you're left with a smart gun that's unlockable with a simple RF generator

<comment><USER4> Sure. So it only stops unsophisticated criminals. But they're mostly the ones that kill people.

</comment></comment></comment></comment></comment></comment><comment><USER6> I'm not typically a gun person, but this seems like a really flawed idea. As the article describes it, it's a gun that only works against an unprepared enemy. Anyone with an RF jammer could completely stop its use, if I understand it correctly. It wouldn't be much more complicated to make a device that could pick up its frequency from a distance and use it on a stolen weapon either. Of course some cryptographic exchange between the watch and the gun would fix that, but it still doesn't prevent you from jamming it.

In cases like many school shootings, where the gun was stolen ahead of time, all it does is require the culprit to steal the watch too. A physical key (old-fashioned or cryptographic) would do the same thing but more reliably.

The term "smart gun" brings to mind a development that I think most users of HN would agree is a bad idea. Making a gun that tries to automatically determine who's authorized to shoot whom, like a Dominator from Psycho-Pass, seems to open up a whole mess of problems. Making more reliable non-lethal weapons is the direction I'd rather see the problem attacked from.

<comment><USER7> _it 's a gun that only works against an unprepared enemy._

Quite similar to a normal gun then.

<comment><USER8> Tanks also only work against an unprepared enemy, but I think many will agree that tanks can still do lots of damage, even given the prevalence of armor- piercing munitions and anti-tank weaponry.

In practice, how many people are going to have RFID jammers, and how many of those will reliably work? I'm guessing that that'd be close to zero. Related, Psycho Pass is an interesting anime which goes into the issue of "smart guns" and the subversion of their safeguards. It's also a damn interesting series.

</comment></comment></comment><comment><USER9> I can't help but think that gun control activists have, pardon the pun, shot themselves in the foot with the New Jersey law:

 _Once a personalized weapon went on sale in the United States, the law said, then within three years, all guns sold in New Jersey would have to include such safety features._

How could they not have seen that passing such a law would impede advancements in gun safety by creating opposition which would not have otherwise existed (or at least to this extent), but for this law?

I suppose it is possible that gun safety was never actually the goal to begin with, but it still seems like such a predictable result, given the ferocity with which any real or perceived encroachment on the Second Amendment is met.

On the one hand, it's kind of amusing, in a way, to watch the instant, reflexive backlash which invariably erupts in response to even the slightest suggestion of tighter gun control. On the other, it might make some sense if one were inclined to take a conspiratorial view of the true purpose of laws like this one in New Jersey.

</comment><comment><USER10> Two problems with this:

1- It could be jammed by a 10 euro/dollar device.

2-The smart watch(via Patriot Act) is going to require the government has a back door or mechanism that could disable it remotely when the government wants it disabled, like they do with computer software and hardware.

The second amendment reason for existence is controlling the people in power against abuses on the people. Of course people in power want to get rid of it while militarizing the police(because hard times are coming).

<comment><USER11> _controlling the people in power against abuses on the people_

So how's that working out for you then? This story is right next to one on HN about NSA abuses, and there's the ongoing saga of police violence against black people. Is gun ownership somehow going to make a difference there? How do you expect armed politics to end other than incredibly badly?

The "government"'s usual device for disabling a gun is a bullet to the head of the person holding it.

</comment></comment><comment><USER12> The "nuts" in this story seem to have a very acute understanding of the legal and propagandistic climate in their country and the medium to long term implications of mandatory "smart" technology in personal handguns.

<comment><USER13> HN readers ought to too, at least those old enough to remember the so-called Clipper chip.

[http://en.m.wikipedia.org/wiki/Clipper_chip#Backlash](http://en.m.wikipedia.org/wiki/Clipper_chip#Backlash)

</comment></comment><comment><USER14> Of all the gun uses I am aware of among every person I have ever known, only one single bullet would have been prevented from leaving the barrel by a system like this.

That bullet killed a child and sent the (accidental) shooter to prison.

<comment><USER15> If accidental deaths are what you're concerned about maybe you should tackle this one beforehand.

[http://www.cdc.gov/homeandrecreationalsafety/water- safety/wa...](http://www.cdc.gov/homeandrecreationalsafety/water- safety/waterinjuries-factsheet.html)

Edit: compare that with the fact that in 2011 there were 600 accidental deaths from firearms.

[http://www.nssf.org/PDF/research/IIR_InjuryStatistics2013.pd...](http://www.nssf.org/PDF/research/IIR_InjuryStatistics2013.pdf)

<comment><USER16> Why wouldn't you do both?

<comment><USER15> Indeed why not ban everything that causes annual accidental deaths?

<comment><USER16> Why the strawman?

It's a question of tradeoffs. Making seatbelts mandatory was a major step in preventing accidental deaths. Ensuring that pools are safer (which doesn't necessarily mean banning them...) would also be beneficial. As for gun safety, what's wrong with investigating how to prevent instances of mass murders which by now make a regular appearance in US news, since apparently the pro-gun lobby is too strong to outright ban weapons? Not to mention children playing with unsecured firearms.

<comment><USER15> It's not a straw man, it's reductio ad absurdum.

[http://en.wikipedia.org/wiki/Reductio_ad_absurdum](http://en.wikipedia.org/wiki/Reductio_ad_absurdum)

Just to be clear, I think that people should have the right to purchase these RFID guns, but I think any sort of mandate requiring them is bad news for a number of reasons.

I'd be willing to investigate things like trigger locks or home safes or licensing IF we on the gun rights side of the discussion could get something too. Namely a repeal of the hughes amendment. Also this is something I think would be better dolled out state by state.

People here in alaska don't want the same things that people in new york or california do.

<comment><USER16> It's a strawman in the sense that it doesn't characterize my position correctly: in this case, I'm not pushing for "banning all the things", or even the things under discussion. Furthermore, I don't see how you can call mass murders "accidental deaths". They are all quite deliberate.

As for the rest, I'm afraid that being from the other side of the pond prevents me from being familiar with the various US gun laws...

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> What would prevent people from disassembling this, replacing a few parts and making new gun? Making hand gun is very simple once you have basic components, such as barrel and bullets.

I am worried that this will become yet another obstruction for gun holders. Germany (and EU) is crazy, pepper sprays or even pocket knives are banned. Neighbouring Czech rep. is more liberal and has comparable crime rate.

<comment><USER4> > What would prevent people from disassembling this, replacing a few parts and > making new gun? Making hand gun is very simple once you have basic > components, such as barrel and bullets.

Nothing, but why would you want to? The whole point is so you can buy a gun that only you can use (and not e.g. your kid). I guess a thief might still steal a gun and then disable the system, but making life harder for such a thief is a good thing even if it doesn't make it impossible (just like an engine immobilizer). But if you're worried about "bad guys", the point is just to stop accidental shootings. There's nothing in the system that would stop you _deliberately_ e.g. shooting a cop with one (as long as you had the wristband on).

</comment></comment><comment><USER18> This article is very reminiscent of "The Weapon Shops of Isher"\- it's always a strange feeling when the lines between science fiction and reality start to blur.

</comment><comment><USER19> Not really sure why smart guns have to be so dang hi tech? How about a gun that can't be left with safety off for more than 30minutes, and requires a pin-code to remove safety?

We can make pill jars impossible for 5year olds to open. How hard can it be to make a gun too hard to use?

<comment><AUTHOR> That sounds like a really good idea to me. No problems with jamming in that case. Obviously it wouldn't work in all cases, like for police officers who might need to use their gun at a moment's notice, but it sounds great for recreational and home-defense firearms.

</comment></comment><comment><USER20> Crazy. So in the name of "freedom", these gun-nuts want to deprive other people of the freedom to buy a safer gun if they want. I really wish they'll find a way to sell it anyway.

PS to all the gun-nuts dowvoters: Thanks for showing how you _really_ value freedom.

<comment><USER21> Nobody is against selling this kind of guns per se - people are against the laws mandating "smarts in all guns" that would be triggered, if this kind of guns become available.

</comment></comment><comment><USER22>
      They flooded the Facebook pages of both stores with angry comments; some even called in death threats, according to a video later posted by Andy Raymond, an owner of Engage Armament.

Thank god they are the ones with guns....</comment>


Theinfo.org - for people with large data sets - <AUTHOR> http://theinfo.org/

<comment><USER2> Here's a data set that needs scraping, if anyone has the time to spare: speeches and PR communications, esp. those from government officials. Visualizations of what talking points or ideas are spreading through what organizations (political parties, campaigns) and in what countries would be really interesting. Data mining to see which phrases or ideas "stick" in political blogs or on social websites would be neat, also.

</comment><comment><USER3> A very useful idea. Many databases can be such a pain to find, I'm sure most people don't know they exist.

Plus, I've got a ton of python for doing complex manipulations of sql data and schemas and scraping the web that I've been meaning to share. Will add some to this site.

</comment><comment><USER4> reminds me of swivel.com, a cool startup that allows you to "upload & explore" data. I talked to someone there and they mentioned comparing weather data to stock prices as an example.

</comment><comment><USER5> I hope their data visualization section matures.

</comment><comment><USER6> Cool. When we created Fantasy Congress we scraped the government in Java and then only afterwards did we find out that a friend of ours had scraped it in Perl years before and the Washington Post did it a year ago.

It would have saved us a lot of heartburn.

<comment><USER7> haha, is Arjun with you guys? tell him I said hi.

</comment></comment><comment><USER8> How cool is that? A cross-organization abstraction for the greater good.

</comment><comment><USER9> I don't like the font Aaron Swartz always use.

<comment><USER10> I guess he's doing alright if you only have to complain about the font :)</comment></comment>


Google's Internal AGPL Policy - <AUTHOR> https://opensource.google/docs/using/agpl-policy/ <comment><USER3> Google's allergic to copyleft licenses, so that's about what I'd expect. But smaller software companies, consider this a sign: want to be FOSS but don't want the tech giants to swallow your business? Go AGPL, they'll avoid it like the plague.

<comment><USER4> > want to be FOSS but don't want the tech giants to swallow your business?

I get the aesthetic and sentiment, but in practice this doesn't convey the reality. Having a business link or incorporate your open source software project isn't necessarily bad. At the very least, it's a social proof. There could be sponsorships, patches sent back.

There plenty examples of permissively licensed software out there that directly contradict this:

FreeBSD for Nintendo Switch and PS4, FreeNAS

Django, TypeScript, Jupyter. VSCode. Electron. Python. Ruby. CoreCLR. Windows Terminal.

Anyone of these projects, someone could fork it, rename it, repackage it as value added. It doesn't happen since the transaction incentivizes merging contributions upstream - maintaining forked code has passive costs. Pushing it back passes the burden (and also the benefit) of the changes back to the project.

> Go AGPL, they'll avoid it like the plague.

I feel when we're thinking about gatekeeping who and uses our software and why, we're not really doing open source anymore.

In that case, writing commercial software license from scratch, or based off a permissively licensed project, and not releasing the source is an option.

<comment><USER5> I license all of my software AGPL and the reason I do it isn't gatekeeping or some theoretical argument about what software is. It's because I have put a large amount of effort into this product and decided to release it for the benefit of the community. I would feel taken advantage of if a company came in and hoarded that software while making a profit off of it and never giving back. The free market is great and all, but it's also OK to just ask that people give you a fair deal when they use your code.

<comment><USER6> If a company took your code and made a service people like and enjoy with that code, how is that not benefiting the community? The bsd licence gave us the iPhone. Doesn't that benefit mankind?

<comment><USER3> Its users may like and enjoy it, but only ever as users. The community has lost the right to shape the project as they wish. The software becomes a tool of influence over its users. I don't think that benefits them.

> The bsd licence gave us the iPhone. Doesn't that benefit mankind?

The BSD license gave Apple a start to build the iPhone; Apple gave us devices that we aren't given full access to even though we ostensibly own them. No, I'm not sure that's a net benefit for humanity.

<comment><USER6> There is the option of buying Android. If people choose the iPhone it's because they don't care about having full access to the phone, or even see that as a positive because of malware concerns. So if so many people freely buy iPhones, it's because they like them.

</comment></comment></comment></comment></comment></comment><comment><USER7> This is how RStudio and certain other great open source tools get bigcos to pay for licenses. They are allergic to AGPL and therefore will happily pay for alternative licenses for tools their employees demand.

</comment><comment><USER8> Same thing inside Amazon. GPLv2 on a case-by-base basis, AGPL/GPLv3: don't even ask. BSD/MIT: Go hog wild

<comment><USER9> ... and if it's got enough mindshare to be worth having, but is AGPL or some other "too restrictive license", just reimplement (probably an old version of) it's APIs from scratch, and use misleading marketing weasel-words to lock in your existing users of other services who aren't paying enough attention. <smirk>

</comment></comment><comment><USER10> I wish it was easier to monetize free software. I am making an Indy game right now and it is hard enough to make money already with 7k+ games coming out per year (plus, my third party assets don't have a license that allows redistribution in such a way)

<comment><USER11> > I wish it was easier to monetize free software.

Well, you might ponder over this line from the policy:

> In some cases, we may have alternative licenses available for AGPL licensed > code.

</comment></comment><comment><USER12> > any product or service that depends on AGPL-licensed code, or includes > anything copied or derived from AGPL-licensed code, may be subject to the > virality of the AGPL license

I'm not a lawyer, but my understanding of the AGPL was that its virality only applied to changes to the software, or software that was directly linked to it. So if a product A used an AGPL licensed service over the network, that would not require that A also be licensed as AGPL.

</comment><comment><AUTHOR> The main reason I don't release with AGPL (and similarly red flagged licenses) is so that corporations can adopt the project.

<comment><USER9> That's a perfectly valid choice.

Other people's choice to avoid corporations from adopting the project without giving anything in return is also a perfectly valid choice.

(You have a higher chance of having your project become globally used, other people value that less than pull requests and/or money. And that's fine.)

<comment><USER13> The AGPL burdens you with requirements related to simply running the program, even if you're not a money-making corporation.

Say you want to put up some wiki or something, for some volunteer organization of yours. If you run some AGPL thing and customize it in any way, you're burdened with having to serve everyone the code.

Come on, are you saying that if some corporation uses your program that took ten man-years of effort, and re-distributes the code due to making some trivial one-line change, then they have given something adequate in return?

If you don't like corporations using stuff for free, then just put a proper shareware license on it: "free for non-commercial use".

The motivation for the AGPL isn't about giving back to the community; it's just a wrongheaded attempt to attack the problems caused by SaaS. Namely, that users are tied to using programs whose installation is on remote equipment they don't control, and whose behaviors are a blackbox.

<comment><USER9> > you're burdened with having to serve everyone the code.

Yes, if that's the option the author of the code chose. You are free to choose some other code, or write your own. You have zero entitlement to use somebody else's code under conditions that suit you, over the wishes of the author. It makes no difference whether the author(s) chose AGPL for reasons you like it not, or if they did it out of philosophical purity or spite. They get to choose. You get to choose whether to use their code or not under the rights and conditions they grant you. Google have clearly worked this out and codified it in their policies. If you think that's putting some overly heavy burden on you, that doesn't change anything. Choose some other code or write some yourself. Nobody owes you the right to use their code. Sorry.

<comment><USER13> > _You have zero entitlement to use somebody else's code under conditions that > suit you._

Note that this sort of rhetoric is eerily familiar from the world of proprietary software; and is largely absent in truly free software contexts (BSD, MIT, ...). When similar entitlement talk comes up, it's usually in terms such as not being entitled to free support (coding or whatever) in regard to something available "as is".

<comment><USER9> > and is largely absent in truly free software contexts

I curious about what you mean by "truely free software"?

My impression is there's a divide in "non-proprietary" software philosophies, with Stallman out one end of the bellcurve on the "free as in speech" side, and perhaps ESR out toward the other end closer to "free as in beer". That's also close to the divide between "free software" and "open source software" in my head. There re people who are perfectly happy to give huge codebases away with almost no restrictions (for me the champion of this would be Larry Wall and the Artistic Licence/GPL dual licensing he uses for perl), while there are other people who are more politically or "freedom" motivated (like Stallman, who champions AGPL like viralality because he believes its "right" and "socially good").

Trying desperately to escape either of those outcomes are organisations (for whom I have a lot of sympathy) like MondoDB and RedisLabs, who are trying to build business models around large/expensive codebases and getting undercut by "the cloud industry" who've found legal but probably unintended holes in the licenses they released under. I don't know if RedisLabs' RASL or MongoDB's SSPL will work out long term. I kinda hope they do, because I think it'll allow a new kind of OpenSource/FreeSoftware to exist - projects the require a team of engineers getting salaries paid to do the engineering - <USER2> software to be created on a scale that loosely connected groups of individuals are unlikely to be able to achieve. (I know the Linux kernel is an obvious counter-example to that claim, but it's an outlier in the vast sea of open source and free software projects out there.)

(And, regardless of the implications of works like "rhetoric" and "entitlement", I can't see how _anybody_ could argue against a code/project author being able to use whatever licensing they choose - including whatever restrictions that places on people who want to use that code. Copyright law allows them to refuse you to use their code at all. Any further rights they grant you in a license are not something almost any other creative industry grants. Nobody realistically complains about the burden LucasFilm is imposing on them by the choice of what rights they grant you to use StarWars copyrighted story/theme/images/whatever - you can't show StarWars to people for free just because you're a volunteer or non profit organisation. Why should someone else's C/Python/Java/Rust code be any different?)

<comment><USER13> > _curious about what you mean by "truely free software"?_

"Free to do whatever you want, other than perpetrate plagiarism of the source code by removing or replacing the author's identifying marks."

A good "is it truly free" litmus test is this question: is it attached to an ideology which is rooted in preventing the existence of some kinds of software in the world which bother the ideologists?

If so, it's probably not truly free software.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Many viral licenses are just demands for payment by other means. It's not really surprising to see companies recognizing it and refusing to pay the asking price.

<comment><USER15> Yes, the payment is that you must contribute your changes back to the project.

<comment><USER16> Dual-licensed code may be distributed with different restrictions to a paying customer.

<comment> gary-kim That's only possible if one entity has the rights to the entire codebase.

Personally, almost all my software is released under the AGPL and there is no CLA so it cannot be dual-licensed, which is how I want it.

</comment></comment></comment></comment><comment><USER17> > Do not attempt to check AGPL-licensed code into google3

What is this "google3" thing? Is this the name of their monorepo?

<comment><USER15> Yes.

</comment></comment><comment><USER18> Google: Unless we can get your free labour, we don't want your stuff.

</comment><comment><USER19> Google also recoils from WTFPL, which may make it a more palatable license for folks who don't agree with the AGPL's various quirks and features. Not that AGPL is bad, but WTFPL is quite bare-bones.

<comment><USER20> Presumably because using it is terribly reckless. It doesn't even contain a standard disclaimer preventing the user from suing the distributor or copyright holder.

<comment><USER21> You want the WTFNMFPL instead: [https://tldrlegal.com/license/do-what-the- fuck-you-want-to-b...](https://tldrlegal.com/license/do-what-the-fuck-you- want-to-but-it's-not-my-fault-public-license-v1-\(wtfnmfpl-1.0\))

<comment><USER22> I can't find either on this list [https://opensource.org/licenses/alphabetical](https://opensource.org/licenses/alphabetical)

<comment><USER21> The OSI isn't the arbiter of all things.</comment></comment></comment></comment></comment>


Elliptical Propeller (2009) - <AUTHOR> http://rexresearch.com/lippsprop/lipps.htm <comment><USER2> Marvin Antelman is a crank, with a fondness for loony patents and a unshakable belief that his special silver compound can cure cancer and AIDS: [http://www.rexresearch.com/antelman/marantech.htm](http://www.rexresearch.com/antelman/marantech.htm) [http://www.rexresearch.com/antelman/silverox.htm](http://www.rexresearch.com/antelman/silverox.htm)

Fortunately, he'll sell it to you for only $15 a gram.

<comment><USER3> I don't feel this reflects on the article itself, although a better link would set off fewer red flags.

I think the article "looks more legitimate" as an archive.org link to the experimental aircraft association web site: [https://web.archive.org/web/20140416074216/http://www.eaa.or...](https://web.archive.org/web/20140416074216/http://www.eaa.org/experimenter/articles/2009-02_elippse.asp)

<comment><USER2> Oh! So this submission is just a pagerip of someone else's content? I hadn't noticed that.

<comment><USER3> Yep. Totally reasonable to be dodgy about a link on a crank site. Engineering looks legit to me though (I have zero experience in the field). That said it's gone from the site, although the author has posted a bunch of articles.

</comment></comment></comment></comment><comment><AUTHOR> I put Paul Lipps in the original submission title since he was the original author. His web page is not up anymore, so it's on some less than reliable site. The moderators' change lost that info.

It's related to the popular article by Robert X. Cringely. He advocated Lipps' ideas for wind energy, with previous discussion here: [https://news.ycombinator.com/item?id=11643410](https://news.ycombinator.com/item?id=11643410)

Sadly not realized after Lipps died. However, with Lipps describing his thought process here, it seems likely that it would be possible to repeat it / learn from it.

I guess optional comment fields for links have been considered and decided against.

<comment><USER4> You just used the optional comment field for the link.

</comment></comment><comment><USER5> [http://propellersexplained.com/](http://propellersexplained.com/)

</comment><comment><USER6> Could not get past the obnoxious ads.

<comment><USER7> Likewise, completely unusable on a mobile. The whole page took ages to even render (on wifi) only to instantly start jumping around to fit in ads.

</comment></comment><comment><USER8> Mechanisms on this scale would seem relatively easy to test and compare. He's trying so hard to sell all the positive qualities of his propellors..... if they are so awesome, wouldn't they be easy to sell?</comment>


Howto: Change default browser/email client in OSX - <AUTHOR> http://diffract.me/2009/07/changing-default-browseremail-client-in-osx/

<comment><USER2> This is ultimately set in the low-level domain "com.apple.launchservices". So although the article warns against deleting Safari or Mail, it is possible to use the command-line "defaults" program to fix this setting at any time.

Also note that the domain holds _all_ URL handlers, allowing you to set up ones that may be less common, such as ssh, sftp, telnet or news.

<comment><USER2> I also meant to add, that there are GUI panes like RCDefaultApp that provide access to the wealth of settings in Launch Services:

<http://www.rubicode.com/Software/RCDefaultApp/>

For example, mapping file types, URLs, MIME types, etc.

</comment></comment><comment><USER3> What the hell does this have to do with HN???

<comment><AUTHOR> Well, since it's an option that might not be completely clear it might (almost) be considered a hack ;)</comment></comment>


Ask HN: Is Sigapore a good place to work as a developer? - <AUTHOR>

<comment><AUTHOR> @hhandoko: I'm a programmer at an international school. My day to day task is to making sure the websites running and developing new features. But the thing is it seems like I'm getting bored and want to jump into something big in a different country but not far from Vietnam. Singapore looks like an ideal location.

</comment><comment><USER2> It's a really open-ended question.

To help others answer your question, do you mind sharing a bit of background / context and your own expectations?

</comment><comment><AUTHOR> How is the tech community there compare to other places like Vietnam?

</comment><comment><USER3> Don't spit on the ground or chew gum, you will be caned (flogged).

<comment><USER4> Surely you mean throw chewing gum on the ground?

<comment><USER5> [https://en.wikipedia.org/wiki/Chewing_gum_ban_in_Singapore](https://en.wikipedia.org/wiki/Chewing_gum_ban_in_Singapore)</comment></comment></comment>


Conflict Over How Open 'Do Not Track' Talks Will Be - <AUTHOR> http://www.nytimes.com/2012/03/30/technology/debating-the-path-to-do-not-track.html

<comment><USER2> Nothing like a little techcrunch in your HN.

You should really re-title your submission. You do the community a disservice when you turn to intellectual dishonesty to fan the flames (which don't even need any help here anyways).

<comment><USER3> At this point, I'm just flagging articles with sensationalized titles, no matter the content. We as a community need to enforce a standard of conduct for submissions, or it'll continue to get worse.

</comment></comment><comment><USER4> >The advertising group, however, defines it as forbidding the serving of targeted ads to individuals but not prohibiting the collection of data.

Astounding.

</comment><comment><USER5> If I'd had a site that lived off ads, and someone would come with a Do Not Track option, I would display a "Then get the hell out of my site" message.

Collecting data is fine, as long as it's handled reasonably. What Washington should be focused on is what happens to the data after it's been collected? what control do I have over my own data? These are far more important than what they are currently focusing on, of coure the advertising group is deliberately misleading the debate.

</comment><comment><USER6> Submitted for your perusal:

"As Internet privacy has become a bigger issue in Washington, technology companies have been increasing their lobbying. Google and Facebook recently bolstered their lobbying teams. _Google hired Susan Molinari, a former New York congresswoman. Facebook hired Greg Maurer, a former aide to House Speaker John Boehner._ "</comment>


Ask HN: How to find startup jobs? - <AUTHOR>

Hey HN, I'm trying to find startups, early enthusiastic, developers and business development folks to create new websites with in the Bay area... the question is though, how do you guys do it? Most of the early startup gigs aren't exactly dice or monster material. <comment><USER2> Start attending meetups on meetup.com, there is a lot of interesting things happening on there. You can get connected to a lot of like-minded people, and take it from there. If you write your skillsets and interests in general, I know a few folks in my circle are looking for hackers to join their venture, so I can connect up.

<comment><USER3> I second this opinion. Start attending meetups. That will widen your network and you surely have more awareness on what other events to follow. Eventually, you'll end up in a group of hackers and startup founders.

<comment><USER2> BTW, I am part of this meetup called 'Hackers & Founders' which is exactly meant for that.

</comment></comment></comment><comment><USER4> <http://news.ycombinator.com/jobs>

</comment><comment><USER5> hotstartupjobs.com

twitter.com/startuplyjobs

authenticjobs.com

jobs.mashable.com

crunchboard.com/jobs/

punctuative.com/vcdb/

</comment><comment><USER6> startuply.com, craigslist.org

</comment><comment><USER7> google H1b

<comment><USER8> I think he doesn't have visa issues

<comment><AUTHOR> No, born and raised in socal.</comment></comment></comment>


AngularJS Performance in Large Applications - <AUTHOR> https://www.airpair.com/angularjs/posts/angularjs-performance-large-applications <comment><USER3> Pretty good article, especially in regards to the $digest cycle which can cause some performance migraines. This is something I have seen newbies in Angular encounter pretty quickly, too many watchers and mistakenly triggering tonnes of $digest cycles.

Regarding point 7.1 - sometimes in my experience, an application might have many elements inside of an ng-repeat which cannot be avoided. It is one thing to say keep your lists small, but when you're dealing with a whole bunch of data that is loaded in via an infinite scroll, you can't just stop the content at 50 results.

Honestly, the only solution the team I currently work with have come up with is using React.js (swapping out Angular for React completely would be too expensive). If you take the heavy UI work away from Angular and use React.js, it honestly makes your lives easier. Even just for rendering a whole lot of content inside of an ng-repeat, you will see the performance issues vanish. Using track by in your ng-loops will also save you more migraines.

Don't get me wrong, Angular without-a-doubt has some issues, but there hasn't really been an issue that the team hasn't been able to work around so far. Most issues you encounter in Angular are caused by a limited understanding of the framework and its strengths. The documentation is pretty bad, but you find the more you use Angular, the better you get at it.

Most of the limitations you encounter in Angular, they are in every single other front-end framework as well. This is because browsers currently do not support some of the niceties in ES6 and many of us have to support older browsers like IE9, etc. But even so, ES6 won't fix everything, but it will make things a lot less painful. Things are getting better, but front-end frameworks are just a little too ahead of their time at the moment.

While Angular has issues now with performance (mainly two way binding and watching) when ES6 is supported in Angular 2.0 and object.observe() is used, we are going to see a dramatically more powerful framework without all of the dirty checking Angular currently has to make binding and watching work. This will be the case for other frameworks like Knockout and Ember as well.

<comment><USER4> We managed to get a twenty percent speed up in our app that used Angular...

...by removing it and using something bespoke and lean and simple instead!

<comment><USER3> Not everyone has the luxury of throwing away one years worth of work and choosing something else.

Once you understand how Angular works internally and not just in a tutorial sense, it can be very powerful. Most of Angular's quirks can be worked around using common sense, and as in some cases, using the right tools, understanding Angular isn't a silver bullet goes a long way too. The issues my team encountered won't be encountered by everyone, we were dealing with potentially thousands of items being in the page caused by infinite scrolling.

I get that some people think Angular is difficult, learning the basics is easy, learning how to use Angular the right way is the hard part. I think a lot of the issues people encounter using Angular are due to their own limited understanding of the framework. The documentation leaves a lot to be desired, but there are a lot of good blog posts out there like this which tell you upfront the issues and best practices.

The beautiful thing about Angular is that it is not difficult to get it to shows its warts, so you can work around or fix them. Combined with Batarang, you can get a pretty insightful look into your application and where you can improve it as well. A lot of the issues we've encountered were due to the fact someone on the team did something wrong expecting it to work, not Angular itself. Like a good woodworker, you've got to go with the grain, not against it.

I think if our application were being built from the ground up today, the team unanimously agrees that we would use something like React + Flux. But in our case, the business wouldn't be too happy with us throwing away old unit tested and battle-tested code in favour of something new and lean for the sake of a few milliseconds of browser performance.

<comment><USER5> > _Not everyone has the luxury of throwing away one years worth of work and > choosing something else._

Also known as the "sunk cost falacy": we've invested so much in working with the wrong stuff, we can't give it up now...

<comment><USER6> Sounds like my car. I have spent enough on keeping it running in the last year, I might as well pay for yet another repair.

</comment></comment></comment></comment></comment><comment><USER7> By comparison, it seems that the equivalent article for a React application would be "use immutables and PureRenderMixin", full stop.

I've been developing with React for the past several months and the idea of going back to Angular is already painful.

I've been looking for opinions on why Angular would be preferable to React. I haven't found any; can anyone else who's used both comment?

</comment><comment><USER8> Nit-pick, but I don't agree with his definitions of complexity.

>>> The second reason software is slow is known as space complexity. This is a measure of how much 'space' or memory a computer needs to run your solution. The more memory required, the slower the solution.

Requiring more memory doesn't make an application slower by default. It simply means it requires more memory to run as expected.

Similarly, when he's talking about run time complexity, he calls it "a measure of how many comparisons a program needs to make to achieve a result". It can be any action, not necessarily a comparison. Be it number of times cycle needs to be executed, number of expensive calls to external service, etc. Number of comparisons to make is commonly used in introductory courses when studying sorting algorithm but doesn't make much sense without a context.

<comment><USER9> Also disagree with

      > 6.2 Watching Functions
      >
      > Another common problem is the utilization of functions
      > in watchers or bindings. Never bind anything (ng-show,
      > ng-repeat, etc.) directly to a function. Never watch
      > a function result directly. This function will run on
      > every digest cycle, possibly slowing your application
      > to a crawl.

A while ago this sort of advice was true (when you'd see people inlining stuff in `eval` to avoid this), but nowadays function execution itself is very fast.

You don't want to watch a slow function, but just watching a function will not "[slow] your application to a crawl."

Interesting post, but I'd take this author's advice with some salt.

<comment><USER10> I disagree strongly as well. For example if you have something like ng- show="is_admin()" and $scope.is_admin = function() { return $scope.logged_in && $scope.role='admin' } or some other complexity reducing function, I don't understand how that would be significantly less performant than copying and pasting the return statement everywhere in your html.

</comment></comment></comment><comment><USER11> Can somebody explain me what "large Applications" are?

I read it many times, but when i compare it to the "little" Tools i write for my company, it seems that this "large" Applications are really really tiny.

So what did you understand under large Applications?

<comment><USER12> Large should be at least 80k lines of code, preferably more than 100k.

Another metric I go by is there is no one on team have overlapping knowledge of the code base. In other words, no other teammate is suited to review your code because they have no context of it.

<comment><USER13> By the second metric, Google is not a "large" software system because all code must be reviewed by someone with context on it. (Single-developer projects and codebases don't get anywhere at Google...I tried, multiple times.)

I think a decent definition is "software where no one person has the whole system in her head", i.e. where reading existing code takes as least as much time as writing code, and any change may have unforeseen ramifications on the system as a whole.

<comment><USER14> > Single-developer projects and codebases don't get anywhere at Google.

As a Googler working on a single-developer project / codebase, I'm sorry to hear that you didn't get traction. Very grateful for my mostly autonomous role :) There are tradeoffs of course, but to me the reduced overhead of no meetings and greater creative control are worth the trouble of an increased workload and providing support.

<comment><USER13> Good luck. I really loved the experience as well, it's just that the project got canceled when my management sponsor moved to a different department and his replacement was like "No more one-off projects." The funny thing is - I'd been warned by some very senior and very accomplished (outside of Google) people that independent projects basically never launch, but since my manager was very supportive, I'd discounted the warnings.

</comment></comment></comment></comment></comment><comment><USER15> A couple of times, the article mentions using:

> services and object references to propagate object changes between scopes.

There are so many ways to wire things up in Angular -- references, watches, broadcast/emit -- that I'd love to see some examples from the author, who seems to really know what he's doing.

For example, say I have a `userService` that maintains a small `user` model with username, name and roles properties. What's the most performant and maintainable way of "binding" to changes to this object so when I call, e.g.: `userService.logout()` somewhere, some component I write can pickup the change and adjust it's state / UI accordingly?

<comment><USER16> I think the only way to do what you want with your service is by injecting rootScope and using $emit, since we're trying to capture a "logout" event and tell our other controllers about it.

Reacting to the specific event would likely waste less resources than pulling out the $watch or $watchCollection sledgehammer.

</comment></comment><comment><USER17> If you aren't going to use $scope.$watch, you might want to ask why you're using Angular in the first place. From my own experience building a large-ish hybrid mobile app in Angular, I haven't run into any performance issues. While you should of course understand the implications of how you structure your application, I would also warn against premature optimization. I advise building first for simplicity and ease of maintenance and then tweak for performance if needed.

</comment><comment><USER18> Common things I have encountered:

$scope.$watch()ing large arrays unnecessarily will be the death of you

Using ng-show where there is complex render logic in that element, consider ng-ifs to remove from DOM completely

Using track by in ng-repeats can help

We had simple screens which would hide any symptoms of bad practices but once you have an 'overview' screen with 10 different lists, many different show/hide forms etc the page can get slow very quickly.

</comment><comment><USER19> There is some good info here. But when your Angular app slows to a crawl, it won't be because you used objects instead of arrays.

</comment><comment><USER20> What's the current best guide for learning AngularJS? Is angularjs.org my best bet, or would you recommend some other resource?

<comment> squeaky-clean I've been using this SO answer[0] as a list of good resources. The egghead.io videos have been most helpful to me, I really enjoy the "bite-sized" videos style and the way the speaker explains how attributes/vars relate to others in the application. Here's their specific page for beginning AngularJS.[1]

[0] [https://stackoverflow.com/questions/14333857/how-to- master-a...](https://stackoverflow.com/questions/14333857/how-to-master- angularjs)

[1] [https://egghead.io/articles/new-to-angularjs-start- learning-...](https://egghead.io/articles/new-to-angularjs-start-learning- here)

</comment></comment><comment><USER21> "application error" ...is this site written in angularjs? If so I think we have the answer to that title! :)

<comment><USER22> haha if it can't host a simple blog.... then can it really scale?? ;)

<comment><USER21> I'm praying for this blog to be Wordpress as I've just started a project in angular!!

<comment><USER8> Angular performance has nothing to do with handling a lot of traffic.

<comment><USER21> It was a joke...

</comment></comment></comment></comment></comment><comment><USER23> If anyone, like me, didn't know about 'track by' as a way to optimize ng- repeats, here's a couple of articles that explain what it is and why it's beneficial:

[http://www.codelord.net/2014/04/15/improving-ng-repeat- perfo...](http://www.codelord.net/2014/04/15/improving-ng-repeat-performance- with-track-by/)

[http://www.bennadel.com/blog/2556-using-track-by-with- ngrepe...](http://www.bennadel.com/blog/2556-using-track-by-with-ngrepeat-in- angularjs-1-2.htm)

</comment><comment><USER24> 9.4 seems to be an outdated issue. Since version 1.2.16, $rootScope.$broadcast does not go to all child scopes, only those with a watcher. It's very fast, and perfectly fine to use if you need it.

</comment><comment><USER25> This is still fairly applicable for the major causes of speed and slowness.

[https://www.exratione.com/2013/12/considering-speed-and- slow...](https://www.exratione.com/2013/12/considering-speed-and-slowness-in- angularjs/)

My impression is that Angular-specific issues are way more important than pure Javascript speed concerns in terms of relative impact on an application. Number of watchers and ng-repeat declarations are the most important aspect of an AngularJS application.

</comment><comment><USER26> I disagree with 9.4 as I think you should try to use event emitting more. This is the best way to modularize your application and really separate your concerns.

For example, given a service in charge of dealing with the a part of user's data. All mutations should be done through the helpers given by the service and then it should emit an event telling everyone subscribed to deal with it and update themselves.

Doing it this way, you maintain much more sanity when you have to create a really reactive application.

<comment><USER7> Interestingly, this is essentially the React/Flux model in a nutshell.

</comment></comment><comment><USER27> >Similarly, Angular provides the ability to watch entire objects by passing a third, optional true parameter to scope.$watch. This is, for lack of better words, a terrible idea. A much better solution is to rely on services and object references to propagate object changes between scopes.

How am I supposed to then propagate these changes into the DOM if I'm not using $watch?

</comment><comment><USER28> uh... re Loops: "Try and avoid making calls in a loop." This is an over simplification. The author draws the wrong conclusion from the example given:

        for(var x = 0; x < 100; x++){
          var keys = Object.keys(obj);
          sum = sum + keys[x];
        }

The problem here is needlessly invoking the same operation 100 times (Object.keys).

<comment><USER6> I assume he was just explaining it badly.

</comment></comment><comment><USER29> Seems it is down, Google Cache: [http://webcache.googleusercontent.com/search?q=cache:www.air...](http://webcache.googleusercontent.com/search?q=cache:www.airpair.com/angularjs/posts/angularjs- performance-large-applications)

</comment><comment><USER30> Large and small are fuzzy metrics. A subset of non binary thinking (see Kosko, the model of probability and the hypercube, etc). "Jeremy is short," well - <USER2> a 5'0 person, I'm freaking tall.

To Yao Ming, I'm short. Trouble is, we each of us technologists tend towards introversion (been struggling since...well, take my age and then subtract however many years my communication skills were less than stellar).

Ever try to raise money for an idea based on numbers? It's like trying to land a date based on the size of your...real estate. Sooner or later, another yutz shows up, plops _his_ drink on the counter and announces that the yacht he just stepped off was twice the size of yours.

Ya, it's never a fun game because it necessitates that binary outcome. Suffice to say good tools in the wrong hands can still be used to chop off your own feet if you don't pay attention.</comment>