A Dive Into The Lending Club Data - <AUTHOR> http://100mdeep.com/ <comment><USER2> I build statistical models for banks which help assess the risk of a loan. Effectively, my models will get converted into the grades (A, B, C, D, etc.) mentioned in the article. The strategies (second chance, family guy, safe haven) are generally consistent with experiences from the portfolios of most financial institutions.

However, I am skeptical (prove me wrong) of the statement in the article - "Lenders get a return on their investment that is typically much better than traditional Certificate of Deposit or Saving Accounts". In finance terms, I will be surprised if they have a higher RAROC [1] as compared to large banks. If they really do, then congratulations (you will put banks out of business in a few years)??

[1] [https://en.wikipedia.org/wiki/Risk- adjusted_return_on_capita...](https://en.wikipedia.org/wiki/Risk- adjusted_return_on_capital)

<comment><USER3> Your background sounds interesting! I'm working on bringing a credit card to the subprime market. Would be great to connect with you.

<comment><AUTHOR> Hey, i'd love to have a chat. PM me at firstname.lastname@example.com and let's talk

</comment></comment></comment><comment><USER4> The employment length is really bugging me. I've always selected people with a few years at their current job, leaning towards higher, because it feels safe, but this says that <2 years of experience is better than longer! I wonder if they're "newer" so more likely to stay around and not be pushed out, or if the rates are much higher compared to a marginal increase in risk. I'm leaning toward the latter. It looks like income has the same effect for home loans; <50k has a much higher return simply because they get a huge rating hit.

My other big hit is 3 versus 5-year terms. Anyone here care to comment? I like the 36 months because it feels more liquid and when I started I wasn't sure LendingClub was going to be around for a decade or more. Beginning to think I should reconsider that stance.

<comment><AUTHOR> Also, it's pretty instructive to look at the Lending Club grading algorithm in details.

They made it public at some point. Now they are a little less transparent about it.

But some details can be found in their SEC prospectus.

I can link that up as well if you guys want.

<comment><USER5> I'd love to see any info.

Their current offering document is here[1], but I don't see much mention of specifics. There's some detail on mapping to grades on p42 of the Aug 22 doc, as well as interest rates charged for each risk category.

[1][https://www.lendingclub.com/info/prospectus.action](https://www.lendingclub.com/info/prospectus.action)

<comment><AUTHOR> I have some details somewhere on my drive. PM me and we can talk

</comment></comment></comment></comment><comment><USER6> Nice post. I see that you used dc.js, could you share some code ?

<comment><AUTHOR> The code to process the lending club data is done in python. I got the full history of all payments made on the platform and pre-process it to have something that's light enough to be explored with a good user experience.

For the viz', yes I used DC.js, I can open source the .js if you guys want it.

<comment><USER7> Hi Clement, very neat dataviz ! How did you get the full history of all payments ? Is it available in the open ? What is 100mdeep btw ? Just a blogging site you are bootstraping or any plans to make a living out of it ? (We met a few months ago @ ToucanToco...)

<comment><AUTHOR> 100m is the depth human can free dive to. Without any aid. Without any fins.

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

Tribute to people who go deep into things ;).

<comment><USER7> Nice image! I'm a big fan of Guillaume Nery, the french free diver (4 word records). Actually Constant weight divers are allowed to use fins (monofins most of the time), although they use it only to get to ~30m deep, after that point, the pressure is such that the volume of the body decreases and Archimedes thrust is no longer sufficient to compensate for the weight... so the diver can descend without any mouvement... It's very impressive to see ([http://www.liveleak.com/view?i=d4a_1244462128](http://www.liveleak.com/view?i=d4a_1244462128)).

Funny to read about this a few days after Guillaume Nery's accident: a line was set to the wrong depth causing the diverto dive to -139m/456ft instead of -129m/-423ft that he had announced the night before...

</comment></comment></comment></comment></comment><comment><USER8> Thanks Clement for this beautifully simple dc.js dataviz. How long did you play with it before finding the pearl? Do you think there are yet other pearls to find in your tool?

<comment><AUTHOR> There are many pearls to find. It depends on your 'set of preferences'. You want return? you want low-risk ? you care to deploy a lot of money, or not that much?

But I'd say that for starter, anything in the 8%-9% range is a very good deal these days in this environment

</comment></comment><comment><USER9> Very useful tool. Gives valuable insight on how to select filters in portfolio construction. If "the Pearl" was a existing product, I would definitely invest in it.

<comment><AUTHOR> Look for the Pearl! you can definitely get 8% interest over the long run with a good liquidity on your cash deployed. To me, it's totally worth it for money that you don't need in the really short term

</comment></comment><comment><USER10> This is great. I have been using LendingRobot lately. I will have to rethink some of my strategies based on what I see in this article.

<comment><USER11> For my own personal interest, can you speak at all on your experience using LendingRobot? (successes/misses, use duration, gains, etc)

<comment><USER12> I've been using it for about a month and its one of the better LendingClub auto-investors out there. By far the best interface, but the fee is a little steep, though the fee only takes effect after investing 10k though them. I've rolled my own auto-investor in the past and used the one on NSRPlatform(free for accounts <20k). I'm planning switch over to LendingRobot 100% when I can't use NSRPlatform for free anymore.

Here's my shameless referral for lending robot [https://www.lendingrobot.com/ref/YehMn307/](https://www.lendingrobot.com/ref/YehMn307/) (you get 10k free, I get 5k more free)

<comment><USER11> Thanks! Any recommendations for someone looking to get into this space, especially in terms of things you had wish you knew starting off? (I'm looking at this as a "long shot" diversification of a portion my savings, allocating a comparatively very small amount and going entirely hands off)

<comment><USER12> I have all my LendingClub funds in a Roth IRA so I don't have to deal with any of the tax loss/gains stuff. I've heard the tax accounting can get tricky in normal accounts, so I highly recommend putting your LendingClub funds in a tax-advantaged account.

As for filtering and stuff, you can you do your own underwriting(loan risk analysis) with the data lendingclub provides[1], or use [https://www.nsrplatform.com](https://www.nsrplatform.com), which has a nice GUI tool to explore the data with you're own filters. LendingClub has a JSON api, so you can an order executer for yourself. (Here's the remnants of the one I was working on [https://github.com/gtremper/LoanInvestor](https://github.com/gtremper/LoanInvestor). P2P-Picks was a 3rd party underwriter that isn't available anymore). I've noticed that the D and E loans tend to be the best balance of risk and return

Also, be aware that you'll need to continuously buy new notes as payments come in to your account, otherwise you'll build up cash rather quickly. That's why these auto-investing services are so useful. Its best to buy only $25(the minimum) per loan so you can spread your risk among as many notes as possible.

[1] [https://www.lendingclub.com/info/download- data.action](https://www.lendingclub.com/info/download-data.action)

</comment></comment></comment></comment></comment><comment><USER13> Hm, this has sparked my interest in lending via Lending Club. I'll check this out for sure.

</comment><comment><USER14> I operate an online crowd-lending analytics and automation platform PeerCube https:/www.peercube.com. I have been analyzing both Lending Club and Prosper data for my institutional clients for almost 4 years now. While OP made a good first attempt on analyzing the data, the analysis suffers from two major shortcomings that I normally see from people getting started with data analysis.

1\. Domain Knowledge: Novice analyst tend to put the data in a blender and see what comes out first instead of building some preliminary knowledge and intuition about the domain. This is quite evident in OP's analysis and finding about annual income. A person familiar with domain will ask the question "Why would a borrower with high annual income will borrow a small amount loan at high interest rate?" This right away will raise flags about risks of lending to such borrowers. OP will benefit by reading some of the publications (books, research) on credit scoring and modeling before deep diving into analyzing Lending Club data.

2\. Data Exploration: Not spending enough time exploring the data can lead to erroneous conclusion like The second chance strategy. When did Lending Club start issuing loans to borrowers with delinquencies and public records has a big impact on returns as newer loans are not aged enough to have sufficient defaults.

> Watch for your average return (expected return), consistency of returns > through time (risk), while making sure there is enough supply (liquidity) on > the platform to deploy your strategy.

Time is not Risk. You need to find a proper measure for risk. Also consider negative kurtosis and frequent low positive returns but a few high negative returns nature of return distribution.

> I considered that investors deploy and re-invest their money continuously on > the platform and therefore own a portfolio with different 'vintages' of > loans. The ROI that are computed reflect this, as they are average returns > across vintages.

Re-consider this argument of "average return across vintages" being representative of investor returns. Tip: look at loan volume across vintages as well as typical re-investment pattern of a typical investor.

> Please also note than due to the low issuance volume in the early days of > the platform, the returns computed for the pre-2010 period are much less > reliable than the post-2010 returns.

Please don't do this. The data between 2006 and 2010 is the most valuable due to the business cycle we were in at that time. The data since 2010 tells nothing about how loans might perform in the future when business cycle is not as good it has been in last few years.

OP will really benefit from re-evaluating his finings with critical eyes. I will suggest gaining some domain knowledge, spending lot of time on just exploring the data before start drawing definite conclusions, focusing on distributions, correlations and statistical significance.

<comment><AUTHOR> A bit more courtesy would have been welcome. You sound very condescending. And I hope you talk to your clients in a different way!

Let me address your methodology comments nonetheless, which are for the most part unfounded.

* I don't have any finding about annual income. I don't think it is mentionned anywhere in my conclusions.

* "delinquencies and public records has a big impact on returns as newer loans are not aged enough": because I average across vintage, and because I don't average based on volume on the platform, I account for the aging biais.

* "Time is not risk [..] kurtosis etc.": I don't say that time is risk. I suggest the reader to look at the return series through time. Essentially to look at the volatility of the returns ( without pronouncing the word volatility to keep the content accessible to a novice reader). I essentially encourage the reader to visually assess his Sharpe ratio. Which is a good universal risk measure.

* "reconsider average across vintage": averaging across vintage is a first approximation. I acknowledge the fact that a better methodology would be to take a weighted average that matches the amortization profile of a loan.

* I maintain that any statistics you compute in 2006, 2007 or 2008 is less reliable (statistically). Yes it is an important period to have because of the crisis. And this is why I put on the chart. However, you can't compute very reliable returns when you have a dozen of loans to average across.

Anyway, I happy to exchange with you in PM on methodology if you would like to continue the discussion

<comment><USER14> Sorry for coming across condescending. This was not my intention. I was just trying to guide you in the right direction as you came across someone who is just getting started with data analysis.

Once again, I will stress, you need to reconsider your methodology if you want to learn.

<comment><AUTHOR> I have been doing quantitative data analysis in the investment space for about 10 years.

Happy to hear/talk about methodology if you want to write/talk about it.

</comment></comment></comment></comment><comment><USER15> can you fully automate data driven investment on these platforms?

<comment><AUTHOR> You can fully automate investment 'filters' i.e. filter the notes you're willing to invest or not.</comment></comment>


Tell HN: The comment tree collapser [-] is too small for mobile users - <AUTHOR> Changing to an em or even an en-dash would be a significant improvement. <comment><USER2> They know and they don't care. I suggest finding an HN app that puts a usable interface on it.

<comment><USER3> Shameless plug: if you use an iPhone, try my app, Octal [1].

[https://itunes.apple.com/us/app/id1308885491](https://itunes.apple.com/us/app/id1308885491)

</comment></comment><comment><USER4> [--] to collapse as currently implemented (widened)

[^^] to collapse all comments within top most parent. Thus making the next top level comment visible.

^ username 2 hours ago [--] [^^]

\--________--___________---____---____

Mobile could also add two spaces between clickable elements, because even that is sometimes too close. And three spaces between timestamp, [--] and [^^] button.

Upvote/downvote buttons could also be bigger with more spacing between.

Just some ideas, open to improvements.

</comment><comment><USER5> The upvote is too small too.

<comment><USER6> Especially when there's a downvote button about a pixel away!

I think every time I get more downvotes I end up burning them accidentally on comments I intended to up vote :(

<comment><USER7> You can click `undown` if the downvote is accidental, it remains available for an hour or so after the button is clicked. (I can't remember the exact time, but it does expire at some point.)

<comment><USER6> Yea, I do that a lot. But I also suspect that sometimes I though I hit the upvote button, but HN registered it as a downvote anyways. Both of the buttons combined are smaller than the tip of my finger, and they both disappear as soon as one is tapped :(

<comment><USER7> The text for an upvote is "unvote" and for downvotes is "undown". So if you check that you'll see which you did.

<comment><USER6> Oh, awesome, I didn't realize that!

</comment></comment></comment></comment></comment></comment><comment><USER8> There is a browser add on that lets you collapse right up to the top most parent comment which I miss when I'm on mobile and want to hide the whole thread and see what the next top level comment is.

</comment><comment><USER9> While I don't have this problem, what I really would like is a way to collapse back to parent. Often, I'm knee deep in a thread and forget what started it. I have to scroll up, keeping a mental pin at the left margin to see when I get back to the parent.

</comment><comment><USER10> OH, that's what that is, thanks!

</comment><comment><USER11> I suggest making it wider like [--]</comment>


Boeing loses big order for 737 Max aircraft - <AUTHOR> https://www.bbc.com/news/business-48899588 <comment><USER2> This might just be the beginning of a tsunami of cancellation of order. Even if Boeing fixed the "software glitch" quickly to remove the FAA ban, the damage on their good will has been done and it will take a considerable amount of effort to restore the brand.</comment>


Why I Moved Back to India After 10+ Years in USA - <AUTHOR> https://www.linkedin.com/pulse/why-i-moved-back-india-after-10-years-usa-nupur-dave <comment><USER2> Slightly off topic, but do many people working in SV or at Google find it as daunting a task to fold laundry and clean their bathrooms as the author does?</comment>


First FORTRAN program runs, September 20, 1954 - <AUTHOR> http://www.edn.com/electronics-blogs/edn-moments/4396778/1st-FORTRAN-program-runs--September-20--1954 <comment><USER2> So the first FORTRAN program was run 3 years before the first FORTRAN compiler was delivered. Was the program manually translated to assembly/machine code?

<comment><USER3> I'm having a tough time trying to find the answer to that question.

Most sites just repeat this date as a factoid, with no context.

I looked at the videos mentioned at [http://www.softwarepreservation.org/projects/FORTRAN/index.h...](http://www.softwarepreservation.org/projects/FORTRAN/index.html#Films/video) as well as some of the documents linked to elsewhere from that page.

One of the more interesting was the specification, dated November 10, 1954, at [http://archive.computerhistory.org/resources/text/Fortran/10...](http://archive.computerhistory.org/resources/text/Fortran/102679231.05.01.acc.pdf) . It's interesting because of the level of detail in the specification

The most relevant description I found was [http://www.combat- diaries.co.uk/diary29/whirlwind.htm](http://www.combat- diaries.co.uk/diary29/whirlwind.htm) .

> It was a modest effort. At first, it consisted of Backus, an easy-going > young man with a master's in mathematics from Columbia University, and > Irving Ziller, another programmer. By the summer of 1954, three more > programmers had joined the team, and they began running test programs on an > IBM 701 in the IBM complex at 590 Madison Avenue, in Manhattan. From the > beginning, the group concentrated on the compiler. "We simply made up the > language [the commands that make up a user's program] as we went along," > Backus recalled.

> We did not regard language design as a difficult problem, merely a simple > prelude to the real problem: designing a compiler which could produce > efficient [binary] programs. Of course one of our goals was to design a > language which would make it possible for engineers and scientists to write > programs for the 704. We also wanted to eliminate a lot of the bookkeeping > and detailed, repetitive planning which hand coding [in assembly language] > involved.

> Backus and his team began writing the compiler in early 1955, after a year > and a half of preliminary work.

This tell us that the first FORTRAN program (1954) was not run on the compiler that didn't start until 1955, and which was eventually shipped.

What I remember from Richard Waychoff's "Stories about the B5000 and People Who Were There", which concerned Burrough's ALGOL development in the early 1960s, was that in that era people spent a lot of time in analysis, before getting to the actual programming.

Waychoff proposes that the best schedule is "A. Design of the language complete. B. Design of the Scanner complete. C. Design of the Statement Parsers complete. D. Start of programming. E. Project successfully completed."

That model fits what I read about the FORTRAN development. That is, I think the IBM people spent a lot of time developing the language, developing algorithms for things like parsing, fleshing those out, and only then getting to what we would consider to be the programming part proper.

All the research though, and I still can't tell you if the first FORTRAN program was hand assembled. However, since Backus had already developed Speedcoding, which was more like an interpreted assembler, my guess is that the first program was processed in the same way, through a limited FORTRAN interpreted that handled the subset of FORTRAN that they tested.

<comment><USER4> I haven't found a reference to that date that's earlier than 4.4BSD's /usr/share/calendar, which includes

        09/20 Harlan Herrick runs first FORTRAN program, 1954

In _The History of FORTRAN I, II, III_ (from HOPL I and available at your CHM link), Backus writes:

        The FORTRAN compiler (or "translator" as we called it then) was begun
        in early 1955, although a lot of work on various schemes which would
        be used in it had been done in 1954; e.g. Herrick had done a lot of
        trial programming to test out our language [....]

So that's consistent.

</comment></comment></comment><comment><USER5> I can't believe it has almost been 20 years since I last dealt with F95.

<comment><USER6> Or 10 since I was writing a ton of code in F77</comment></comment>


China's Electric Cars Are Actually Pretty Dirty - <AUTHOR> https://www.bloomberg.com/view/articles/2017-07-04/china-s-electric-cars-are-actually-pretty-dirty <comment><USER2> I found the title to be misleading. How clean electric cars are, as the article discusses, is determined by the sources and processes used to generate electricity. It's a national energy infrastructure problem, much bigger than electric cars alone.

</comment><comment><USER3> I don't quite understand the logic either. Yes, electric cars may be powered by coal, but the coal plants were there anyway. If they kept with combustion engines instead of shifting, they'd have the same coal plants but _additionally_ CO2 emissions from the combustion engines.

The argument would only make sense if electric cars were so inefficient that they caused more CO2 to be burned by power generation than a combustion engine would cause by burning fuel.

Also the point stated by others that electric cars can later reduce "their" emissions should power generation be switched to renewables. In contrast, the emissions of combustion engines are fixed.

<comment><USER4> Electric cars do increase the demand for electricity. So you need to compare the extra coal burned for power the cars, with the petrol that would be burned in regular cars.

I believe recent research showed that it took 2.5 years of average use for a coal-powered electric car to become more environmentally friendly than a petrol powered car, whereas it would be 1.5 years with a green energy powered electric car.

So the coal matters, but it's still better than petrol, because internal combustion engines are incredibly inefficient.

</comment></comment><comment><USER5> The article is focused on the "now" part of the equation instead of the future. "Now" quite a lot of places in Europe and US rely on renewable sources for production lowering their "total carbon output".

This might be resolved as things go forward. That said article is kind of clickbait. The actual point is hidden towards the end - "both the manufacturing of the batteries and the operation of the vehicle produce more pollution than they would elsewhere."

That said recycling figures, though they are for steel and not batteries are concerning. Its "renewable" only if it can be reused.</comment>


$15 phone, 3 minutes all that's needed to eavesdrop on GSM call - <AUTHOR> http://feeds.arstechnica.com/~r/arstechnica/index/~3/ZubJwpxmyjM/15-phone-3-minutes-all-thats-needed-to-eavesdrop-on-gsm-call.ars <comment><USER2> Very misleading title.

The article mentions that 4 phones, a laptop computer, and a lot of specialized software were needed (they mention open-source, but there are no details).

Also, the process they describe seemed to be much more time-consuming than just 3 minutes.

<comment><USER3> The process itself is quite fast, after watching the talk I'd guess 3 minutes for singling out a single phone via sending SMS, and maybe 2 minutes for cracking the key itself.

The software is indeed very specialized, and according to the guy doing the demo it will be released, but without the last polishing to run the attack on an actual live network, but claims that it took him less than 1 week of work to come from currently published code to the stuff he's shown in the attack.

But of course to come to the level of expertiese of Sylvain Munaut will take a mere mortal more than a year of studying GSM... ;-)

</comment></comment><comment><USER4> Well, and 2 TB of key tables.

<comment><USER5> To be fair, you can easily carry around 2 TB in a single large-form external. Coupled with a general car to wall AC adaptor, you can travel around town with it.

Not to mention the fact that since it's just a simple look-up table with lots of small entries, you could store it in the cloud and only get what you need via the same GSM connection.

<comment><USER4> That's a lot of data to be uploading to the cloud, but I read you.

I wasn't saying it wasn't doable, but rather it's not just as easy as grabbing your laptop and a $15 phone, which is how it's being reported, for the most part.

<comment><USER6> You can send a USB or eSATA external drive to Amazon (up to 8TB) and they'll import the data into S3 for you. <http://aws.amazon.com/importexport/>

<comment><USER4> This is great, I didn't know about this. It's important to note that you're looking at a cost of $100+ when you factor in Amazon's fees and shipping.

</comment></comment></comment></comment></comment><comment><USER7> I wonder if one could crack it even faster with more than 4 phones sniffing. Maybe 8 or 16 phones? You could easily fit those in a backpack, along with a 2TB external HDD. Assuming the sampling rate is the bottleneck, you could maybe get down into the sub-60second range with a few more phones....

Amazing stuff as usual from the CCC!

<comment><USER8> no, more phone wouldn't make it faster Also, having the hdd with you is really not required, you can just use a beefy external server you ssh to via a 3G data connection or something.

</comment></comment><comment><USER9> FTA: "Munaut demonstrated the way in which GSM . . . allows anyone to determine a subscriber's current location with a simple Internet query, to the level of city or general rural area."

Is he talking about reverse IP lookup?

<comment><USER8> No, I'm talking about HLR queries. See the related 25C3 talk.

<comment><USER6> "Locating Mobile Phones Using SS7"

Abstract and slides: [http://events.ccc.de/congress/2008/Fahrplan/events/2997.en.h...](http://events.ccc.de/congress/2008/Fahrplan/events/2997.en.html)

You can see the talk on Youtube: <http://www.youtube.com/watch?v=OEcW4HlrpYE>

or download the video via bittorrent: ftp://media.ccc.de/pub/congress/2008/video_h264_720x576/25c3-2997-en- locating_mobile_phones_using_ss7.mp4.torrent</comment></comment></comment>


Steve Jobs didn't - <AUTHOR> http://www.asymco.com/2011/10/06/steve-jobs-didnt/

<comment><USER2> I HATED this list. A few rebuttals to point out why...

Steve Jobs did not create products he created an organization. No. He was partially responsible for the creation. He sat in on design meetings and offered input and feedback. Plus he vetoed bad idea (just as important)

Steve Jobs did not wrest market share from competitors he created new markets: Tell that to Creative Labs and Microsoft. Creative labs had an MP3 player and Microsoft had tablets before apple came along. Apple just did things better.

Steve Jobs did not design anything he gave others freedom to think: Not really. He certainly encouraged people to think for themselves but anyone whose studied Jobs will tell you he stuck to his own vision. Your only way to design a product at Apple under Jobs was to make your case to him and change his vision.

Steve Jobs did not develop new management theories he showed by example: Well how do you think management theory is born? Good management theory comes from people who practiced what they preached.

Steve Jobs was not a futurist he built the future one piece at a time: WHAT?!? You don't build the future one piece at a time unless you have a vision of what it will be like as a whole.

Steve Jobs was not charismatic he spoke from the heart: WHAT?!? What do you think "being Charismatic" means?

Steve Jobs was not a gifted orator he spoke plainly: A gifted orator is someone who is engaging to watch speak. Jobs was engaging.

<comment><USER3> You're _so_ close to understanding this essay, and yet I fear you're a thousand miles away.

I'm going to kill the poetry by trying to explain it, but try translating each phrase like this: When you read:

"Steve Jobs did not [do X], he [did Y]."

read it as:

"It's not so much that Steve Jobs did [legendary thing X], as that he did [apparently simple thing Y, and did you notice that by doing so he just happened to accomplish X as a side effect?]"

The author _agrees_ with you.

(Note, by the way, that my rephrasing is absolutely bloated with weasel words that diminish its impact. That's why the original author wrote the way he did, at the expense of losing the literalists in the audience.)

<comment><USER4> I find such sentences as:

>Steve Jobs was not a futurist. He just built the future one piece at a time.

to be almost hypnotically devoid of meaning and disrespectful to the reader. Why not just say what's true? A good reader can be stunned by the truth, without needing to be lead through a difficult contradiction for dramatic effect.

<comment><USER5> Well sure. I mean, Abe Lincoln could have shortened the Gettysburg Address to "Let's free the slaves and reunite the union", but that wouldn't have had the same impact as the speech he did give.

There's nothing wrong with presenting a difficult idea that has a more dramatic effect. Do you think Moby Dick or War and Peace are considered great due to their simple ways of communicating ideas?

<comment><USER6> As long as you don't lose accuracy, sure. I think many of these crossed that line. They remind me of the tendency for bloggers to make a link-bait headline that obviously sounds bad, then they spend their whole post redefining what those words mean so at the end, their title is a good thing.

</comment></comment></comment></comment></comment><comment><USER7> "Steve Jobs was not a visionary. He put the dots together and saw where they led."

That's what being a visionary/genius is -- seeing things and making associations or "connecting the dots" before others do. It's having a rare and valuable perspective on the world.

<comment><USER8> _That's what being a visionary/genius is_

This is the authors point :)

</comment></comment><comment><USER9> "Steve Jobs did not design anything."

Not true. Look at the history of Apple. He definitely did.

<comment><USER10> This man begs to differ:

[http://reprog.wordpress.com/2010/09/06/steve-jobs-never- had-...](http://reprog.wordpress.com/2010/09/06/steve-jobs-never-had-any- designs-he-has-not-designed-a-single-project/)

<comment><USER11> And Raskin is quoted there, and Raskin was the guy who wanted the Mac _without mouse_. I think it's obvious that Jobs in fact designed Mac, in a sense -- realized his vision. It's also very clear that Jobs even cared a lot about every _detail_ of his products.

See also the last link in the article which leads to:

[http://folklore.org/StoryView.py?project=Macintosh&story...](http://folklore.org/StoryView.py?project=Macintosh&story=The_Father_of_The_Macintosh.txt&showcomments=1)

"ultimately, if any single individual deserves the honor, I would have to cast my vote for the obvious choice, Steve Jobs, because the Macintosh never would have happened without him, in anything like the form it did. Other individuals are responsible for the actual creative work, but Steve's vision, passion for excellence and sheer strength of will, not to mention his awesome powers of persuasion, drove the team to meet or exceed the impossible standards that we set for ourselves. Steve already gets a lot of credit for being the driving force behind the Macintosh, but in my opinion, it's very well deserved."

</comment></comment></comment><comment><USER12> This is the only article on the topic that doesn't make me cringe. Just wanted to add my voice as most of the commentary here is negative.

</comment><comment><USER13> I read this a bit differently than saying that anyone can do what Steve Jobs did.

To speak plainly, to be patient and put the dots together, to lead without charisma are all incredibly difficult things to do. It really does take genius and only the extraordinary amongst us can do it.

If you have a natural, god-given charisma, its very easy to be a leader. No accomplishment there. But you would lead for what purpose?

If you have some uncanny ability to predict the future as a whole, without error, you would be popular for your predictions but you wouldn't build much of anything, because building great things requires trial and error.

If you were merely a design expert, you'd make nice looking things, but you wouldn't be able to scale it, compared to the non-designer that sees the greatness in other designers.

Being foolish and curious really trumps all other skills, but how many people can truly endure being foolish and curious?

<comment><USER5> _how many people can truly endure being foolish and curious?_

The people who embrace curiosity and don't dwell too much on their foolishness.

</comment></comment><comment><USER5> My interpretation of this post is a bit different from the others that I see here.

I see this as being about cutting through all the cliches and platitudes that we tend to run into when we talk abou Steve Jobs, and pointing out the truth behind them.

"Steve Jobs was a charismatic visionary with a knack for design who created revolutionary products."

...sounds like something the press would say about Jobs doesn't it?

<comment><USER14> Yes, and the people who do not understand or like Apple prefer to see the company and its products as the mystical results of one man.

Horace has presented the elements of the process clearly, but they are not interested in grasping it.

</comment></comment><comment><USER15> Steve Jobs didn't really create that much. It's easier to choose than to create. Jobs was a "chooser" of other people's good ideas.

</comment><comment><USER16> That's all a little disingenuous. Who among us can do all of these things, and stand so strong in the face of criticism?

<comment><USER17> I think Horace's point is that the potential is in all of us. He's taken each of the things we all think about Steve Jobs and presented a different perspective. I don't agree with the absolute manner in which they're stated, but that's sometimes the nature of writing. No one likes to read writing that is as firm as pudding. It's boring and doesn't challenge the reader.

If you didn't walk away from that list wondering whether you could do things Steve Jobs did, then Horace failed in his intention, which was, I think, to inspire.

</comment></comment><comment><USER18> I think in some way he was all of those things and none of them at the same time.

</comment><comment><USER14> I think this is a great list. It's one thing to mourn the loss of a great person, but the most frustrating thing about this is watching all the people on TV and in the mainstream media, and others who don't know much about Apple, say things that show they didn't really understand Steve Jobs at all.

I would disagree with the list in one respect. I believe Steve Jobs didn't have taste. Well, he had some taste, but he didn't have genius level taste. Steve Jobs did, however, know how to identify and listen to people who _did_ have taste, and he worked very hard to learn from the people who did have it who didn't work for him (Eg: from the past, or people like Dieter Rahms who is retired, etc.)

But this is a great list overall.

I do wish the people who have been bashing Apple out of ignorance, and Steve Jobs out of ignorance and based on their preconceived notions or personal projections of their own faults, would at least wait until his body is in the ground before posting their drivel on the internet (I've seen far too much of this on HN already... making the site a lot less classy.)

In life, Steve Jobs didn't bother to respond to every scurrilous lie told about him, I wish, in death, such people would hold off until he's buried before ramping up the hate again.

</comment><comment><USER15> Steve Jobs also did not share the credit. Like Elizabeth Warren said, "Nobody ever made a million dollars by themself."

<comment><USER19> What? He shared credit all the time. Go watch an old keynote, it was never "Here's what _I_ built" it's always "Here's what _we_ built".

<comment><USER20> Maybe not _all_ the time.

<http://everything2.com/title/Breakout>

<comment><USER19> Like most of us, he shared credit more often than never and less often than always.

</comment></comment></comment></comment><comment><USER21> I thought the title of this is annoying linkbait, so here's the "article" in its entirety:

Steve Jobs did not create products. He created an organization that predictably and reliably created emotionally resonant products.

Steve Jobs did not make movies. He made a company that predictably and reliably made blockbusters.

Steve Jobs did not wrest market share from competitors. He created new markets that attracted and sustained competitors.

Steve Jobs did not design anything. He gave others the freedom to think about what jobs products are hired to do.

Steve Jobs did not re-engineer processes. He brought engineering processes to works of creativity and the creative process to engineering.

Steve Jobs did not develop new management theories. He showed by example that innovation can be managed.

Steve Jobs was not a visionary. He put the dots together and saw where they led.

Steve Jobs was not a futurist. He just built the future one piece at a time.

Steve Jobs did not distort reality. He spoke what he believed would become reality at a time when those beliefs seemed far fetched.

Steve Jobs was not charismatic. He spoke from the heart compelling others to follow him.

Steve Jobs was not a gifted orator. He spoke plainly.

Steve Jobs was not a magician. He practiced, a lot.

He had taste.

He was curious.

He was patient.

He was foolish.

He was hungry.

These things many others can do. Maybe you can.

<comment><USER15> "Steve Jobs" is now link bait.

<comment><USER21> I was more referring to the "cliffhanger" "didn't" suffix.

I suspect the above post is getting moderated into oblivion because the impression is that I'm complaining about the Jobs coverage, but that's not the case at all. I'm not at all bothered by all the Jobs submissions. He did so much to make me not hate computers.

I don't think comparisons made between he and Edison/Ford/etc are hyperbole at all.</comment></comment></comment>


Optimizing React Rendering - <AUTHOR> https://flexport.engineering/optimizing-react-rendering-part-1-9634469dca02 <comment><USER2> > So all you have to do is use PureComponent everywhere and you're good to go. > There's nothing more to it. Enjoy your new blazing fast React app!

(I work on React.) This isn't quite right. If we recommended that PureComponent be used everywhere, it would probably be the default already. Rather -- the comparison to decide whether or not a component should be rerendered costs something, and in the case that you _do_ want to rerender, all of the time spent checking whether you should have rerendered is wasted.

Instead, we'd suggest you be conscious of where you need to do the comparisons. It's usually only in a couple of places in your app. Good candidates are on the children of a long list or around large parts of the app that change independently (that is, cases where you know the parent should often rerender but the child shouldn't). A few well-placed shouldComponentUpdate (or PureComponent) uses can go a long way.

<comment><USER3> Is it considered best practice to use the "key" of a child element to signify if it should rerender? This is what I've been doing and it seems to work well. If a parent updates its state, and then as a result, changes the props of some or all of its children, the parent sets the "key" of a child to effectively a hash of the props of that child.

<comment><USER4> keep in mind that changing the key will completely destroy and create a new element- a more expensive operation if all that's necessary is changing the class or something

<comment><AUTHOR> nit: new component instance (not element)

<comment><USER4> I think we're both right- I believe it will create a new element and a new DOM element, rather than mutating the existing ones.

<comment><AUTHOR> You're right. I misinterpreted your first comment to refer be referring to React elements, which is quite different from DOM elements [https://facebook.github.io/react/blog/2015/12/18/react- compo...](https://facebook.github.io/react/blog/2015/12/18/react-components- elements-and-instances.html#elements-describe-the-tree)

</comment></comment></comment></comment></comment></comment><comment><USER5> This is actually a pretty decent article, in part because it signals its audience properly: (semi-?)experienced React developers who haven't dealt with optimization yet.

<comment><USER6> so basically the Facebook app team?

Edit: sorry guys, didn't knew you were all on HN :(

<comment><USER7> The downvotes are sad. Are people this far gone that they can't take a little criticism?

<comment><USER8> Offtopic, but regarding the downvotes -

I have been using FB front-end projects for several years, and today I see them as _the_ gold standard for a supportive, mature, well-governed, and consistent FoSS ecosystem. I struggle to recall any snarkiness, cynicism, or even rudeness. I'm sure it happens, but I closely monitor several of their projects and the behavior is mostly exemplary even without considering the size of the user-base.

Besides near-exemplary FoSS behavior, FB engineers must solve problems well beyond what most industry will ever attempt, and then present some of their solutions on a silver platter for the rest of us. Of course, it's not perfect, and sometimes confusing, and sometimes over-engineering, but I would personally pay $xx,000 per year to use any library of the same standard as they give out for free.

So when I see a callous comment that takes nothing to write and could cause someone to feel degraded about their vast contributions, I downvote. It's not about safe places, it's about professional respect and courtesy.

<comment><USER6> Seriously? HN has really short memory...

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

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

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

</comment></comment></comment></comment></comment><comment><USER9> For some reason the focus is always on preventing re-rendering if it comes to optimising a React app. I understand that it can be really effective and is often the easy way out, but re-rendering in itself is not costly and I don't really care about it the most of the time.

I am more concerned that the code that runs during a re-render is not rebuilding huge static lists that never change and so. I see that over and over again in React apps. I tend to build a lot of the static stuff in the ComponentWillMount stage to prevent that. Only when already optimised code is getting to slow I start thinking about preventing re-rendering if possible.

My reason for not starting with ShouldComponentUpdate is that you have to be very careful not creating nasty bugs with that like I did some times. If a year later you write some code and it doesn't work for some reason it is painful if you find out after a long search that a stupid child component did not update for some prevention rule you forgot about. I really try hard to avoid premature optimisations.

<comment><AUTHOR> That's a great point, and being aware of the dangers of shouldComponentUpdate is what this post is all about. There are a lot of gotchas when using PureComponents, and can lead to bugs if you're not careful.

Also, recalculating derived data (building static lists) in render() is very wasteful, and is also another gotcha when using PureComponents (object copying). Removing object copying from render() speeds up the actual render() call and allows you to take full advantage of PureComponents.

We are experimenting with ways to make all of this a bit easier, and hopefully will have some good news to share in Part 2 :)

</comment></comment><comment><USER10> Pretty good post, minus the advice to always use PureComponent everywhere (per Ben's comment in this thread).

If anyone's interested, my React/Redux links list has a large section of other articles on various React-related performance concerns, including benchmarking and optimization approaches: [https://github.com/markerikson/react-redux- links/blob/master...](https://github.com/markerikson/react-redux- links/blob/master/react-performance.md) .

</comment><comment><USER11> From the article:

> Fixing the issue is pretty simple*. We simply need to short circuit the re- > rendering for a subtree if we know that the subtree hasn't changed.

Not a frontend guy but I've seen this theme more than once on HN recently. It seems to me that addressing this anti-pattern would be built right in to modern React components. Isn't efficient DOM manipulation by pruning non- necessary changes kind of their thing?

<comment><USER12> I think it is an anti-pattern that is a result of the language it's built on.

This is one place where using Clojurescript wrappers of React has a real payoff - immutable datastructures make equality checking very very cheap.

<comment><USER13> A good patch for this is ImmutableJS

</comment></comment></comment><comment><USER14> Along the same lines as the advice in TFA: If you pass an object literal as the `style` prop, it'll always re-render, because the object reference will change. Solution: instead of the object literal, pass a reference to an existing object.

</comment><comment><USER15> One thing that has been bothering me is that React is slow by default. It re- renders everything every time unless you start looking into shouldComponentUpdate.

Even if I agree that premature optimization is the root of all evils, I like when the language and the framework I use make it writing fast code as easy as writing slow code.

I wonder if anybody has evaluated, the improvement they get in development speed using React when they add the time they have to spend to optimizing their React code.

In my experience, I am not even frustrated with React itself most of the time but with the other things in the ecosystem.

<comment><AUTHOR> In our experience, React is not necessarily 'slow' by default. Re-constructing parts of the element tree each time can be a bit wasteful, but it is only as slow as your render() methods, and that is outside of React's control.

We have survived over 3 years with a massive application (over 2000 modules) and tons of wasteful re-rendering, but have only now started to notice any sluggishness. That makes React pretty fast in my mind.

Having said all that, we are experimenting with an 'all PureComponents' approach to potentially make React, but whether that turns out to be a good idea is yet to be seen (object comparisons in sCU are not free).

</comment></comment><comment><USER16> From what I've found in my current job creating a js react app as well as side project with cljs is that advanced optimsation of js react === basic usage of clojurescript reagent. I've found no redeeming features when developing the is app, issues with hot reloading and constant integration work to get everything to play nice with immutable js

<comment><USER16> *the js app

</comment></comment><comment><USER17> Is there special logic in react that binds arguments of a function to the props with the same name? I'm talking about the handleDelete "fix" in the article:

        render() {
            const views = this .props.dataList.map((d, i) => {
                return <Data data={d} index={i} onDelete={this.handleDelete} />
            });
        }
        handleDelete(index) {
            //...
        }

I guess they just call that function from within the Data component with the correct parameter. But then, Data component needs to know how to call that function. Is there a better way?

<comment><USER18> By using the property initializer syntax [1] [2]

[1] [https://facebook.github.io/react/docs/handling- events.html](https://facebook.github.io/react/docs/handling-events.html)

[2] [https://babeljs.io/docs/plugins/transform-class- properties/](https://babeljs.io/docs/plugins/transform-class-properties/)

<comment><USER19> That solves the problem of binding 'this', but doesn't solve the problem of supplying the index to the callback function. Essentially you have only two options for doing that.

One is to bind the callback function to a certain index in advance and then supply that callback to your child via props so it already knows the relevant index and doesn't need calling with any extra parameters. The trouble with this one is that it creates a new function every time, which is inefficient in itself and horrible if it winds up causing your child to rerender because props changed even though in practice you're passing an identical function every time.

The other is to supply a callback where the child component is responsible for supplying the extra index information when it calls the function, either by directly passing the index as a parameter or via an indirect route such as using data-* attributes as 'kentor mentioned. This is more efficient, but it creates tighter coupling between the child and parent components.

In practice, it seems most projects adopt the second strategy because the tighter coupling is usually much less of a problem in practice than the performance penalty, but neither solution is ideal. Unfortunately, JavaScript's semantics don't make it easy to have the equivalent of a "deep equal" comparison on functions that would return true for two copies of the same function with the same bound values.

<comment><USER20> Another is to wrap the first option in _.memoize so you only create functions once per argument and you don't get unnecessary rerenders. Just remember that _.memoize only uses the first arg for cache lookups.

</comment></comment></comment></comment><comment><USER21> I'm the author of CxJS[1] which uses React for rendering. Before rendering, the whole tree is scanned for data changes and with that information available shouldComponentUpdate is very simple.

Another technique that I find very useful is to use a dedicated data declaration component which then decides if children should update or not. Try grid sorting on this page: [https://worldoscope.cxjs.io/yyrsmjk](https://worldoscope.cxjs.io/yyrsmjk)

[1]: [https://cxjs.io](https://cxjs.io)

</comment><comment><USER22> Would using mobx to manage state solve most of these problems?

<comment><USER23> Yeah. That's exactly what I was thinking as I read through the list of gotchas.

We've just started using mobx ourselves. There's still a weird contention between events and state that I'm yet develop patterns for but overall I'm really happy with it.

</comment></comment><comment><USER24> I would generally say that there is a reciprocal relationship of performance and maintainable code, no matter what you use.

React is a powerful way to build your front-end, but it's power is in structure / code.

In my experience with React, fine-tuning components for faster rendering is always a pain. Too much magic happens behind the scenes and too difficult to keep that in mind while writing your beautiful components.

<comment><USER25> _there is a reciprocal relationship of performance and maintainable code_

There isn't an inherent one, it's just that writing for both is much harder than just for one.

</comment></comment><comment><USER26> Off-topic: what is the theme and color syntax theme ?

<comment><AUTHOR> Atom editor with the 'One Dark' theme

</comment></comment><comment><USER27> Quick question - can printWasted be used with RN too?

<comment><AUTHOR> Haven't tried this myself, but this might be what you're looking for: [https://github.com/facebook/react- native/issues/9146#issueco...](https://github.com/facebook/react- native/issues/9146#issuecomment-277434523)

<comment><USER27> Thanks! I'll give it a go.</comment></comment></comment>


PlayLister – Promote music playlists publicly - <AUTHOR> http://www.playlisterapp.com/ <comment><AUTHOR> A simple service for sharing music playlists, cross-platform on the web. A small side project I've been working on, intrigued as to what HN make of it. There seems to be lots of great places to share playlists, mixes and releases but not one place online to simply curate. So I made playlister.</comment>


Some learning is a whole-brain affair, study shows - <AUTHOR> https://www.eurekalert.org/pub_releases/2020-01/jhm-sl123119.php <comment><USER2> The article text seems to be more saying "learning a task involves the areas of the brain that are involved in performing the task", which makes way more sense (to the point of sounding obvious) than "learning a task involves the whole brain".

In the example with mice grabbing the food through the bars, the task isn't "move hand", it's "visually identify food, decide to acquire food, formulate motion plan to acquire food using hand, move body according to motion plan." I'd expect every part of the brain involved in the whole task to be learning to some degree during the whole process.

</comment><comment><USER3> Currently reading "The Master and his Emissary" basically says that right and left brain ensemble back and forth

<comment><USER4> RSA animation of this topic: [https://www.youtube.com/watch?v=dFs9WO2B8uI](https://www.youtube.com/watch?v=dFs9WO2B8uI)

First time heard of this, very interesting. Thank you for sharing.

</comment></comment><comment><USER5> Totally anecdotal, self report is bad, yada yada, but....

There are rare times when I feel my brain "opening". Like maybe once or twice a year, I'll be listening to an album, watching a movie, reading a book or a paper, and... I can't really explain it except that it feels like my brain is absorbing everything. Not even that I am getting a photographic memory, but it just feels like the event is making an impression on every part of my brain. Like what's happening in that moment is just becoming a part of me.</comment>


Ask HN: How much do you earn with donations vs. ads? - <AUTHOR> Since earnings via ads are rapidly decreasing I am looking for other ways to monetize my websites. My experience with donations have been disappointing at earlier tests, about 0.5% earnings of income via ads. But maybe I did it wrong, or choose the wrong donation channels (I used paypal, flattr, bitocin) Did anybody manage to get a non 	ridiculous amount via donations? <comment><USER2> We went for a "pay what you want" model for my latest app. It's a real simple utility app but we were pleasantly surprised with what people paid. I gave a quick overview of all the numbers here [https://medium.com/@reddavis/stand- app-9ee0fc3355c](https://medium.com/@reddavis/stand-app-9ee0fc3355c)

<comment><AUTHOR> This could be an idea. Before every conversion (or daily) ask for a payment, which could be 0. But without the possibility to make economical payments in the 10cent area this will not work.

<comment><USER3> Some of the discussion here might interest you as well: [https://news.ycombinator.com/item?id=10042368](https://news.ycombinator.com/item?id=10042368)

</comment></comment></comment><comment><USER4> I don't know their numbers, but [http://synergy-project.org/](http://synergy- project.org/) is a good example of how to get donations.

It's a public, GPL project [https://github.com/synergy/synergy](https://github.com/synergy/synergy) You can either compile it yourself or you can go through the very smooth purchase process to get a lifetime subscription to pre-compiled binary installers for $10. It was much cheaper for me to just type in my CC# and move on with enjoying the program than to even investigate compiling it myself.

Both Synergy and Humble Bundle do the same thing: They make going through the checkout line a smooth, easy, natural process on the path to getting the software. The problem with donations is not really that people are so cheap. It's that they're so lazy. If you give them what they want up front and then ask that they come back later to go through some awkward process to give you money for something they already have... Well, what do you expect? It's too late. They've moved on with their day. They can't be bothered. But, if you make it very easy to give you money on the path to giving them the goods. Then their appreciation and generosity doesn't require much effort. That's the key.

<comment><USER5> +1 and I really like the idea of that model and wanted to support Synergy in particular, but I almost gave up when I saw I'd have to compile from source, then did give up once I started encountering errors building from source. I would have happily given them money if they could have proven that the product worked on my equipment first (free trial, etc.) but given that it didn't seem to work, I bailed.

<comment><USER6> They purposely make it difficult and even removed documentation on building synergy to boost sales. You can find nightlies here: [https://synergy- project.org/nightly](https://synergy-project.org/nightly)

<comment><USER4> I don't know anything about the history of the project.

Is this the documentation you were referring to? Or, was it something else?

[https://github.com/synergy/synergy/wiki/Compiling](https://github.com/synergy/synergy/wiki/Compiling)

<comment><USER6> I believe there was additional information that they removed, but maybe its all there now. That was a complaint I had read somewhere else, so I'd take that specific one with a grain of salt. Still, I think it would be silly to ignore the fact that the developers have a monetary incentive to making the project hard to compile and distribute. Maybe I'm just biased, but their site and github gives me a distinct impression that they would pretty quickly shutdown all open source aspects of the project and completely close the source if they legally could. They are hiring a CTO and another engineer. Why does an open source project with this size of scope need so much money and employees? Its clear their number one goal is to make money now, not create a quality open source project. Combine this feeling I get with how they have treated users and potential contributors in the past, I would dissuade anyone from using them as a model open source project.

</comment></comment></comment></comment></comment><comment><USER7> Another avenue is _membership_. Gimlet Media is experimenting with this right now:

[https://gimletmedia.com/join-gimlet/](https://gimletmedia.com/join-gimlet/)

Members support their company at $5 / month, or $60 / year.

The challenge with all of this, is that no one has been really able to make a lot of money with the donation paradigm.

For example, 5by5, a hugely popular podcast site, has roughly $2,500 / month in donations on Patreon:

[https://www.patreon.com/5by5](https://www.patreon.com/5by5)

If you look on [https://recurrency.us/discover](https://recurrency.us/discover), you can see how much bloggers there are making. Not much.

<comment><USER8> Arstechnica is another good example of membership. If you're a paying member, no ads. Otherwise, ads. Best of both worlds and you give your audience a choice in how to support you.

<comment><USER9> If you are using ad-blockers, how does it matter if you are a paying member or not? Am I missing something obvious?

<comment><USER10> The obvious bit is this: You are circumventing their revenue model. If you like/want to support their content, this is not an ideal way to show that support. Either turn off the ad-blocker or pay for membership.

<comment><USER11> Honest, lateral question: Now that I think about it, will DRM prevent the use of ad-blockers on a majority of websites? Could this be a sweepingly major side-effect of DRMs?

</comment></comment></comment></comment></comment><comment><USER12> I've made about $25 from donations, vs about $70 from AdWords and Amazon affiliate links, over the course of about two years. Of course, I actually got the $25 from the donations, whereas the ad revenue is still waiting to hit the minimum payment thresholds...

</comment><comment><USER13> This is the monthly income for a news site with about 160 monthly articles and 143.000 monthly page views: Direct Ad Space: 170$, AdSense 50$, Sponsored Articles: 45$, Amazon: 4$, Donations: 0$

</comment><comment><USER14> > _My experience with donations ... about 0.5% earnings of income via ads._

So, to put it another way, you've made 200 times more (not just 200%) by advertising than by donation? For example, if you had received $25 in donations, then your ad revenue should be about $5,000.

df-offical has an unfortunately dead comment with some interesting and similar numbers:

> _Ad-earnings in December 2014: $700, Affiliate Earnings: $200, Donations: > $25._

So that would put them at $700/$25 = 28 times more (36 times more if you include Affiliate Earnings). There's an order of magnitude difference between your earnings:donations ratio and df-offical's ratio, but advertising income is definitely the greater share of the two.

<comment><AUTHOR> Yes, 200 times more. But that was about 3 years ago. Since then the cpm dropped, so in the meantime and it should be closer to 100 times more.

<comment><USER14> How do you place your own donation ads in relation to your advertisers' ads?

<comment><AUTHOR> There is just a donation point in the navigation.

</comment></comment></comment></comment><comment><USER15> Has anyone tried a Humble Bundle approach, where users buy the software and have the option of entering $0? I suspect having a non-zero default payment and a guilt-inducing average payment would encourage people to donate, while allowing them the option to just get it for free.

I could put on my patio11 hat and say "Just charge for it"

<comment><USER16> I've used this, as a 'buyer' (and have bought in several cases) for things like books and detailed articles written by independent people.

One extra benefit is 'please sign up for email updates' which while in almost all cases not mandatory, comes with text like "stay up to date" or "receive insights".

I usually do sign-up, and this keeps the person providing these updates with another potential customer for other stuff, and me with usually useful (as I've self-selected as being interested) and interesting updates.

Win-win.

<comment><USER15> That's a really good point about using a lightly locked gate as a way of collecting interested people's email. Even in the case of a totally marketing averse 'free as in beer and speech' open source project, an email list of users is useful.

You could tell them about updates, new projects or terrible bugs

</comment></comment></comment><comment><USER17> Sponsorship works for me. Companies got in touch with me directly saying they'd like to sponsor my project. I put on my project pages "This nice company sponsors my project". I ensure that's actually a company I can endorse, and my users aren't exposed to any nasty ad scripts.

Both donations and sponsorship pale in comparison with development/consulting fees. When a company needs a feature they're happy to pay a proper daily rate.

<comment><AUTHOR> Isn't sponsorship another name for link buying. I do get those offers but the amount people are willing to pay is minimal. It would make more than donations, but on the other side big G doesn't like link sellers and therefore it is not worth the risk imho.

<comment><USER17> The link is clearly labelled and I don't accept any spammy "buy cheap meds" links. I hope Google doesn't kill that. I think for users one vetted link is much better than regular ads, which on software-related sites tend to be fake download buttons leading to malware.

</comment></comment></comment><comment><USER18> What type of website? For something with regularly-updated content, Patreon can be pretty compelling. For example, I know several YouTubers who earn as much via Patreon as they do from YouTube ads.

<comment><USER19> I know YouTubers who couldn't live without Patreon. It's their only source of income. To make a living from YT you have to have a pretty huge number of viewers.

Fortunately, their viewers are hard-core fans and ~0.5% - 1.0% of their subscribers donate to them. Seems little, but it's actually a lot (consider that you have to view 1000 videos to "give" a Youtuber $1 via ads).

As a comparison: A certain Youtuber with 1.8M subscribers makes about as much from ads as another with 300K subscribers from Patreon.

</comment></comment><comment><USER20> I've been running a forum since 2007 and Adsense was the boon that paid for my university and made me money.

I don't think I'll ever ask for donations again. Plopping a donation button on a website seems to do nothing but make users assume that other users must be donating.

I've never seen donations go anywhere without active hustling/fundraising which makes the website feel like a desperate church. Look at how much effort Wikipedia goes through to ask for donations. And after all that work you'll always make less than you would with ads.

Meanwhile, sticking Adsense code on a website makes you passive money that's less annoying to your users than a donation campaign.

<comment><AUTHOR> That have been my thought until yet too. However with a rapidly shrinking cpm and a a growing adblocker usage the easy times of adsense are coming to an end imho.

</comment></comment><comment><USER21> I had a guestbook/guestmap site for almost 10 years. Ads never made me more than $200/month, whereas donations (you donate whatever you want to remove ads from your guestmap) really picked up some times of the year (I got a $150 donation on thanksgiving, among almost $2k in random donations on the same month - best month in the entire lifetime of the site). Ad revenue tapered off during the years, stabilizing at under $5/month in 2013, donations averaged $200/month until the end (average $12)

<comment><USER22> That's not purely donations though. Paying to remove ads is more like a freemium model IMHO, since people get something (a nicer user experience) in exchange for their money.

<comment><USER21> Indeed, it's "pay what you want". Should've been clearer.0, sorry!

</comment></comment></comment><comment><USER3> I have always done better with donations than from ads, going back several years. I am currently researching Patreon as a possibility for the future. I have never had much traffic. I am working on that. My traffic is getting steadier and, after a whole lot of thought and research, here are some things I have done that are showing promise early on:

Post a well positioned note thanking people for supporting the site by white listing you on ad blocker "or" via tips. Reposition your donate button as a tip jar.

Stop using the word _donations._ Find language that signals that you are providing something of value and they are supporting your ability to continue making it available. So far, _tips_ is the best word I have found. I am still doing research.

The word _donations_ makes people view you as a charity case, not someone offering something of value who somehow needs to get paid for it.

<comment><AUTHOR> Thank you, that some good inputs. I will try "support us".

</comment></comment><comment><USER23> What kinds of websites do you have? I think monetization for different verticals is likely to diverge radically in the next few years.

<comment><AUTHOR> Small online tools. No content pages, just some convert x to y or stuff like that. The problems you can solve with those pages are too small to ask for user registration or a fee.

<comment><USER24> Could you share what they are?

<comment><USER25> smallpdf.com

<comment><USER26> I would imagine that your service can be turned into a SaaS. For example: a free service that allows x pages per ip address a day and a premium service with an "unlimited" amount of conversions.

<comment><AUTHOR> Because the concurrence would happily take your users if you start asking for money.

</comment></comment></comment></comment></comment></comment><comment><USER27> I put up a bitcoin donations link on reocities.com a couple of years ago, so far it paid ~$100.

</comment><comment><USER11> We need a patio11 person dedicated to donation-based software ;) Does it work better if the software is open-source, but the donation is mandatory in the original version of the binaries?

<comment><USER28> Would it be presumptuous of me to mention why that is not me? Because, in 10 years of doing this, I've seen _one_ small business do decently well with the donation model. (It's Paint.NET. Rich asked me not to mention the numbers when he told me them, and I respect his wishes, but let's say "A quite happy result which supports a small team in a sustainable fashion.")

I have also seen many developers try it. Monks take a vow of poverty, because it can be spiritually fulfilling, but I do not believe many people would take a vow of poverty so that they can devote every waking moment to fixing the problems of for-profit companies. (There are individual people I'm thinking of while writing this. I won't mention their situations, for the obvious reasons, but I'm generally a quiet restrained guy and, after a coffee date with one of them, I nearly put my fist through a mirror out of vicarious frustration with injustice.)

There are so, so many better business models than taking donations. Let's move the conversation to those better models. "Charge money for goods and services" provides plenty of room for experimentation and has the desirable property of actually working.</comment></comment>


Google Maps now has schedules for 1 million public transit stops - <AUTHOR> http://googleblog.blogspot.com/2012/08/google-maps-now-has-schedules-for-more.html

<comment><USER2> So why can't they show the routes for bus lines???

Clicking on a metro station in lots of cities will draw colored lines of all the metro stations that pass through it. E.g., Times Square:

[https://maps.google.com/maps?q=type:transit_station:%22Times...](https://maps.google.com/maps?q=type:transit_station:%22Times+Sq+-+42+St%22&t=h&ie=UTF8&hl=en&view=map&ftid=0x89c259ab49ca241b:0xb22a3843c5b03c10&ftt=5140&geocode=FVrgbQIdWQqX-w&split=0&sll=40.755290,-73.987495&sspn=0.000000,0.000000&iwloc=A&ved=0CBQQpQY&sa=X&ei=RBosUNbmFuWSxQHa4YGYAw)

But this doesn't work for bus routes, which would be 1000x more useful.

Because, with a metro, you can look at a metro map and easily figure out which lines pass through the station -- there are usually only 1, 2, or maybe 3.

But in a lot of cities across the world, there might be 30 bus lines that stop at an intersection, and printed maps don't even exist of the bus lines because there are just too many to draw.

But Google could show the 30 bus lines instantly, so you could actually see how they fan out the further away you get, and you can easily figure out which of the 30 buses, if any, go to your desired neighborhood.

I've been waiting for this feature for YEARS... and it still doesn't exist. :(

<comment><USER3> It must depend on the data they're given. I can see bus lines in Toronto, but not in Waterloo, ON, for example.

</comment></comment><comment><USER4> Note that Google's transit directions were a true 20% project when it launched in 2005: [https://plus.google.com/109412257237874861202/posts/bwFAz9KZ...](https://plus.google.com/109412257237874861202/posts/bwFAz9KZye2) When it launched, it was all 20%-ers working on it.

<comment><USER5> Will we ever see a 20% project like this again?

Remember these days?

[http://googlepress.blogspot.com/2004/04/google-gets- message-...](http://googlepress.blogspot.com/2004/04/google-gets-message- launches-gmail.html)

"(Google requires engineers to spend a day a week on projects that interest them, unrelated to their day jobs). "

\-- Google Press Release

</comment></comment><comment><USER6> I find it interesting that Apple is adding driving navigation with no transit or bicycle directions (apart from third-party apps) while Google seems to be really putting a lot of effort into public transit. This is all while car ownership is plummeting among youth, the people who I thought were Apple's core user base.

<comment><USER7> With iOS 6, Apple released Transit APIs that let third party devs (read: public transit providers) add public transit data themselves.

 _"The new Transit APIs, referred to by Scott Forstall at 108:58 in Monday's keynote, allow developers to register their app as a directions provider for routing directions for a particular set of coordinates. It will then be displayed in the list of available third-party apps for transit. Clicking a transit app launches that app, passing the start and end values to the app. Contrary to other analysis, transit routes can't be displayed inline from the Maps app."_

This seems to me like a clever move, this way Apple won't have to collect all the data.

<http://waxy.org/2012/06/busting_the_ios_6_transit_map_myths/>

<comment><USER8> How many quality transit applications are out there and maintained enough by their public agencies?

I predict that Apple's API cop-out goes precisely nowhere.

<comment><USER9> Hopefully Google Maps will be the best provide for this data in any given location, once they make their own iOS app.

<comment><USER7> Why would they do that? Google stands little to gain and a lot to lose by offering a good Google Maps app for iOS.

Many of the features they offer for Google Maps on Android haven't been implemented for iOS (turn by turn navigation, interior views, floor plans, 3D models, etc.)

Google is already polluting the iOS Maps app with sponsored listings, degrading the user experience severely. I doubt that a separate Google Maps app for iOS will be any better.

<comment><USER10> Seems like you answered your own question there. Why would Google make a good maps app? So that people on ios use it and they can show them sponsored places.

<comment><USER7> IMO, a Maps app with ads or 'sponsored places' is a shitty app. I will always choose a paid app without ads over a 'free' app with ads. That's also the main reason why I backed App.net.

When I wrote about a 'good Google Maps app for iOS' I meant one that has feature parity with Google Maps on Android and contains no ads. Up until two years a go, the Maps app on iOS was such an app.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> The submitted blog post from Google says, "Since 2005, we've collaborated with hundreds of transit authorities around the world to make a comprehensive resource for millions of riders to find out which bus, train, subway or tram can take them to their next destination." And I will note for the record that in the Twin Cities in Minnesota, where the transit provider is Metro Transit, Google Maps has been for at least two years a BETTER interface for looking up transit trips with easier usability than the Metro Transit website. I have discovered many interesting public transportation connections between unlikely places at unlikely hours of the day by searching Google Maps for my trips.

The bicycle information is also unmatched, and very helpful in the number-one bicycling city in the United States.

[http://www.bicycling.com/news/featured-stories/1-bike- city-m...](http://www.bicycling.com/news/featured-stories/1-bike-city- minneapolis)

On 8 October 2010, I had a very gratifying reply from the Google Maps team after reporting a problem with many of the Google Maps bicycling directions in Minneapolis:

"Your Google Maps problem report has been reviewed, and you were right! We'll update the map soon and email you when you can see the change.

"Report history "Problem ID: A12D-84A0-3A9F-A05E

"Your report: Many biking directions to locations on the West Bank campus of the University of Minnesota from suburban locations west of Minneapolis mistakenly go across the Mississippi River to the East Bank campus, even when the correct destination address is entered to select the bike route."

I was glad they fixed the problem, and especially glad about the friendly way their follow-up was communicated to me. It is this kind of response to a user error report that makes me eager to tell friends about Google Maps and leads me to tend to forget that there are still other companies in the geographical information business. Similarly, after I made a couple of suggestions to Google, it seems that Google has systematically improved its once APPALLING mapping of youth soccer fields in Minnesota, crucial for me as the parent of three "travel" soccer players.

<comment><USER12> Metro Transits site is a horrid abomination.

Just wonder how long until iOS gets the google-ified google maps that has all the transit information.

</comment></comment><comment><USER13> Also a key play in Google Now. From my office I automatically get a card for the bus stop located outside- I switched it off because I don't use that stop, but I'm interested to see how close I have to get to the subway for it to work.

</comment><comment><USER14> To achieve this, Google has introduced the GTFS (General Transit Feed Specification) format [1] which is becoming the preferred way to publish transit data. Hundreds of transit agencies around the world are publishing their GTFS feeds, enabling many hackers around the world to make applications that consume this data and improve users' travel experience.

[1] <https://developers.google.com/transit/gtfs/reference>

</comment><comment><USER15> This is cool, but I can't help thinking that it's unambitious, for Google. Let's imagine:

The product is not called 'Google Transit', but 'Google Teleport'. It is an auction-based system, like adwords. You click where you want to be, instantly a variety of costed journey options are listed, each of which can include segments using anything from walking to taxis to public transport to international flights. Google takes it seriously as a product, because it generates revenue. Over time, the system allows new, cheaper, faster, more energy-efficient transport options develop, such as minibus-taxis, which pick up and drop multiple passengers whose routes coincide.

Well, it's nice to dream. I think that it will happen eventually, probably as an outgrowth of one of the taxi-based startups.

</comment><comment><USER7> The HN title is misleading. According to the article, Google Maps hit a milestone of 1 million public transit stops, Google didn't recently add 1 million stops.

<comment><USER16> That's exactly what the title says. It doesn't say Google has one million _more_ public transit stops.

<comment><AUTHOR> Samuel_Michon was right. I fixed the title after he pointed it out.

<comment><USER7> Thanks!

</comment></comment></comment></comment><comment><USER17> I live in SF, and it's great to see the schedules on google maps, but the estimated time for arrival is off as of now.

<comment><USER18> Possibly because the last time SF public transportation was running on-time was in 1972.

</comment></comment><comment><USER19> So long OneBusAway....

<comment><USER20> Google has had Seattle bus schedules for years, and OneBusAway has _tracking_ , not schedules. Schedules are useless.

<comment><USER21> I wouldn't say schedules are useless, they are actually pretty helpful to humans (e.g. the bus is scheduled for 5:13, but in rush hour that means it will probably be there closer to 5:20). Tracking is clearly more helpful if available, however.

As an aside, thanks to the GP for showing me OneBusAway, it's exactly what I've been looking for!

<comment><USER5> A bus 7 minutes late during rush hour, that's funny.

During rush hour, bus arrival times are randomly distributed between 7 minutes late and "so late that you could say the next bus was 1 minutes early" (Any later and you just can't prove whether the bus that arrived was 30 minutes late, or the previous bus was abducted by aliens)

</comment></comment></comment></comment><comment><USER22> It would be nice if Google opened this up in some API, but having an API for this doesn't really align with their goals.

<comment><USER23> By creating the GTFS file format and convincing dozens of municipalities to use it, they basically did create an API. Except the transit organizations are running it and Google's using it to draw people into their products.

<comment><USER22> This is not an API. An API would be a service that takes these feeds in, parses it, and makes it easily query able by different factors.

<comment><USER24> APIs are hard. You need to give it time.</comment></comment></comment></comment>


Radius raises $12.4M from American Express And Others - <AUTHOR> http://techcrunch.com/2013/01/23/local-business-sales-intelligence-platform-radius-raises-12-4m-from-american-express-and-others/

<comment><USER2> Full disclosure -- I work here, and this is a really exciting time for us! We have so many things on our radar that it feels like we're just getting started. I'd be happy to answer any questions people might have.

</comment><comment><USER3> Sweet to see AMEX investing in real technology. These guys are ahead of the 'big data' curve.

</comment><comment><USER4> awesome</comment>


Show HN: We made a game this week-end! - <AUTHOR>

Hi Hacker News!
My friend and I [1] would like to share with you something we did this week-end.
We really like the idea of game jams like the Ludum Dare, and we'd like to participate, but it's often complicated for us, as we are often limited by the rules inherent to this kind of competition: we have to be available at specific dates, and the rules doesn't always work for us. For example: if you want to participate as a team in a Ludum Dare compo, you have 72h instead of 48h, and you are not required to publish your code.
We realized that what we really like is:
- To work together.
- The 48h stress (two days is perfect because it fits in a week-end).
- To work with a theme.
- To play with Open Source enthusiasts, so we can all learn from each other.
That's why we decided to create a quick manifesto, the Selfish Game Challenge [2]. It's just a really small set of rules that we will follow for our game sessions from now on. It's really just for us, but we thought it would be nice to share it with people.
The game we made is called "REVERSIBLE" [3]. We rushed a bit to finish in time, and it needs a lot of polish, but it feels good to have something playable at the end. It's about cells and evolution, and we quite like it!
It's open source, so don't hesitate to have a look at the repository too [4].
[1] http://lisezmoi.org/
[2] http://lisezmoi.org/selfishgame/
[3] http://lisezmoi.org/reversible/
[4] https://github.com/lisezmoi/reversible <comment><USER2> [R] and [P] leys are not working (Chrome, Linux). Is this supposed to be so?

Played for 228M years and still didn't get the rules :P

<comment><AUTHOR> Oops it's fixed, thanks! And congrats!

</comment></comment><comment><USER3> Very cool, had no idea how to play. A tutorial would be nice. Or is it meant to be discoverable?</comment>


6 Ways to Increase Your Confidence As You Code - <AUTHOR> http://www.philosophicalgeek.com/2008/03/06/6-ways-to-increase-your-confidence-as-you-code/ <comment><USER2> Unit testing should be at the absolute top of the list. My current project is thoroughly wrapped in unit tests, and it gives us the power to make deep structural changes very late in the development process. I've never felt so confident that a first release will be rock solid.</comment>


How to make reputation markets work - <AUTHOR> http://dayvancowboy.org/agalmos/ Motivation<p>This is the post-scarcity economy. Right now. Except that brain cycles are still scarce Information abounds. Attention does not. And who do we pay attention to when everyone is giving information for free? <comment><USER2> Rather cryptic, in both wording and presentation; took me three reads to grasp it :-s. I think some of the words used are made up - "agalmos" only returns 3 results on google.

Effectively, this bizarre... article?... proposes that we apply karma weighting system where the more a user up-mods, the less each up-mod from that user is worth.

As blatantly flawed as the above summary sounds, the article generated some interesting thinking for me, particularly the contrast of the ranking mechanisms available to Twitter and Hacker News; you can change ranking mechanisms significantly by changing the structure of the content.

<comment><USER3> It seems to be a Page Rank for social networks.</comment></comment>


Show HN: Get the list of TODO comments with verbose details - <AUTHOR> https://github.com/kamranahmedse/git-pending <comment><USER2> Hi It's nice tool! but, there may be too few annotation types. `'HACK', 'OPTIMIZE' is exist in ruby style guide ([https://github.com/rubocop-hq/ruby- style-guide](https://github.com/rubocop-hq/ruby-style-guide)). Can't add they? or make to able to add they by user them self.</comment>