I Want to Fix Goodreads - <AUTHOR> http://prepend.com/culture/2020/09/fixing_goodreads.html <comment><USER2> The earlier related thread: [https://news.ycombinator.com/item?id=24451428](https://news.ycombinator.com/item?id=24451428)

</comment><comment><USER3> Howdy, Mek here -- I run [https://openlibrary.org](https://openlibrary.org) over at the non-profit Internet Archive (the folks that bring you the Wayback Machine).

Open Library is an free, online California Library with millions of digital books to read and borrow. It's additionally an open catalog of millions of books which you may track like goodreads.

Best part? If it's not to your liking, the whole project is open source! [https://github.com/internetarchive/openlibrary](https://github.com/internetarchive/openlibrary)

Open Library has a very strong volunteer tribe of book-loving librarians, developers, and designers working to make the project better for our community.

We meet once a week at 11:30am PT. Ask me for the link: firstname.lastname@example.com

RIGOROUS BOOK RECOMMENDATIONS: We're also cultivating a 2nd non-profit open source experiment called TheBestBookOn.com (it leverages Open Library's catalog) which allows book-lovers to ask for or make rigorous book recommendations:

[https://github.com/Open-Book-Genome- Project/TheBestBookOn.co...](https://github.com/Open-Book-Genome- Project/TheBestBookOn.com)

It's a very early prototype (we discuss development during our weekly Open Library call). It's being organized by Lauren Milliken, Aasif Khan, and myself and we'd love more contributors to join the discussion: email@example.com

<comment><USER4> It seems like there is a strong desire to _not_ make OpenLibrary an alternative to Goodreads.

See discussions here[1] and here[2].

[1]: [https://github.com/internetarchive/openlibrary/issues/3103](https://github.com/internetarchive/openlibrary/issues/3103)

[2]: [https://github.com/internetarchive/openlibrary/issues/1964](https://github.com/internetarchive/openlibrary/issues/1964)

<comment><USER5> And for good reason.. many of those requests involve a much higher level of maintenance (moderating content like reviews, building a social network, etc)

I like that OpenLibrary is trying to be a source of open book data. But I am a bit concerned about the quality of the data (just a feeling as I am still digging into it but there are open questions on how to handle things like multiple authors, etc)

<comment><USER3> We have a small network of librarians on a slack channel who have merged more than 10,000 duplicate works.

Librarians (which is a permission role) also have the ability to merge Authors, so data improves over time.

Furthermore, members of our community coordinate with Wikidata, VIAF, etc -- we match up identifiers and sync data (and in this way, bots are able to make meaningful changes in bulk on a rolling basis).

See: [http://github.com/internetarchive/openlibrary- bots](http://github.com/internetarchive/openlibrary-bots) (most of which are built using the OL client: [http://github.com/internetarchive/openlibrary- client](http://github.com/internetarchive/openlibrary-client))

e.g. [https://github.com/cdrini/openlibrary-wikidata- bot](https://github.com/cdrini/openlibrary-wikidata-bot)

</comment></comment></comment></comment><comment><USER6> My problem with Goodreads isn't the recommendations engine. The recommendations are fine. I'm actually skeptical that any ML recommendation engine is going to recommend _better_ books than my friends will. The only thing I expect from a recommendation engine is _discovery_ , by which I mean finding new things that neither I nor my friends have read that look interesting. Whether they're good is another story altogether...

My problem with Goodreads is actually the site performance. It's one of the most abysmally slow sites I've ever had the displeasure of using. Loading from page to page takes so long, I wonder if they're running on 486 machines in the background. It's unfathomable to me how something that has such a monopoly on the domain can have such terrible performance.

It's so bad, that I often don't even bother going to Goodreads except when my TBR pile empties out, and then I spend as little time as I can (which is a long time because it's OH MY GOD SO SLOW) so I won't have to visit it again for a while.

I wish it was open source, or something, so I could contribute to improve response times...

<comment><USER7> Really? GoodReads reviews have devolved to complete garbage. The first few pages of reviews are always from the same people trying to be GoodReads famous.

Everyone gives everything 5-star reviews because they get more likes for positive reviews. The user reviews mean nothing. I'd like to have a way to see what people actually think about books. But on GoodReads that's almost impossible to find.

I'm surprised there isn't a rotten tomatoes for books. I've considered starting it myself, but I don't see much money to be made from it. Maybe that's why...

<comment><USER8> Interesting point about reviewers skewing positive for popularity. My big issue with most recommendation engines is that they're biased towards false positives rather than false negatives. The other way would lead to fewer, more focused recommendations.

In particular, I'd like to see an engine take a reviewer's dislikes into account more. If someone likes (switching to film for an accessible example) Cinderella, The Little Mermaid and Mulan, their opinion on Brave isn't going to carry much information as they're pretty indiscriminate about Disney films. But if they love Mulan, dislike Little Mermaid and hate Cinderella, their opinion on Brave is more likely to line up with my own.

<comment><AUTHOR> I would think that the challenge is to find good recommenders rather than specific recommendations.

If I can find similar tastes, maybe a little bit different, then that will result in good recommendations.

So I would want to find people who both like similar things but also dislike similar things. It will be interesting to find people my similarity and see which are best at finding books I like.

<comment><USER6> I follow my friends, and my friends tend to have good taste! This is essentially my strategy. I do have a few friends who have recommended books that I didn't like, so I just don't listen to their recs anymore. Solved problem!

That's one of the problems I have with ML-based recommenders. I can't identify any particular ML algorithm, and therefore I can't say "This one has consistently given me bad recommendations, so I'll ignore it. But I do like this one over here." Whereas with my friends, I know that Lori and Nicole gives good recs and Brad doesn't, so I'll ignore Brad's and read recs from the other two.

</comment></comment></comment></comment></comment><comment><USER9> Good lord what I wouldn't give for a better goodreads. Never has so much useful and actionable data been squandered. For example, I could write pages about how bad the "top books" lists are. The Goodreads Choice Awards are purely and literally popularity contests, for example. Why would this be the case - you have millions of user ratings, you should be using those to surface exciting and unknown books rather than throwing people back at the same few authors they already know. The lists work exactly the same way - they discard ratings entirely and only take into account the quantity of books. It would be as if you said that the top 40 is the best music because everyone listens to it.

So you don't think I'm all talk, a while back I got so fed up with this that I wrote my own script to scrape goodreads and find the actual best books, not just the most popular, and I found a wealth of really good and unknown books, including two books that are now my favorite books of all time. It was a side project that took me an hour. Why goodreads can't do this is utterly beyond me.

Aaaargh!!!

<comment><USER10> I'm confused. What you describe is really just another form of popularity contest, no? Unless you have a set of reviewers that you value over others. One might call them the critical reviewers. (No, I'm not trying to be subtle)

So, what books did you find? Why not make a post on your method?

<comment><USER9> Not exactly. Goodreads will value a million people giving a book 1 star higher than 20k giving it 5 stars. I just sorted by average score.

I posted the books in this thread (sorry, on mobile right now).

<comment><USER10> But that is still a popularity contest, of sorts. In general, any ranking system is a popularity system. Which is logical, as there is no objective ranking of books. That is, it isn't an ordered set.

That said, I can see value in providing a score not just in the items, but on the ranking system used. Could even be adaptive based on genre. (Indeed, I would love a system to see if any books have factual errors and such. But, that is just trying to reinvent the citation systems of academia.)

And understood on the mobile. Same boat for me.

<comment><USER9> I don't understand. A book with a single review could place higher than a book with millions. How is that a popularity contest?

<comment><USER10> Depends on who reviewed it.

Easier to think of this from the other side. I have a few friends that, if they tell me to avoid something, it can typically override however popular something may be.

</comment></comment></comment></comment></comment></comment><comment><USER11> I am a Goodreads employee. this is a burner account. i could be fired for posting.

we love Goodreads and we know it is bad today. we are working to fix it. there are very few of us. we are trying. we are making big changes soon.

<comment><USER12> > i could be fired for posting.

Yikes, that's rather dramatic! Especially since all you've said is "we're working to fix it. changes soon." That's a pretty harmless statement, I would think.

What gives you the idea that such statements put your employment at risk?

<comment><USER13> I downvoted you but I feel bad for not explaining why.

One of my memories: Being pulled into a side office and grilled for a half hour for posting a similarly harmless statement to HN.

So your comment triggered mild PTSD.

It's not your place as an individual employee to post about your employer. You work in a team setting. If the team decides it's appropriate to post to HN, then that's fine. But you alone do not get to decide that.

<comment><USER14> What? You are suggesting that a person is unable to share his personal experiences and opinions unless their employer agrees? Obviously this may damage the company, but personally I have no sympathy for a company worth billions of dollars who is not known for their fair treatment of workers at all. I see nothing immoral in the original commenter releasing this information.

<comment><USER13> It doesn't matter whether you see something immoral about it. Employers do punish employees for doing so.

<comment><USER14> Yes, that is why he used a burner account.

</comment></comment></comment></comment></comment></comment><comment><USER15> Everyone's talking about recommendations. I don't use GoodReads recommendations at all. It's a social network with a focus on books where people will actually read and discuss books and book reviews. It's also a good way of chronicling what books you read. I wish they'd focus more on that part.

<comment><USER16> ditto. There's already too many books to read and recommendations everywhere.

<comment><USER17> Yeah, it's hard for me to take the complaint too seriously. The problem with books isn't that it's hard to find the good ones. It's that you get this tremendous backlog because you're short on time.

</comment></comment></comment><comment><USER18> _> They recommend different versions of books I've read. They recommend two different versions of Lord of the Rings (one of my favorite books), but I guess they don't know these are the same book._

This is failure mode of recommendations is so common and so catastrophically useless that I do not understand how it has not been solved.

I'm into photography, so every now and then I buy a lens from Amazon. Immediately after I do, every Amazon ad banner on every website in the world switches to advertising that specific lens, for like the next month (I guess until I buy something else).

Lenses are very specific, expensive, and singular. There is almost no reason to ever have two of the same lens. The day after I buy a lens, it is practically the least likely product _in the world_ that I will buy.

Show me anything but that. I mean, actually, don't. I like this failure mode because it makes it easy to tune out the ads. If they showed me related gear (perhaps filters that fit the lens), I might get suckered into spending more.

But, seriously, how is this not fixed?

<comment><AUTHOR> I think this is because the ad networks don't have insight to your purchase data. So they don't know if you've bought and converted or not, but know that people who searched for something are more likely to buy if advertised the dickens out of for the next few weeks.

That's my theory at least, but even Amazon will show ads for stuff I bought on amazon. Not sure if that's just them being stupid.

</comment></comment><comment><USER19> The status quo regarding Goodreads and it's position in the industry is really interesting.

There is not a single competent alternative to Goodreads, yet Goodreads just sucks! As simple as that, the UI is horrible, the UX is disgusting, the perfomance is that of toaster and still people are using it.

I personally am using it for the last 5 years while continuously searching unsuccessfully for alternatives. If you think the website is bad, you should check out the Android app, never in my life have I seen a worse app by a popular company.

I got so frustrated by Goodreads that on multiple occasions I thought of starting a competing product just to challenge the status quo, but as soon as I started dwelling deeper into it, I realized that there is just no real viable business model for it to be worth it.

I guess that explains the current status of Goodreads and why there are so few competitors.

How do you monetize a social network about reading books? I have spent way too much time thinking about it, yet failing to achieve a result.

1)You can't really sell books, since Amazon is already so well entrenched and honestly books aren't a really hot commodity.

2)Subscription for audiobooks? Again there is Audible, and Scribd is also doing a phenomenal business doing it, you pay $9 and listen to as many as you want audiobooks.

3)Affiliate marketing? Goodreads already does it, and it isn't really a business model with a good foundation.

4)Customized ads? This might be the "least" worst solution, although what could you advertise to people who read books? Their LTV (lifetime value of customers) isn't really high.

5)A paid social network? Good luck trying to grow a social network which asks it's users to pay $1 monthly.

6)The latest and craziest idea I had regarding it, was to make it a hybrid of Goodreads and LinkedIn. Where employers can see what types of books are their applicants reading. I.e. if I am looking to hire a backend intern, I am sooner going to hire the intern who read in his free time Effective Java, Clean Code, etc. since you can pretty much gain a good overall picture about a person by looking at the books he reads.

I spent way too much time obsessing over this...

<comment><USER20> > I realized that there is just no real viable business model for it to be > worth it

I think this is key. It is kind of amazing that on a site all about startups and finding "product/market fit" every single thread about goodreads completely ignores any aspect of viability and expects someone else to just spend money for purely aesthetic reasons like it is a charity project.

Is goodreads perfect? Good lord no. If _I_ owned it, would I spend money trying to improve the search or the mobile app? Hell no. Hire 5 developers at $1 million/year to...what exactly? Is a better mobile app going to translate to tens of millions of dollars of revenue somehow?

It isn't like LibraryThing or StoryGraph or BookSloth or Riffle are actually any good and they have 5+ years of development to solve all the alleged issues. Yet everyone in this thread complaining about Goodreads is still using Goodreads instead of them.

<comment><USER21> Money is where ideas thrive. I would build something based on recommendation based on users who you like. I like someone and I want to know the books they like and more and more of this. so essentially Facebook for Book recommendation. I know someone and so I know what books they read. User can choose to publicize the recommendation or to certain group of people or private.

</comment></comment></comment><comment><USER22> After reading and heavily agreeing with this post, I came to the conclusion that either goodreads is not really trying, or -more likely- the data is just not good enough to make decent recommendations. There are so many biases in the review data that are impossible to fix in any kind of sparse matrix recommendation algorithm. For those who want to try anyway, it might be worth downloading an existing dataset (1) (104 million reviews) and try, before worrying about scraping and api limits.

The only solution (in my experience) is to get some other way of quantifying content, like Spotify does by manually labelling tracks. After some ddg I found storygraph (2), which does this. Its search engine is quite impressive, might be worth trying.

[1] [https://sites.google.com/eng.ucsd.edu/ucsdbookgraph/home](https://sites.google.com/eng.ucsd.edu/ucsdbookgraph/home) [2] [https://beta.thestorygraph.com](https://beta.thestorygraph.com)

<comment><USER23> the problem is that when you step out of genre fiction, you cant just recommend a book with a similar plot or setting, it needs to have a similar style of writing and sensibility and thats very hard to determine.

the best way is friending/following people and learning their tastes compared to yours

e: if you go to a specific book and look up similar books, goodreads actually does a pretty good job [https://www.goodreads.com/book/similar/1994351-j-r](https://www.goodreads.com/book/similar/1994351-j-r)

<comment><USER24> > the best way is friending/following people and learning their tastes > compared to yours

If only goodreads could somehow find others who like the same things you do and use it for recommendations!

Joking aside, they might already be doing that, but if so, they suck at it. They have enormous datasets of people and their tastes, yet their recommendations always seem to be simply matching genres that you happened to like a book from. You liked _Watership Down_? Here are 10 other books with talking animals!

If you and I can successfully identify people we share tastes with, then goodreads should be able to, too, they have even more data to base this on.

</comment></comment></comment><comment><USER25> Book rating and recommendations are an impossible problem to begin with. If you browse through Goodreads, you will see that _everything_ is rated 4 stars. People only finish and rate books they like, and it's impossible to compare books of different genres, lengths, time periods, complexity etc. on the same objective scale like it is for movies or TV shows.

<comment><USER26> So look at which books I finished and rated highly, find people who overlap strongly with that, and recommend the set of {their books - my books}.

As I recall, this is basically what won the Netflix recommendation engine contest. There's going to be a lot of computation in crunching the numbers, but it's not hard to come up with something better than "recommend what has the highest average star rating".

</comment></comment><comment><USER27> How do people build recommendation engines?

Like, even when you have access to the site's entire API and can write your own client for it, there's still the fact that their recommendations are generally better.

It sounds like an extremely important value-add. There are many sites that I will only use the app for because that is where the recommendations are shown. But to me taking a user profile and an article and spitting out a list of articles seems like magic.

I also find it weird that in 2020 Goodreads is the status quo for book recommendations.

<comment><USER28> I get the sense that part of the problem with book recs vs. YouTube video recs is that you can evaluate the quality of a video recommendation super quickly (click in, find out like 10 seconds in that you don't care for it, click out).

With books, actioning a recommendation involves

1) getting a copy of the book (digital or physical, both cost money or at minimum the time required to pirate),

2) starting to read it (with the sunken cost of time and/or money + the drive to "give it a chance" both looming over your shoulder, costing you more time),

3) eventually either getting to the end or swallowing your pride and bailing.

I think you'd start to see actually useful systems here if you could even eliminate step 1; make it easy as clicking in from a recommendation directly into reading mode.

Also solves a critical issue for the engine: gauge recommendation quality by how soon people click out of the rec, as opposed to waiting for the user to go through steps 1-3, and care enough to come back and provide a rating. Way more data to work with.

Of course, this all skirts the Actual Problem: the amount of IP law you'd have to trudge through in making enough books this accessible.

<comment><USER28> I also recently googled a quote, found it in a specific page in a book hosted on [https://www.pagebypagebooks.com/](https://www.pagebypagebooks.com/), and just impulsively clicked through the whole book because it happened to capture my interest, and only "demanded" that I commit to a single page at a time. Hard to explain, but it felt more natural in that every-page-is-a-URL format to trivially bail at any page, without the weird apprehension I get from the same action in an e-reader / physical book.

The website is super old/limited, but if all books were that trivial to access + click through, I think we'd see something more interesting here. Made me wonder how hard it'd be to convert the entirety of Project Gutenberg into that sort of Web 1.0 format automatically.

</comment></comment></comment><comment><USER29> The most important feature of goodreads for me is: [https://www.goodreads.com/new_releases/2020/9](https://www.goodreads.com/new_releases/2020/9) This shows you new releases of authors whose books you have read.

The recommendations basically crapped out on me after a few hundred books. It seems there are a few cliques (graph) of recommendations that are pretty independent and if you have read these cliques in a genre recommendations just suck.

But plz give me some query syntax like [https://docs.microsoft.com/en- us/windows/win32/lwef/-search-...](https://docs.microsoft.com/en- us/windows/win32/lwef/-search-2x-wds-aqsreference) and most importantly the ability to filter out certain tags.

<comment><USER30> Seconded. The "new releases of authors I've read books from" is one of the things that would give me the most value -- if it actually worked properly, which for me it doesn't, since it only seems to show _some_ random new books from _some_ of "my" authors. Sigh.

</comment></comment><comment><USER31> I don't create about recommendations as much. I get those from other sources and already have enough of a backlist to last a life time.

Goodreads for me is for storing my history and ratings. Same with IMDB for movies. Both sites are terrible (and owned by Amazon), but I don't see much value in clones that don't do anything completely new.

</comment><comment><USER32> Has anybody ever used stack ranking to power book recommendations? Instead of rating books on a scale of 1-5 star you instead rate each book relative to every other book you've ever read.

Some other factors that I think could be used to create a high quality book recommendation engine on top of stack ranking: number of books read (the top 5 books from someone who has read 200+ books is a stronger signal than someone who has read 10 books) and release date (give extra weight to older books to reduce recency bias).

What do you think? Am I onto something or just spewing some sat night nonsense?

<comment><USER33> Are all books comparable linearly like this though? I could see separate stack ranks for different genres (practical books, sci-fi, relationships, whatever), attributes (readability, teachability if applicable, subject matter interest), or more.

I also can't help but think in graphs, so I could also see horizontal-ish linkages between the stacks as well. Each book, then, could have a number of attributes that get an independent stack ranking for each one, leaving you with a constellation score as well as a focused look at _what_ the book is good at or focused on. I could see it getting unwieldy though.

Thinking through this, maybe genre stacks based on some collapse of attribute ranking scores.

</comment></comment><comment><USER34> Honestly, I feel that most tech goes this way when you have a monoply. Everything has a nature lifecycle, theres new life, interest, peak, and death/replacement. However, with some of these large corps (i.e. Amazon in this case), they can choose to hamper the growth and avoid competition.

A lot of our tech can/should be a lot better than what it is. Use the tech to help people collaborate/get together/share. That was the great thing about reddit in it's hayday.

</comment><comment><USER35> My wish: show me all the books my friends have reviewed, and allow me to sort by number of reviews. I want to see what a _plurality_ of my friend recommend.

</comment><comment><USER36> I'm skeptical of this person's ability to "know" what they don't want to read. E.g., they are recommended Shoe Dog and a King novel, which they claim they don't want to read. However, if other people have read similar books and rated them similarly to this person _and_ have read Shoe Dog and that King novel and rated those well, then this person may like those books. It seems they are assuming they won't like them, but not for particularly strong reasons. One of my favorite authors is Haruki Murakami and I would have rated Colorless Tsukuru a 2 or 3. If that were the only Murakami novel I had read and I made the same assumptions this person made, I would have missed out on some of my favorite books.

<comment><USER37> Huh, I get recommended Murakami a lot but really didn't enjoy Colorless - maybe I'll try a different one.

<comment><USER38> Try something pre-2010. The 2010s aren't really representative of his other work nor, to be honest, quite as good as his earlier books.

</comment></comment></comment><comment><USER39> I love goodreads, but I've wished for so long for two things way more basic than good recommendations which I don't really care about (except the finding people with similar ratings, I would kill for that):

\- Proper search engine (all books with x+ ratings, rated y+ start, in genre z). From what I've heard one has to scrape the site to get any useful information. \- Forbidding rated reviews before release dates. This seriously skews ratings for some genres and is insanely annoying.

Okay maybe three... managing shelves is super slow. I want to be able to drag and drop and have things instantly re-ordered without a reload.

</comment><comment><USER40> I've been building a prototype over at [https://longtweetsapp.com](https://longtweetsapp.com) because I've had the same problems. It's hard to find books so I took a more personalized, data- driven approach, starting with Twitter networks, because I was tired of bestseller and most popular lists.

It's still early goings, but I'd love feedback - I'm dogfooding it with interesting results. Send me a note: email@example.com

</comment><comment><USER41> Hi HN. I come from a parallel universe in which book recommendation systems are not based on genre, ratings or communities. Book recommendations are based on their content.

(A silly idea I have been thinking about: [https://www.lessmarcos.com/posts/2020/09/content-based- recom...](https://www.lessmarcos.com/posts/2020/09/content-based- recommendation-systems/))

</comment><comment><USER42> You should check out: [https://beta.thestorygraph.com/](https://beta.thestorygraph.com/) It's still in beta but I've tried it and like it a lot. One thing that it's missing that is holding me back from a full jump over to it is an android app. The mobile site looks good, but I think an app would substantially improve usability.

</comment><comment><USER43> There are many Goodreads competitors. To the others already mentioned, I'll add [https://inventaire.io/](https://inventaire.io/) , which is fully free software and based on open data (Wikidata).

It's useful if you want to have full control on your own book catalogue while not having to produce all the data yourself.

</comment><comment><USER44> Everyone wants to fix Goodreads except Amazon.

</comment><comment><USER45> > Why would they recommend this book?

If they're using collaborative filtering, there probably isn't a simple explanation. Basically, you feed in a list of "<user id>, <book id>, <rating>" and the algorithm generates a feature vector for each book and each user. So the reason some book gets recommended is because... the dot product of that book's vector with your vector was high. You can do this easily with off-the- shelf libraries, like Surprise[1] (I'm using that lib in my startup[2]).

At least this is what happens in matrix factorization methods. Recommendations from k-nearest neighbor methods can be explained more easily, but knn doesn't scale as well.

This is a minor drawback of matrix factorization--people have been shown to trust recommendations more if they understand how the recommendations were generated. Twitter recently published a super interesting paper[3] about how they generate recommendations at scale, and as a bonus their method is explainable. They create a model that describes the communities in Twitter-- groups of people who follow the same set of influencers. Users and items are represented by vectors, where each element of a vector describes to what degree a user/item fits in a certain community. When generating recommendations, you can get the user's top communities and then fetch items for those communities. If you generated a text description for each community, you could include that with each recommendation.

[1] [https://github.com/NicolasHug/Surprise](https://github.com/NicolasHug/Surprise)

[2] [https://findka.com/](https://findka.com/)

[3] [https://www.kdd.org/kdd2020/accepted- papers/view/simclusters...](https://www.kdd.org/kdd2020/accepted- papers/view/simclusters-community-based-representations-for-heterogeneous- recommendatio)

</comment><comment><USER46> There is at least [https://gitlab.com/Alamantus/Readlebee](https://gitlab.com/Alamantus/Readlebee) "An attempt at a viable alternative to Goodreads", in active development.

Blog post from yesterday: [https://robbie.antenesse.net/2020/09/11/one-year- of-readlebe...](https://robbie.antenesse.net/2020/09/11/one-year-of- readlebee.html)

Edit: oh, there is also Bookwyrm, as mentioned in this megalist: [https://git.feneas.org/feneas/fediverse/-/wikis/watchlist- fo...](https://git.feneas.org/feneas/fediverse/-/wikis/watchlist-for- activitypub-apps#reviewing)

</comment><comment><USER47> > My idea for an 11-star experience 1 in finding new books is that Goodreads > knows me even better than I know myself and constantly recommends the > perfect book.

> goodreads shows me five books that I don't want to read.

I wonder if these two ideas are at odds with each other. Imagine for a moment that recommendation engines were solved problems, and definitely worked given the above statement. They know you better than you know yourself. Would it's recommendations likely only include books that you obviously wanted to read? Or would they include books you didn't know you wanted or needed to read? I mean this in terms of judging the books by their cover rather knowing about their existence. Isn't it likely or even probable that the majority of books recommended would be based on the value they contribute to something deeper than the pure enjoyment purposes?

As an aside, I remember in a college literature class I took the instructor told us that it's up to the reader to derive value or meaning from stories. This was a class that studied short stories of early American authors. Most of which were slice of life narratives that didn't have any apparent meaning, or commentary from the authors themselves. The exercise was to study the characters, scenery and tone and try derive what might either lie beneath the words or story themselves. Whether the ideas we deduced from the stories were accurate (and in most cases probably were not) the value Of the process was of critical thinking about the stories that made us consider and express ideas and beliefs we normally don't.

Back on topic, would a working recommendation engine likely suggest things that on the surface seemed either boring or blatantly unappealing that would provide tremendous value if we put work in to reading and studying?

That being said, is it possible that current recommendation engines are already working? Most are at least driven by reading behaviors of the masses, so it seems like it might be feasible that that Steven king book that is unappealing to you is something you should actually read.

(This is not including recommendations for books you have already read in different languages which seems like an obvious bug, but then again reading books you've already read in different languages might be an excellent way to become more fluent in a new language or gain a deeper understanding of translation of ideas between languages....)

So, maybe the tech isn't something that needs to be fixed. Maybe we just need to be open to what the tech is telling us?

<comment><USER48> I think you are right. Being recommended a book I've never heard about by some author I'v never heard of by some computer system, I'm probably gonna dismiss it. However, if I've seen it in a bookstore, read about it in a paper, heard a friend talk about it etc. _then_ I might act on the recommendation.

Basically being exposed to something enough times. First time and a cursory look, most things don't look to exciting. This goes for everything. Movies, restaurants, gadgets..

</comment></comment><comment><USER49> One thing I'd add about the UX is that the search bar is buried below the fold on the homepage of the desktop version. Everywhere else, even on mobile, it's at the very top. It makes it a little more difficult to just jump to their site and start searching.

</comment><comment><USER50> One interesting facet of all these recommendation and ratings systems online (Yelp, Goodreads, Rotten Tomatoes, etc.) is that they don't provide a key value that in person recommendations do.

When a person recommends a restaurant they are attaching blame for the restaurants performance to themselves. Its performance is a reflection on them and their credibility. It is very hard to replicate this on the internet, a place where people can suggest things with very little responsibility.

If I strongly suggest a movie to someone and the movie sucks, I can be blamed for that. I don't know how to replicate that comfortable eschewing of responsibility that in person recommendations provide.

</comment><comment><USER51> I don't care about reviews or recommendations. I have a to-read list that will last me the rest of my life easily.

The thing I hate about goodreads is there are two search fields one to search books you've read and one to search every book.

I've wanted to search books I've read like 5 times in my life but for some reason I always end up using the only search books I've read search bar and I get no results. Just make it a checkbox or return two lists or something.

</comment><comment><USER52> I'm trying to tackle a small part of this by building [https://www.readthistwice.com](https://www.readthistwice.com) which gives contextual recommendations from 1300+ leaders. What I mean by contextual in this case is every recommendation comes with a verified quote from the recommender on why they recommend the book.

</comment><comment><USER53> Haven't used it myself since it's in beta but I have been keeping my eyes on this for a while: [https://beta.readng.co/](https://beta.readng.co/), [https://twitter.com/readngco](https://twitter.com/readngco)

<comment><USER54> Hi, I'm building this! Thanks for sharing.

It's pretty basic right at the moment and we've a lot left to build (largely a reading list only, we've got more in the works) – but here's my profile as a preview, since our marketing site & messaging needs a bit of work: [https://beta.readng.co/user/joe](https://beta.readng.co/user/joe)

<comment><USER55> One of the things I always wished was built into goodreads was a good system for running a book club. They have groups, and those are close. But it just seems like they took Facebook groups and tried to make it work for a book club. It doesn't feel right to me.

Is that something thats on your roadmap?

</comment></comment></comment><comment><USER56> Goodreads doesn't get enough love from Amazon, It always seemed really odd to me that the recommended books in the kindle store were better than goodreads even though it's all the same company. It seems like a wasted opportunity. There are also numerous bugs I've ran into on the app that I just work around.

</comment><comment><USER57> A buddy of mine has started on a better designed alternative to Goodreads. It's in early access right now but it has potential and I'm looking forward to seeing what else he adds to it: [https://readng.co](https://readng.co)

</comment><comment><USER58> > I wish there was some way to note books that I don't want to read.

Minor point but there is a "Not interested" button in the screenshot shown above this paragraph. While Goodreads' initial suggestions were off-the-mark, I wonder if using that would help?

</comment><comment><USER59> Isn't it the same problem with Amazon? It shows me different versions of the 5 products I last viewed. And unlike, goodreads it seems like there is clear monetary value for amazon in fixing product recommendations but somehow it is the same for years.

</comment><comment><USER60> make it like myanimelist or mydramalist, one of those sort of websites....

such websites were created by fans can cater to what fans care for:

1- Finding out what's coming next, in an easy to view format

2- Finding out what's related to the item I'm currently checking, and it's place in the overall verse's sequence

3- Damn simple tracker for the item I consume

4- Simple rating and genre system

In other words, you want to fix goodreads? create a mybooklist.

Because MAN it is SO hard to find out when my favorite author is having a new book coming out, or if I discover a new author, wtf is their flow of their book series, often ending in me accidentally reading the book out of order.

</comment><comment><USER61> For all the AI and machine learning being thrown in the pot of every dish being made, they still haven't figured out that if I just bought a flashlight, I'm not likely to get a double-pack to save $2 anytime soon.

</comment><comment><USER62> I just checked my Goodreads recommendations. It is very good at recommending books by authors I really do not care for in genres I really enjoy. I wonder if these kinds of systems fall over for that situation.

</comment><comment><USER63> Fun fact: for like 2 years long, every time i opened Goodreads.com i saw the exact same sentence: _" Because Deborah liked.... she discovered...."_

The exact same books/text for about 2 years. Torture...

</comment><comment><USER64> One of the best parts of Goodreads for me is the Listopia search. Regular search doesn't get me much, but this search is fantastic for going really niche on certain topics.

</comment><comment><USER65> Instead of jumping to a recommendation engine, I would think about the analog solution (e.g. nybooks.com, newcriterion.com).

Pretty much has solved my book recommendation pain point.

</comment><comment><USER66> I saw "amazon book clubs" today as a preview and wondered how indiebound integration could help make a third party book club a reality

</comment><comment><USER67> Does anyone know a (ML-based) recommendation system for video games? I've never heard of one, except perhaps Steam?

</comment><comment><USER68> If one has to build a Goodreads competition, How can one go about getting books data, book cover images etc ?

<comment><USER69> The Google Books API might be a good starting place.

[https://developers.google.com/books/](https://developers.google.com/books/)

<comment><USER70> I think building project around such obscure Google API is too much of risk. It's can be discontinued literally any moment.

</comment></comment></comment><comment><USER71> I just want to be able to find people who like the same obscure books I do.

</comment><comment><USER72> Is the recommendation engine bad on average or bad for you?

</comment><comment><USER73> I'd like to propose a different thing to fix first: when I open that page, I can't scroll with the keyboard unless I first click in the main content area. I.e. the focus is initially somewhere else.

</comment><comment><USER74> Nice write up and great Jeff Bezos story!

</comment><comment><USER75> 3 of the things most people miss is

A) The intersection between people who love books and love technology is rather small

B) There is no 'monetization ramp up' when producing products for books and publishing

Monetization if you are a startup in books and publishing is via either

Amazon Associate - However, Amazon will kick you out if they want to enter the same business

Example: [https://the-digital-reader.com/2016/06/15/amazon-brings- the-...](https://the-digital-reader.com/2016/06/15/amazon-brings-the-hammer- down-on-discount-ebook-sites/)

Selling Ads to Authors & Publishers - However Amazon will manipulate results

Example: [https://the-digital-reader.com/2017/11/22/amazon-now- punishi...](https://the-digital-reader.com/2017/11/22/amazon-now-punishing- authors-running-bookbub-promotions/)

so there is no easy path

Contrast that with something like Apps or Shopping where you can use affiliate networks and monetize right from the start. And a competitor like Google doesn't have control over the Affiliate networks (which in books, Amazon has)

C) Most authors are not tech savvy and keep doing crazy things like giving exclusivity to one store and create monopolies. They then get screwed by these monopolies

Why would you step into a market where

A) The competitors are monopolists who have no compulsion against doing illegal things

B) The participants (authors and Publishers) are in the 1950s technology wise

C) The participants (authors and publishers) keep doing strange stuff like give one ebook store exclusivity

CONTRAST what happened with Apps versus what happened with Books

Apps

Amazon wanted pricing control of apps and exclusivity. Developers gave them the middle finger

Amazon tried unlimited apps (including unlimited IAP purchases if you are on subscription) and developers didn't play along. They had to close down the service

Books

There were FIVE major stores - Kindle, Sony, Apple, B&N, Kobo

Amazon offered exclusivity to authors in return for (the comically bad incentive) - allowed to make book free for 5 days every 90 days, allowed to discount book as a special Kindle Countdown Deal for 7 days every 90 days

Authors gave Amazon exclusivity. Helped it get from 30-40% market share to 60-70% market share

Now completely dependent on Amazon

Kindle Unlimited - Amazon won't give authors and publishers data on how many people borrow, etc. Only 'total number of pages read'

Authors play along and now many are completely dependent on income from this 'subscription service' where they don't even know how many readers downloaded their book, how many read X% etc. Just one vague metric of 'total pages read by all readers'

 __ __ __ __ __ __ __ __ __ __ __ __

So, to do well in this market you are suited for it IF

A) Your default is to take advantage of authors and publishers

OR

treat them like naive sheep who don't understand the basics of business

B) You are willing to go up against a large monopoly that will also do illegal things without remorse

Amazon just hired Keith Alexander - head of NSA during warrantless surveillance

Do you really want to compete against that?

C) somehow bridge the gap between books and publishing and technology

while keeping in mind that most of the top quality supply is controlled by 5 large companies (the Big 5 very big publishers)

 __ __

You would be hard pressed to find ANY business to go into that is worse

The saying - An intelligent enemy is better than a stupid friend

This is an ecosystem where - your friends are naive (in effect, clueless), and your enemies are stupid (doing all sorts of illegal things because they are a monopoly and know the US does @#$$-all to monopoly power abusing companies

</comment><comment><USER12> Is this a good thread under which to have a more general discussion about data ownership and access? Goodreads is a Schelling point for book reviews, reading lists, and personal catalogs, but the API leaves something to be desired, not to mention the UI. Why shouldn't the Goodreads database be accessible to other applications? Why shouldn't the data be stored locally, or on our "own cloud"?

Why can't we fix what's wrong with it? It's maddening that sites' UI is locked down, unfixable.</comment>


How can one manage thousands of IF…THEN…ELSE rules? - <AUTHOR> http://programmers.stackexchange.com/questions/103659/how-can-one-manage-thousands-of-if-then-else-rules <comment><USER2> Mildly unrelated, but I wanted to point out the awesomeness of the K-map[1] for handling simple minimization problems like these.

Unfortunately, once your dimensions get large it becomes difficult for humans to visualize the optimizations, which is where Espresso[2][3] comes in handy.

[1] <http://en.wikipedia.org/wiki/Karnaugh_map>

[2] [http://embedded.eecs.berkeley.edu/pubs/downloads/espresso/in...](http://embedded.eecs.berkeley.edu/pubs/downloads/espresso/index.htm)

[3] ftp://ftp.cs.man.ac.uk/pub/amulet/balsa/other-software/espresso- ab-1.0.tar.gz

<comment><USER3> Ooh, espresso. There was also a tool called eqntott for converting boolean logic expressions in a human-readable form into the truth tables that Espresso takes as input. The source code was written in an archaic dialect of C, but here's a resurrected version that should compile on modern compilers:

<http://code.google.com/p/eqntott/>

I haven't touched this code since 2008, so beware of grues, but I remember it being a really slick system for minimizing boolean logic when you combine eqntott with espresso. Just the thing for an electrical engineering student who's sick of doing K-maps, which described me nicely at the time.

<comment><USER2> "This program was originally written at Berkeley in the early 80s"

This phrase gives me the same feeling I'd get from finding an old Thomas Bangalter track or something.

<comment><USER4> Trivia - some core parts of espresso are/were part of specmarks, which are used to evaluate computer designs and implementations.

</comment></comment></comment></comment><comment><USER5> While I'm not sure thousands of if/then/else rules are actually the best knowledge representation for his domain (it sounds like he really wants to learn some model from data, in which case throwing some off-the-shelf machine learning may be a better fit), the area of "expert systems" may be relevant if they really are rules extracted directly from some source that need to be managed, such as a human domain expert.

Expert systems were particularly big in AI in the '80s, and considerably less hot now, but still widely used in industry. There are a lot of issues that come up, most of which aren't really purely technical, such as: 1) how you extract knowledge from people who might know it; and 2) how you validate that the knowledge you've extracted is actually what they know, for example by validating that it produces the same decisions that they would make; and 3) how you allow updates/revisions to the knowledge base over time. Once you have the rules and some reason to believe that they're any good, actually managing and applying them can be done through one of several rule engines, such as Drools or Jess.

The keyword "knowledge engineering" may also turn up relevant info.

<comment><USER6> I don't think thousands should be taken literally. I don't think he has actually built it yet - I sort of saw it as an optimistic estimate =)

</comment></comment><comment><USER7> Is it just me? It's not a good question, it shows lack of core coding experience.

For example a video game consists of millions of possibilities/results in movement based on environment - it's not approached as a collection of thousands of if/then/else statements.

In fact the movement of cows seems very much like video game coding, it needs a "cow engine".

<comment><USER8> How do video games solve it?

Do you have any material one can read to learn more about this?

<comment><USER9> Often through physics engines. You express a bunch of constraints then let a physics engine solve them on each time step (and sometimes across multiple time steps).

Custom (non-physics) solutions involve declarative sets of constraints being solved by some sort of engine; such solutions often start to resemble physics engines even if the physical rules even if the constraints are not exactly physical.

Learning how to use a physics engine, first, then how those physics engines work, is a good start to understanding these kinds of problems.

Edit: I'm really surprised the stackexchange answers don't mention this.

<comment><USER10> What would be a good place to start learning about what you're describing here?

<comment><USER9> I would start with Erin Catto's Box2D.

<http://box2d.org/>

There are C#, Flash, Java versions if you aren't into C++. Lots of documentation on the web, but the getting started guide is good enough.

</comment></comment></comment></comment></comment><comment><USER6> Such a great question. Want to predict cow movement while taking into consideration sudden events, food and sun, using thousands of if then rules? Sounds like the perfect problem for one of the following tree learners that not only manage themselves but build the model for you, in order of suitability to the problem* :

Genetic Programming

ADTree

Random Forest

Decision Tree

Most of the work would be in figuring out the best way to gather all the data.

*opinion.

<comment><USER11> All machine learning techniques build models for you.

ADTrees, Random Forests, and Decision trees are all classifiers, so they serve this guy's needs. Genetic Programming is not a machine learning technique: it is an optimization method for a very specific task and is quite unsuited for his purposes.

<comment><USER6> No, I am certain you are confusing Genetic _Programming_ [1] for Genetic _Algorithms_ [2]. I am a fan (do a lot with them) of the prior but have never really been impressed by the latter.

Wikipedia says Genetic Programming is a specialization of genetic algorithms where the objects are programs. I think this is the only thing I have ever seen where the specialization turns out to be more general than the parent.

I'd also like to point out that I although all ML learns models, all those I gave can learn stuff as what amounts to a bunch of IF-THEN statements. Well GP need not be so limited. And Random Forests lose the trees in the forest (harder to interpret) but yeah, that's why I formed that particular list.

[1] <http://en.wikipedia.org/wiki/Genetic_programming>

[2] <http://en.wikipedia.org/wiki/Genetic_algorithm>

<comment><USER11> > No, I am certain you are confusing Genetic Programming [1] for Genetic > Algorithms [2].

Trust me. I am not.

<comment><USER6> Then you will know that Genetic Programming can be used for classification, structured learning, symbolic regression and even meta learning [1]. For classification you can build a program that searches for a program that best uses the input to predicts classes. I _have_ done this (there are better heuristics than the old kind that lead to really big dumb programs). Or you can combine boosting with Genetic Programming or you can use them in Learning Classifier Systems. All these lead to classification based on genetic programming.

[1] <http://en.wikipedia.org/wiki/Eurisko>

As an aside, My definition of Machine learning is more inclusive than yours. I mean if you are going to separate out optimization then I guess you don't count stochastic gradient descent or Matrix factorization as part of machine learning? Machine learning is basically the combination of statistics and optimization where you can work with a lot of data and the output of your computation is more important than the model.

</comment></comment></comment></comment></comment><comment><USER12> I suggested using Prolog in the comments. His problem description was not quite good enough for me to assess whether or not Prolog will be a good choice, but at least it's a candidate.

A Prolog program is essentially a list of rules that are written as an implication. Something like:

      moves_to(Cow, Location) :-
        hungry(Cow),
        current_location(Cow, OldLoc),
        food_in(OldLoc, OldFood), food_in(Location, Food),
        Food > OldFood.

In human language: a cow moves to a location if it's hungry and there's more food in that location than in current location.

I should probably write a proper answer.

edit: Added a proper answer to the stackoverflow with an almost complete introductory Prolog example. It's waiting for your upvotes :)

<comment><USER13> And we're waiting for a link.

<comment><USER12> There you go: <http://programmers.stackexchange.com/a/165126/65434>

</comment></comment></comment><comment><USER14> You really don't want to think of this in terms of IF ... THEN ... ELSE but as individual binary or multi-path choices. These are most efficiently handled with hash tables that choose a route through a logic diagram in a way that is more intuitive than If ... THEN ... ELSE as well as more efficient.

You start by writing a logic flowchart that you understand, then you reduce the logic flowchart to code, usually automatically. This is how a logic flowchart looks:

<http://en.wikipedia.org/wiki/File:LampFlowchart.svg>

Here is the article it appears in:

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

The single most important parts of this process are:

1\. That you understand the logic diagram and see that it meets the program's requirements.

2\. That there is a way to turn the logic flowchart into code, ideally without human intervention.

3\. That the rebuild time be short between adding a new logical step and testing the resulting program.

<comment><USER15> Maybe I'm off the mark, but whenever I see a long runon procedure full of if- then-else, I think "This is a job for a state machine!" With that approach, you can exhaustively provide actions for every combination of states and events. You can also immediately identify the code responsible for handling any state+event. You can also track which state+event transitions have been tested automatically.

<comment><USER14> > Maybe I'm off the mark, but whenever I see a long runon procedure full of > if-then-else, I think "This is a job for a state machine!"

I'm a big fan of state machines, but systems like this are often multitasking and (for all practical purposes) stateless. OTOH it might be more accurate to say their state is formally unpredictable.

A system like the one being described would be more like a multi-threaded critical-path flowchart, where multiple processes are active at a given time. And at any time a high-level linear programming result might mandate a change of strategy based on available resources, even though individual processes continued to follow the tactical flowchart.

So even though a state machine approach looks attractive (as it always does), it's a matter of deciding how many states and how many levels. Because of the nature of the original problem and the number of connections with everyday reality, the fact that it was a state machine might escape the attention of even a careful observer.

</comment></comment></comment><comment><USER16> Even with the clue that he wants to "predict how cows move around in any landscape", his description seems like it wouldn't be enough any definite design advice.

What do the states of the cows and the landscape look like? What is changed by the if-then-else results. Does he already have his rules? Is this for a biology project or a video game, etc.

You could use a finite automaton system, an array of cow-states, a cow DSL or something else depending on the answers to these and other questions.

[insert joke about "till the cows come home"]

<comment><USER17> Yes. The piece missing for me in most answers I've seen is eventing. Does one pump a series of events/state changes into the CowModel and see what actions pop-out? Does the model involve interactions with other cows where the actions of one cow cause actions of others? If so, one must have an event queue to handle chain reactions. How discrete are the events? Is there a "temp is 89F" event where, for every N minutes the cow is in that temperature in direct exposure, it becomes more likely to seek shade? If so, the "it is 89F" event must be triggered multiple times. And, such a rule requires that the past states of the cow be retained. I think the if/then/else logic is only part of the solution to a simulation problem of this sort.

</comment></comment><comment><USER18> A finite state machine is actually not a great solution for this particular problem (in fact, FSMs are often over-used), IMHO. An expert system is a far better solution (as one commenter mentioned). The problem with a FSM is that you still must explicitly specify ALL of the nodes (without some complex algorithm to automate such a task). An expert system, like prolog, only requires you to state all of the rules, and then it will figure out any query for you (via propositional logic, backwards chaining, etc). The number of nodes typically grows exponentially with the number of rules (if the rules are inter-related), so for a problem of any significant size an expert system would probably be the method of choice.

</comment><comment><USER19> My favorite part is the third comment in on the question:

"How can one manage thousands of IF…THEN…ELSE rules? By developing a drinking problem"

<comment><USER20> That solution is generalizable to the entire domain of computer science.

</comment></comment><comment><USER21> Such a great answer. This is why I love Stack Exchange.

<comment><USER22> agree.

</comment></comment><comment><USER23> Wouldn't this best be handled by something like a decision tree?

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

It's basically thousands of if-this-then-that statements, but dressed up into something you can reason about and most importantly train and build automagically.

</comment><comment><USER24> This really sounds like a machine learning problem--why hand engineer all these rules yourself (which can be error prone in any case) when a program could do it for you? If you can figure out how to get a large data set together and come up with a good general representation of the data, you're half way there.

I'd consider taking a look at recurrent neural networks if you're looking at your data as a time series or if its more of a static problem that doesn't take into account the last N things that came before, you might consider tree based methods or even DBNs if you can get a lot of data together (say 50000-100000 samples)

Potential pitfall: if you're using a NN based approach, you will judge results based on test performance, but you won't get as much insight into the "rules" your network has learned.

</comment><comment><USER25> I have an axiom "any sufficiently complex if-then-else ruleset can be modeled as a search problem with boosts".

I have modeled a logistics lookup system (assign "best" courier for an ecommerce setup) using a search solution. The rules were modeled as documents in a search index and looked up using weights. Fundamentally, what I did was flatten an if-then-else hierarchy and assign weights based on (roughly) level of nesting.

The con of this model is obvious - it is at best a heuristic. However, with clever overrides built in (as a separate search index?), you can get pretty close to the ideal solution.

The pro of this model is scalability - when your rules are in millions, this system scales beautifully.

</comment><comment><USER26> The question is an interesting one but it's futile in its context. You can't build a prediction engine for cattle movement. Adding factors like weather, food etc. seems well and dandy but there's hundreds if not thousands of other factors that are definitely going to be missing and that will render the prediction events pointless.

Never mind the fact that you can throw in black swan type of events into the mix or just unknown unknowns you could never think of (maybe a cow has a frog phobia and panics when it sees the frog and starts a stampede or whatever it is that cattle do).

<comment><USER27> You can't predict how an _individual_ cow will move, but it's perfectly acceptable to use models to predict how cattle generally move. Similar to the way we use models to predict how humans navigate hallways and find paths across grass.[1] When you have a bulk of interacting particles, it tends to remove the "personality" of the individual, leaving you with how the group as a whole will move.

Philip Ball's (former editor of Nature) book _Critical Mass_ [2] is an excellent read about the interesting effects that happen when you look at large number of complex interacting actors. He discusses the effects in traffic, pedestrian models, finance, plant growth etc. I highly recommend it.

[1]<http://www.youtube.com/watch?v=8SmRBTJ-jeU> This is just a video I picked out quickly, there are much better resources, I just can't find them on my phone.

[2][http://www.amazon.co.uk/Critical-Mass-Thing-Leads- Another/dp...](http://www.amazon.co.uk/Critical-Mass-Thing-Leads- Another/dp/0099457865/)

</comment></comment><comment><USER28> I am late to this discussion, but I would like to ad my experiences with compiling rules to a Rete network. I have done a lot of hacking on the old Lisp OPS5 code and found it easy to work with, once you read and understood Charles Forgy's papers. I hacked OPS5 to support multiple data worlds and a few other enhancements for specific projects.

The more modern Rete based software projects are probably also easy to work with.

</comment><comment><USER29> Man, I must be getting old, first thing I thought of when I saw the question was a FSM implemented with function pointers in C.

</comment><comment><USER30> If only these questions appeared on one's résumé...

<comment><USER31> What, are you insinuating that asking about great big if-then-else trees means you'd never hire that person? Because, what, you've never been a complete novice programmer before?

Considering the question-asker has a specific problem to solve, I would even hazard they probably aren't a programmer by trade.

<comment><USER32> I'd say the fact that person is asking this question is a very good sign - they have a gut feeling that something's off with IF-THEN spaghetti.

<comment><USER30> ... a very good sign that they're still too green.

When did HN become so touchy-freely? It's important that people start learning somewhere. If you show any interest in programming, I highly recommend learning more. However, there comes a time when you must have a certain amount of experience. This is a profession where important things are made. Even people who should know better end up building systems that leak our sensitive personal information, or let others impersonate us.

I didn't say that such a person shouldn't be hired, but I certainly implied that the original question is a better indicator of their capability than the always positive keyword soup and "years experience" that many people slather on their résumé.

If "avoiding IF-THEN spaghetti" is all you require from contributors, fine. Let's not pretend that this is better than an early high school effort.

</comment></comment></comment></comment><comment><USER33> This problem smells like one that should be tackled with a supervised ML approach.

Even something as simple as a Decision Tree might be enough?

<comment><USER34> of course this is a machine learning problem.

</comment></comment><comment><USER35> Prolog.</comment>


How to Become a C.E.O.? The Quickest Path Is a Winding One - <AUTHOR> http://www.nytimes.com/2016/09/11/upshot/how-to-become-a-ceo-the-quickest-path-is-a-winding-one.html?ref=business&_r=0 <comment><USER2> A guy I used to work for once described his path to the top of a large company as, "being lazy enough to want to delegate everything, having enough experience in enough fields to know who to delegate to, and being smart enough to know what tasks are worth your time."

(That's paraphrased slightly)

<comment><USER3> It's probably not going to be a popular sentiment around here, but other helpful factors are being tall, a full head of hair, and charisma. Unfortunately it often seems those qualities, while not the active ingredients in a good CEO, are the ones most often found in CEOs.

<comment><USER4> Charisma is hard to quickly measure and height might be a bit more work, but I sampled 10 of the CEOs of the largest German companies [0]. Most of them did _not_ have a full head of hair.

[0] [https://de.wikipedia.org/wiki/Vorstandsvorsitzender#Liste_de...](https://de.wikipedia.org/wiki/Vorstandsvorsitzender#Liste_der_Vorstandsvorsitzenden_der_DAX- Unternehmen)

<comment><USER3> This hurts to admit, but when I searched to find where I had gotten that idea... it was a survey on USA Today! I'm ashamed. In fact what I did find was a bunch of CEO's expressing a total willingness to be spear bald if it they could gain a few inches of height.

So please disregard the hair comment, I was wrong.

<comment><USER5> When I read about the hair, the first thing I thought of was Steve Ballmer. Then I thought of Jeff Bezos. Then Andreessen. Then Horowitz.

And then I came to this conclusion: you certainly don't have to be handsome to be a CEO! It is democratic in that way.

<comment><USER3> Of all of those, why am I positive that we're both imagining Steve Ballmer's shining face/pate? "Woooo!"

</comment></comment></comment></comment></comment></comment><comment><USER6> Ben in the book "The Hard Thing About Hard Things" summed up how one becomes ready to be CEO of an early stage company nicely. You become trained to be a CEO of an early stage company by becoming the CEO of an early stage company.

It's not a defined role, its deserved by someone who is capable of pulling off success in business by controlling anarchic situations. It's not like they can teach the skills to do that in school.

<comment><USER7> Good old Ben.

Ben Horiwitz of Andreessen Horowitz if anyone was wondering, like I was.

<comment><USER8> Although in-case anyone, like yourself, is unfamiliar with Ben Horowitz The Hard Things about Hard Things is perhaps one of the most interesting business books available.

I find it's applicability beyond just business makes it as fundamental as How to Win Friends and Influence People.

With that said, yah it is a little weird that on hackernews if I see Ben without an additional qualifier I presume Ben Horowitz

<comment><USER9> Additional recommendation of Zero to One by Peter Thiel, I feel like its in the same section of essential startup business books.

</comment></comment></comment></comment><comment><USER10> The answer isn't quite technically correct. The absolute quickest path is to incorporate a company and then make yourself the CEO.

<comment><USER11> They're only looking at companies with 200+ employees in their data (which is the right thing to do given what "being an executive" means to most people).

</comment></comment><comment><USER12> Huh. If I were to go off of all the resumes that come across my desk, I would have thought the quickest way to becoming a CEO is to:

1) Go to a hacker school like Hack Reactor

2) Start a website that takes you ~8 weeks of spare time to build

3) Call yourself CEO of that website and ask for $180k salary!

<comment><USER13> Hah, back in the dot com days it was the 8 weeks Cisco Certified Engineer program and then you were a "network architect" and due $180K a year.

</comment></comment><comment><USER14> The quickest path is to be born into a rich family with connections.

<comment><USER15> You're getting downvoted, but this is more true than I cared to admit for most of my adult life. I've witnessed this first hand from newly minted billionaires to green CEOs: most of them had important connections in place to receive and amplify their goals. You could also examine the type of language and non-verbal values that are exchanged between investors and "rich kids". Sometimes it's like watching a father grooming a son.

<comment><USER16> For an established company, absolutely. Being a rich or powerful person's kid is tough. You're stuck with high expectations, but simultaneously face a low bar.

Basically, if you're not a total idiot, you end up running things.

</comment></comment></comment><comment><USER17> The more interesting question is how to become a _successful_ CEO. One thing I have noticed is that good CEOs can frame important problems in a way that allow other people (ideally good ones that the CEO hired) to solve them.

</comment><comment><USER18> On the interactive chart- why does the likelihood of BECOMING a CEO go UP with greater experience? Wouldn't it go down over time, as in, if you haven't made CEO yet you never will?

<comment><USER19> If it's a numbers game, the more swings you take, the more balls you hit.

<comment><USER18> What I'm saying is, the more experience you have the less you have ahead of you, so that should close off future opportunities. Whereas if you have only 10 years of experience, you still have 15 years to make better decisions than the folks with 25 years experience, whose 25 years are already determined.

<comment><USER20> So then if you had zero experience and it was your first day working in your life, the percentage of becoming a CEO would be the total CEOs of the world divided by the total workers of companies with CEOs which I feel is quite small. Thus, it could only go up.

<comment><USER18> Total CEOs _over your remaining lifetime_ , which is a number much greater than any snapshot in time. And if you have 25 years of experience, your remaining lifetime is shorter.

</comment></comment></comment></comment></comment><comment><USER21> As a side note, I have been thinking of Yishan-style CEOs for a while now, with board of directors tweeting often too. Twitter itself would probably be a good candidate for such a public company.

</comment><comment><USER22> Unfortunately, in many other industries, sucking up being the first on the list.

</comment><comment><USER23> I always thought the quickest way was to create a linkedin account.

</comment><comment><USER24> 1\. Be born to the right family.

2\. Be asshole enough to manipulate people working for you and get credit for their work.

3\. Be a good actor and convince others that you really know what you are doing.

4\. Be smart enough to not get into details.

<comment><USER25> Being tall helps immensely with # 3. It will add weight to anything you say.

</comment></comment><comment><USER26> This is based on a survey of Management Consultants. For those who have not worked with Management Consultants, or seen the Showtime series "House of Lies", these are not the guys you want to be your CEO. (The TV show is fictionalized, of course, but it's based on a book written by a management consultant.)

Their characteristics are rapaciousness, self focus, political and emotional manipulation and greed. They do well for themselves, not so well for the company.

So, I question the premise of this article from the beginning as its source material is not successful CEOs who spent more than 10 years at the company in question or in the CEO role.

Edit: I see I'm being buried. To be fair, there's a difference between a "management consultant" and an consulting engineer. consulting engineers get stuff done. Management consultants can also come up with great ideas (as shown in the show I referenced above) and can legitimately add value. But they are best as consultants, not employees and not CEOs. Of course generalizations are false if applied strictly- there are exceptions.

I just think that a better survey of successful CEOs would be necessary to draw any serious conclusions.

AND - more specifically- having worked with management consultants and a variety of CEOs of startups who didn't have startup backgrounds, for a startup you generally don't want a management consultant as your founding CEO.

<comment><USER27> Yup.

There is a group of folks who fit the management consultant profile, and as you say, they can add value if well policed and in the right place.

There is also a group generated by the "red queen" characteristics of corporate life. These are the folks who are optimised to appeal to seniors with polish and politics, but who have no real bottom. I've only seen a few of them rise up (and not to the very top) it's not good to be around them when the reckoning comes.... Peacocks don't do well round foxes.</comment></comment>


Preview of code-academy style AngularJS tutorial - <AUTHOR> http://188.8.131.52/

<comment><USER2> Fantastic job so far! As a seasoned programmer, I've found many other tutorials lacking as they seem to cater to the newbie audience. I thought this tutorial hit the bullseye.

Btw ... there are a few typos here and there. Also, you don't explain rootScope before introducing it.</comment>


When it comes to taxes, Barack Obama is no Jack Kennedy (WRT capital gains taxes & technology) - <AUTHOR> http://blog.weatherby.net/2007/10/double-quote-of.html

<comment><USER2> It's a direct result of Obama's lack of understanding for basic economic theory.</comment>


Russia Today: Putin's Weapon in the War of Images - <AUTHOR> http://www.spiegel.de/international/business/putin-fights-war-of-images-and-propaganda-with-russia-today-channel-a-916162.html

<comment><USER2> As somebody who lived in Russia, it makes me sad to see ordinary Americans believe Russia Today, not understanding that its only purpose is to actively hurt the USA.</comment>


The Front Lines of Ferguson - <AUTHOR> http://grantland.com/features/ferguson-missouri-protest-michael-brown-murder-police/

<comment><USER2> Not going to try to defend the actions police or anything (I think the protest is for a good cause), but one piece of info I think is valuable:

Mob mentality is dangerous. There is a thin line between a "peaceful protest" and a riot. If you have seen other protests that have turned into riots (like in France where several innocent shops got destroyed in an anti-Israel protest), or in England where the riots got way out of control, you know what can happen. Its a few police trying to keep a huge crowd in control - and it is a scary job. Unfortunately being well-armed makes the crowds even angrier.

<comment><USER3> Riots like these happen because people feel that society is fundamentally hostile to them - that it is trying to kill them. And so it makes perfect sense to attack society in general. Cops, shops, news vans...whatever. People fight back when they are under attack. It's a natural response, and suppressing it only causes it to build up and erupt.

You don't prevent riots like this with tanks, you prevent them by having a healthy society. And ours is seriously ill.

<comment><USER4> The riots and burning occurred before the police in riot gear showed up. Not after. [http://www.stltoday.com/news/local/crime-and- courts/attacked...](http://www.stltoday.com/news/local/crime-and- courts/attacked-on-the-job-a-post-dispatch-photographer-s- tale/article_1b6fba60-5ac1-592a-8818-19614f1910aa.html)

<comment><USER5> From the article you posted:

> At first, the crowd was quiet, even peaceful, he said. But as night dropped, > more began showing up. And cops came, too, with riot gear and assault > rifles.

<comment><USER4> The crowd was angry, tense and numbered in the thousands. You're not going to show up with flyswatters.

Here's my point. Would YOU have reacted the same way? I would not. Most people would not. Why are people trying to blame the police for their actions?

Interesting fact that just came up. The boy who was killed had robbed a convenience store just minutes before. [http://www.stltoday.com/news/multimedia/videos/ferguson- poli...](http://www.stltoday.com/news/multimedia/videos/ferguson-police- release-convenience-store-surveillance- video/html_9cdfc317-764d-5ccd-a574-2c75d2d0c753.html)

And now the story takes a turn.

<comment><USER5> You lied. You said they were already rioting before the police turned up in riot gear.

There's no point continuing the conversation with someone willing to mislead.

And so what if he did rob a shop? The penalty for that is arrest, charge, trial, conviction, punishment. Not drag to the back of a police car, shoot him in the head.

</comment></comment></comment></comment></comment></comment><comment><USER6> Last night's atmosphere stood in stark contrast to the evening prior. I think it's due almost entirely to how the state troopers interacted with the crowds. They were in their normal, non-body armor uniforms. They walked among the crowd, exchanged laughs, and generally set the mood at ease. By respecting the protesters, the tensions were lessened - the situation, deescalated. At the same time, the riot ready police were a mile away, ready to take action if required.

Compare that to police in full armor, with tactical weapons trained at the crowd, perched atop armored vehicles... It's no surprise to me that things got so far out of hand on Wednesday, but were completely different on Thursday.

</comment><comment><USER7> Lots of bad decision making in Ferguson. There are surface reasons for the decisions, but there are underlying issues that it would be nice to address.

I don't know the answers to the issues, and while I can analyze and say this is what should have been done differently at each step of this tragedy; not sure it is helpful.

I would be interested in hacker news memberships ideas of the issues underlying this situation.

</comment><comment><USER4> Why did I know something like this was going to show up: [https://www.youtube.com/watch?v=WzBdY6WXeRE](https://www.youtube.com/watch?v=WzBdY6WXeRE)

Note: the radio station verifies the caller as best they can but, yes, we don't have a positive ID on the caller.

</comment><comment><USER4> While the QuikTrip was burning to the ground several hours after the incident, a Post-Dispatch photographer was whacked in the head and kicked after observing looters with hand guns tucked into their waist bands. Note in the link that police in riot gear did not show up until after all this: [http://www.stltoday.com/news/local/crime-and- courts/attacked...](http://www.stltoday.com/news/local/crime-and- courts/attacked-on-the-job-a-post-dispatch-photographer-s- tale/article_1b6fba60-5ac1-592a-8818-19614f1910aa.html)

As usual, I see waaaay too much one-side "reporting" of the result with no attention to the origin.

<comment><USER8> From a comment in /r/Stlouis[0] (because I live in another suburb and have been watching developments closely)

> A shooting is a disproportionate response to someone walking in the road, > riots and looting are a disproportionate response to an unjust death, > militarized police is a disproportionate response to riots and looting, and > Molotov cocktails are a disproportionate response to a militarized police > force. > A cycle of violence will continue to escalate until one side will > take a step back and often it takes a third party like the Missouri Highway > Patrol to make that happen.

When a conflict is escalating, there are multiple layers of disproportionate response that allow outside observers at any point to interject how the people worrying about Layer X are ignoring Layer X-1, which allows other observers to interject that said person is ignoring Layer X-2, ad nauseum.

It's somewhat the inevitable result of people trying to process a complicated tragic situation with information overload into simple understanding that are inevitably influenced by their pre-existing biases and experiences.

[0][http://www.reddit.com/r/StLouis/comments/2dlq8w/the_first_ni...](http://www.reddit.com/r/StLouis/comments/2dlq8w/the_first_night_of_peaceful_protest/)

<comment><USER9> That's a great perspective. The sibling comment from yedava is an immediate X-1 example.

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

These photographs of paramilitary soldiers shooting tear gas into groups of reporters and peaceful protesters turns my stomach. Likewise, allowing looting and destruction of innocent peoples' property is unacceptable. It's a despicable situation on all sides.</comment></comment></comment>


My Y Combinator S12 Story - <AUTHOR> http://argumentum.posterous.com/blog-hn-my-ycombinator-s12-story

<comment><USER2> I wonder - do you think the great experiment for 'no idea' applications is going to be abandoned after the upcoming class?

There is such a consensus of thought in the startup world that "ideas are useless, it's all about execution." But, I think this is flimsy thinking. Amazing execution with a shoddy idea doesn't benefit anyone. This account seems further validation of that thought.

I think a great idea has the opportunity to build consensus among founders and aid in forming a team. It seems nearly impossible to find other people to join existing ideas and be as passionate about their promise and future.

<comment><AUTHOR> I'm mixed.. I think there are some teams that could thrive even without an idea, as long as they are committed to working with eachother when things go rough (which they will).

<comment><USER3> idea's are a dime a dozen right? with the right team/talent within that team, execution on whatever idea you choose is what's going to matter in the end to your business and to potential investors. Great idea's have still failed and i can guarantee the multiple factors that brought that on happened because of the wrong team and incorrect assessment of product market fit

<comment><USER2> I think I would disagree. I think there are plenty of really bad ideas that people are pursuing in one way or another. I think there is at least some value to the idea to start with. It is, after all, the building block upon which a startup gets going.</comment></comment></comment></comment>


Don't be evil - <AUTHOR> https://en.wikipedia.org/wiki/Don%27t_be_evil <comment><USER2> > A study from the Jaffe Food Allergy Institute at New York's Mount Sinai > hospital found that from 1997 to 2008, peanut allergies tripled from > 1-in-250 children to 1-in-70.

Someone who has more knowledge in biology correct me if I'm wrong, but it's virtually impossible for this to be "hereditary" issue with such a drastic change in such a small amount of time, right?

I think it's much more likely to be something either related to diet (the types of foods found in the supermarket) or environmental (local pollution/dirty water, etc sources causing it).</comment>


Spotify, Nodding to Broader Ambitions, Hires Chief Content Officer - <AUTHOR> https://www.nytimes.com/2018/06/26/business/media/spotify-dawn-ostroff.html <comment><USER2> If anyone from Spotify is reading this: I love you, but please please please stop autoplaying videos in my playlists.

1) it makes playback stop when I'm driving. It's hard to get it to start again. If the screen is off, please just play the song in place of the video.

2) the UI goes away when a video is playing so there's no way to see the playlist without jumping through hoops.

3) it wastes data. My family regularly nears the monthly limit, so this really matters to me.

<comment><USER3> Vote here: [https://community.spotify.com/t5/Live-Ideas/All-Platforms- Mu...](https://community.spotify.com/t5/Live-Ideas/All-Platforms-Music-Option- to-Disable-Videos-in-Curated/idi-p/1620225)

</comment></comment><comment><USER4> Smart move for Spotify, foreboding news for Genius.

This is also a cautionary lesson for founders about raising at inflated valuations--Genius's series B raise at close to a $1B post-money val will make it more difficult for them to exit with an acquisition.

(In fairness, they completed that round with the intent of "annotating the internet", not becoming the music content platform they've since pivoted to.)

<comment><USER5> Didn't it start as a music annotation platform?

<comment><USER4> Yes, but the intention was to expand from there to allow community knowledge curation on _anything_.

See Ben Horowitz's note: [https://a16z.com/2014/07/11/from-rap-genius-to- genius-2/](https://a16z.com/2014/07/11/from-rap-genius-to-genius-2/)

Marc Andreessen's note: [https://genius.com/1102682](https://genius.com/1102682)

<comment><USER6> Yes, I remember they tried to expand, but it didn't catch on.

I think it may be because at it's heart Genius feels to me like a skinned/specialized Wikipedia, and Wikipedia already has other information covered. Lyrics are a good fit, because Genius has a format that suits itself well to annotating lyrics, and it is a reliable source for quality lyric content. So many lyrics sites other than Genius are horrible to look at and usually are riddled with ads and popups.

</comment></comment></comment></comment><comment><USER7> I'm surprised Spotify hasn't broken into podcasts yet (or have they?). The platform works for it, and it feels like a natural transition to go from listening to music to listening to a podcast without leaving the platform.

The article even notes it's a higher margin business.

<comment><USER8> > _I 'm surprised Spotify hasn't broken into podcasts yet (or have they?)._

Shoot, I hate to see technical folks genericize "podcasts" this way.

Podcasts are a great and popular standards-based medium for distributing audio and video on the open web.

Proprietary platforms like Spotify ingest a small percentage of the best podcasts and make that content available to their customers via their proprietary platform in order to increase the value of that platform.

The important bit is that the Spotify show isn't a podcast — no podcast app can play it. Spotify owns the listener relationship. They share stats with creators at their pleasure, if at all. It's a closed thing.

Apologies for what will seems like pedantry to some, but podcasting is the only open audio/video medium we've got.

<comment><USER9> If Spotify wants to win on podcast there is an easier way to do it: License podcast episodes with a two-week exclusive window. The ultra loyal fans and Twitterati will care but the podcast wont lose mass appeal.

<comment><USER10> They already do this (with a one-week exclusive) on the very good music/lyric analysis podcast Dissect ([https://dissectpodcast.com](https://dissectpodcast.com))

</comment></comment></comment></comment><comment><USER11> Incredibly surprised it has taken this long.

Given the amount of listening data they have I was sure they'd have taken the Netflix route with regards to producing or orchestrating original content (i.e. this producer with these artists + brand partnerships tailored to audience = $$). I'm sure I am simplifying and this is much more complex than that, especially considering the legal maze that is music, but still. Their only innovation seems to have been in bespoke playlist generation.</comment>


Your attention please - <AUTHOR> http://37signals.com/svn/posts/3001-your-attention-please

<comment><USER2> _"You hear a lot about "quality time" being valuable, but I think quality attention is invaluable. Giving someone your attention is giving more than just giving your time."_

These, to me, are disparate sentences. Quality time[1] and time are not the same. The second sentence is fine, in it's own right; but the first, comparing the same thing and asserting a difference?

One site comment, _"Life changing!"_. Yup, was for me too…

[1] <http://en.wikipedia.org/wiki/Quality_time></comment>