1. it is the notion that some people feel emotions in a more physical way than others
    — meg fee - glad to know I’m not the only one who cries on the subway!

  2. How To Pull Book Covers From the Open Library API Into Your Rails App

    My goal was to display covers via Open Library rather than forcing users to upload a cover from their desktop. The API makes it easy to pull covers by ISBN, but I don’t store that and don’t want to force users to look it up, so we decided to let users put in a title, which would then be run in a search on Open Library. 

    Ideally, Open Library would return 8-10 book covers and the user would select the correct one, but this would require a bit of Javascript for the interaction. Instead, to get the API up and running, we just had Coverlist use the first cover in the search results (if there are no results, it will pull nothing and the cover will be blank). 

    Yes, this is a temporary solution.

    We also used HTTParty to parse the API.

    - Add HTTParty to Gemfile

    - Add a few lines of code to Create action in controller — make a variable for search results, then parse, then assign new variable  for cover_url that refers to the Open Library book ID url where the cover is stored (they prefer you link back to them rather than downloading and saving their covers). 

    - Run a migration - had to add cover_url to books (ended up doing it manually)

    - Change views to show cover_url instead of cover

    Here is the full experience in Google+ Hangout

    After we finished this lesson, the solution worked locally but not on heroku. 

    I forgot to do heroku run rake db:migrate and heroku restart. Then it worked.

    Then I needed to do an If/Else statement so users could override the Open Library cover with their own cover, in case the app pulled the wrong one. If there is a manually uploaded cover, that is shown — if not, the cover_url cover is shown. 

    Right now it only interacts with the API on create, not update (although this could be easy to change) so if you put in Harry Potter for title, it might be a toss-up which book of the series you get. Thus, a few improvements should be made to this API integration, but the exciting part is that Coverlist is using its first API. And it happened in one hour. Much easier than I expected. Bigger things to come!

    Tags: coverlist / rails / ruby / api / learn programming / airpair /


  3. Because regardless of whom else is interested, I want to be with me, and I always will.

    Getting Rejected Will Turn You Into a Better Dater, by Christina Bryza.

    Literally the only important thing to learn about being single, or possible about being a human being at all.

    (via luckypaperstars)

    We launched Christina’s picture book for grown-ups, Are You My Boyfriend?, last night and it was amazing. We have a handful of signed copies in the store, come by and nab one!

    (via housingworksbookstore)

    such a lovely quote!

    (Source: meredithhaggerty, via housingworksbookstore)

    Tags: dating / books /


  4. How Building an MVP Is About Discovery

    I was building the MVP of Coverlist and I was nearly done. Users could add books they had read along with a 2-3 line microreview, which would serve as a recommendation for other users who are just browsing — and every book had a Coverlist score so I could surface the best books for the weekly top 20.

    It was time to do things that don’t scale - i.e., start reading out individually to people in book clubs or people blogging about books. But I was scared — what if, they went to add a book, realized you had to find the cover image on your own to upload the file, and decided it was too much of a hassle?


    The app was mimimal, but was it viable? Or would they walk away and never return?

    I started with my sister — “sign up for this site I built, add a book and tell me what you think.”

    She added Emma and as hoped, she picked a unique book cover via Google Images that perhaps would not be available in an API. I want users to be able to pick book covers and not be stuck with whatever the publisher wants to promote, since Coverlist is a visual place.

    The downside was that she picked a cover image that was smaller than the rest, and could throw off the design.

    My mom was next. She added a book cover that was even smaller so I had to replace it. Turns out she had found it on Amazon, and then offered to take it down so I wouldn’t have a “pirated image” on the site. 

    As it turns out, users did not have a problem with uploading images — but opted for images that might disrupt the site design, and possibly felt they were breaking a copyright by pulling images from other sites (which is up for debate). 

    I don’t want users to feel uncomfortable about adding a book and I definitely don’t want to worry about the design supporting all sorts of small and large cover images. 

    What most surprised me, though, was this book, added by someone I don’t know. Instead of adding a cover image, the user simply took a snapshot of the physical book — which is actually a great experience when you’re using Coverlist in a mobile browser.


    It had never occurred to me that someone who is still reading from physical books could quickly upload their book library by simply taking photos from a smartphone. But, in order to allow Coverlist to be a collection of all your books — whether you read a borrowed copy, got it from the library, own it or read the ebook — I still would need to offer a cover database.

    So I decided I would need to add an API so users could search for a book title and choose an image instead of uploading a file. 

    I might be returning to the same decision I pondered in the first place, but I came to it from watching user interactions rather than just making assumptions — and now I can make a better case for investing time into making the new feature happen. 

    Tags: open library / api / rails / mvp /


  5. How Coverlist Fits the Hook Model

    I’ve been reading up on the Hook Model which could be seen as an alternative to Lean Startup methodology, although not mutually exclusive. I first encountered the concept when I read Ryan Hoover’s answer on Quora to “How has Turntable.fm grown so rapidly with no marketing?

    The Hook Model can be summed up with the acronym ATARI, or:

    A hook is TriggerActionRewardInvestment.

    There’s a happy medium between a product that produces overly obsessive users (as Turntable did, which likely accounts for its failure) and a product you use once, enjoy, then never return (as most of the apps that I consider writing about at Mashable are, unfortunately). 

    My vision for Coverlist is to create an experience online that is simple, welcoming and warm, much like a neighborhood wine shop or local bookstore. But does the app have a hook, or social engagement loop?

    Coverlist’s Trigger is external — it’s when a user finishes a book. Was it any good? How did you feel when you finished the book?

    The Action is when the user adds the book to Coverlist with a micro-review explaining why others should read it. “Great read for the beach,” perhaps, or “might enjoy after a breakup.”

    The Reward is when a user’s book review is voted up to the front page or included in the weekly newsletter. When two users add the same book to their profile, it’s not really the same book, because each user includes her own review. So users aren’t just voting on the book itself, or the cover art — it’s those things *and* the review from that specific user. Books, plus identity.

    Finally, the Investment is when a user finds another book to read on Coverlist, perhaps through the recommendation of another user. This sets up the user to perhaps return to the Trigger again, and makes Coverlist better with every book reviewed. 

    Does Coverlist sound like something you would use? Take our survey to help improve the site. 

    Tags: lean startup / hook model / user acquisition / reading /


  6. How to replace the default Rails 404 page

    If you Google “The page you were looking for doesn’t exist Rails Heroku” you’ll find the StackOverflow questions from beginning developers who expect this message has something to do with the problem they’re facing. What they don’t know is that this is just the default 404 page in Rails, which they wouldn’t have encountered until deploying to Heroku (when your app runs locally, it gives you an actual error message).


    I was convinced that the text and design on this page was due to Heroku and searched all over the site trying to find out how to change it to something more user-friendly. Eventually, I realized that both the HTML and CSS was literally a file in my app’s ‘public’ folder.

    If you want your error pages to look at home on your website, all you have to do is change the code in these three files — 404.html, 422.html and 500.html.

    I opted for a pun relevant to my users, who are book readers. “We seem to have lost our page. Can we start from the beginning?” along with an image of book shelves I found on Imgur.


    What’s on your 404 page?

    Tags: 404 / heroku / rails / programming / learn programming / app /


  7. The Making of Coverlist: Part 3

    I’ve been thinking about these posts (read the first two here) and how to make them more useful for others and less of myself rambling. So, I’m going to include more links and lists. 

    That said, I’m at my parents’ house in southern California enjoying an endless supply of perfectly brewed coffee and helping them clean out the fudge supply. Love the holidays!

    Goals For Last Week:

    I wanted to stop coding and start working on user acquisition. But, my imagination got away with me and I solved a few more problems instead. 

    I wanted to track down names and contact info of people in the publishing industry to do Q&As for the coverlist blog and pull together resources for my planned Pinterest programming — both of which I still need to do. 

    What I Accomplished:

    I asked my first-ever question on Stack Overflow — two people answered and a combination of their responses worked!

    Afterward, I came to another epiphany — I didn’t need to create a new controller for each of the voting actions — I could have the top action add 3 points, the second add one point and the third add zero. That way I don’t have to worry about negatives. 

    Now, if I were to A/B test a book cover, I’d be able to keep score. Score :)

    Goals For This Week:

    - Test Assumptions: I’ve had a few new ideas. What if the site behaved like Medium rather than Pinterest — users collaborate to create Collections rather than making their own shelf? I might run a survey with a Facebook ad (targeting book clubs) to gauge interest.

    - Experiment: If I were to A/B test book covers perhaps I can clone Coverlist to a separate Heroku app at party.coverlist.com, where I would stage books (25?) according to a theme. 

    - Fix Olark

    - Put books in order of score, not id

    One Thing I Learned:

    I had the opportunity to show Coverlist to a few relatives over the holiday. I’m lucky in that several people in my family are longtime employees of their local library, and also in book clubs — so I was able to get another perspective. 

    People complain that they prefer physical books because of book ownership — if they bought the book they want to be able to resell, lend or see on a shelf. I think identity and ownership are two separate things. If you check out a book from the library, you don’t get to keep it on a shelf — but you’ve still read it and identify with it. 

    Coverlist can own identity. 

    Maybe I don’t care if I direct people to Amazon or iBooks to buy a book and whether they keep the book forever or it’s lost with a device. If they’ve read it, it is part of them and is on their Coverlist. 

    Perhaps someday Coverlist will create an interactive map of the world with all the libraries plotted out with tips on selection and best times to go and more. Maybe we’ll make an app for finding local bookshops. 

    If someone finds a book to read on Coverlist, perhaps we don’t need affiliate income every single time they decide to buy — there could be a business in not caring how people acquire and read books, just celebrating them.

    Tags: eboos / publishing / digital / app /


  8. Letter To My 15-Year-Old Self

    My submission for this month’s Carnival of Journalism

    Dear Self of 15 Years Age,

    I want to start by saying we are not the same person, you and I. You dream about me all the time. You imagine I’ve “made it” somehow, whether it means being rich enough to finally shop at Anthropologie (or better, have married the rich husband), or, empathetic enough to finally move to Africa and spend the rest of your (our) days working at an orphanage. We’d be happy either way. 

    Anyway, people will keep telling you to slow down, to enjoy where you’re at now. Don’t slow down. We’re having so much fun. 

    When you get to 20 you’ll be shocked at how much you’ve accomplished — you’ll mention that you were once shy and someone will actually not have noticed. When you’re 25 you’ll have a master’s degree and your dream job which are both goals you’ve had but you won’t have expected them to come so soon and within a year of each other. 

    But of course, you can’t revel in those moments for too long because even jobs can be fleeting. 

    There will be times when you regret just about everything — leaving San Diego, coming back to San Diego, coming to NYC, not moving there sooner, and not being more _____. “Why can’t you be more _____,” you’ll say to yourself, “it’s what those other people are doing and they’re perfectly happy. When you start to feel that way, all it means is that you should spend the evening with a glass of wine and a novel rather than Facebook (by the way, you like wine). 

    Sometimes when life seems monotonous or you wonder if you’ll just always live with roommates and never have enough space — you’ll tell yourself, “Someday you’ll look back on this as the happiest time in your life.” You’ll make this true, just by acknowledging it, and it’s especially true of that year you lived by the beach, worked at a coffee shop and taught yoga.

    I’m excited for you (me). Because the next five years are absolutely going to be the best. There’s so much that you want to do, now, at age 15, that hasn’t been done yet. But with every new challenge, new city, new job, you’ll shed a layer like a butterfly and become a better version of yourself — and that’s why you wouldn’t recognize me on the street. I’m sorry to say I’m not like you at all. But it’s OK to outgrow your surroundings. As Steven Pressfield says, new friends will present themselves.

    One last spoiler: You haven’t written a book yet.

    - Danielle of 28 Years Age

    Tags: journalism / blog / memoir /


  9. The Making of Coverlist: Part 2

    What if you had to design a logo before you could do any other work on a project? It’s funny, because I messed around in Photoshop for a day, and created something that I actually really liked. I kept it on the site for a while. But once I added a huge beautiful background image to the home page, that logo couldn’t stay. It was too cheap and the blue was too bright. 

    That’s why design seems never-ending for me — as soon as one feature is updated, others that were done suddenly need to be improved as well. 

    Plus, I’ve had a long list of changes anyway — to the point that it’s hard to walk away from my laptop to go to bed. 

    Goals for Last Week:

    I wanted to fix the design on the home page. I also wanted to change the content flow so users would see only one book at a time, then hit one of the buttons to reach the next page — and each book would be on its own permalink page (so you can share a specific book url to social media). 

    I wanted to utilize a rotate feature in CSS so the book info could be on the “back” of the books. 

    There were a few broken features around users — you could “like” a book more than once but there was no way to remove it from your library. I also haven’t decided whether to call it Your Library or Books You’ve Read. 

    I got to thinking a lot about the Buy link. Right now I can put it in manually for each book if I want to use an Amazon affiliate link, or I can redirect to an Amazon search of the book title. But I was thinking about how the interaction on Coverlist is really made for mobile — it’s simple — and I wondered if I should actually be redirecting to iBooks or Google Play. I looked it up and those affiliate links are actually quite easy to implement. Of course, I would want to bring the device in use into it — the site would detect that someone was on desktop and send them to Amazon, or iPad and iBooks, etc. 

    I’m also thinking about allowing users to add both a short review and tags to books. That way a user doesn’t need to have multiple “shelves.” I think it would be more attractive to tag a book “sad” “2013” and “beach,” for example — that would turn into better discovery for others as well. 

    What I Accomplished: 

    I actually did a lot! Mostly today. I got the home page redesigned, with the help of a friend I met on Angellist. He sent over CSS/HTML/Javascript. It took me some time to implement it. 

    Coverlist has Twitter Bootstrap on it. That means there’s CSS I don’t need to repeat, but also CSS I need to override. Simply copy/pasting CSS from another project usually doesn’t work. Sometimes I do it just to see what happens, then remove it, go back and add things one by one as they make sense. I actually learned a lot from that exercise, though. 

    I also figured out how to get the vote buttons to scroll through books. I found a StackOverflow question about Previous and Next buttons on individual articles and used the code from the Previous button. Then I had the “Begin” button on the homepage direct to Book.last. It’s not a permanent solution, but a good hack. I have no idea how to set cookies so users don’t see the same books every time they visit — but this way if I add books every week, they should see the new ones first. 

    I also met up with a friend who did YC last summer. I told him a bit about the idea and it was a really helpful conversation. He actually told me to stop writing code. Startups are always asked how they know they’re building something people want. Sure, it would be great to finish making Coverlist look how I want, and then start to get users — but the business model is most likely based on working with publishers. So, I should talk to them. 

    There are so many ideas from building an iPad app for local bookstores to use that would allow visitors to read  and purchase ebooks, giving the bookstore affiliate revenue. Or, providing services to writers who want to self-publish. Or, charging for placement in the book list. Of course, affiliate links to digital stores, or straight from the publishers themselves. But the one I think may be most compelling is A/B testing for book covers. It’s unique to the platform and could serve as a first step to offering publishers other support in digital. 

    Lastly, I removed access to user accounts. They are still there, but you don’t need to be logged in to see the books or vote on them. That saved me from having to fix the related bugs, redesign the Library view and more. 

    Oh! And I discovered a fun hack. So since the Meh, Yes. and Ooh! buttons work like a Previous button, the buttons were disappearing on the first book. I wanted to reward users and tell them they’d reached The End. I realized instead of changing the code, I could just create an image that was book cover shaped and replace the first book with it. I used Canva for that and it worked beautifully. 

    Goals For This Week:

    Surprisingly, my endeavor to stop coding went really well. The site looks decent on mobile (well, at least on my iPhone) and works. The one thing I do need to code is that Heroku is serving a weird error page if someone were to try to navigate to a book that doesn’t exist. I think I can change this inside Heroku. 

    Otherwise, now I’m planning for promotion. I’ve done some blogging on coverlist already but there’s more original content I can do. I want to do some interviews with book cover designers and editors and take book quotes and put text overlays on photos with Studio (iPhone app) — right now I just need to do the prep work. I also want to put at least 100 books on Coverlist. Lastly, I found that the few books I pinned to my personal Pinterest when I was testing the Pin button actually resulted in traffic to the site — not much, but more than from Tumblr, which I was more active with. So I’ll be planning a fun Pinterest promo :)

    One Thing I Learned:

    Coding is fun. Too fun. It’s always a debate for me whether I like programming enough for that to be the primary thing that I do. But in this case, I think fear of success plays a part — I’m not spending all my time learning Rails because I want to always do it — it’s because if I start telling people about Coverlist they might reject it — or I might actually have to follow through with this crazy adventure. 

    Tags: startups / rails / code / ebooks / app /


  10. The Making of Coverlist: Part 1

    I’m building an app called Coverlist.

    When I was in high school, my best friend and I would go to the bookstore, not to buy anything — just to hang out. We would slowly round the tables in the front, picking up any book that appealed to us, maybe reading the back or flipping to the first page. If it seemed particularly good, we would hand it off to the other and say, “LOOK.”

    Now I read books on a Kindle and don’t get to wander around bookstores. My favorite books aren’t carefully arranged on a shelf in my room because I don’t buy physical copies anymore.

    That is why I’m making Coverlist. It is a collection of only the best books and a place to judge books by their covers (and, well, maybe the first page).

    In the long term I want it to become a place to discover new authors (and for new authors to be discovered) and a re-imagining of the book publishing process, which in my opinion is too drawn out and peppered with gatekeepers for the digital age. We can do better, for the benefit of both readers and writers.

    So I’ve been learning Ruby on Rails for about a year and getting closer to making my vision a reality. I want potential collaborators to know where I’m going with this and where they might be able to contribute. I’m going to begin logging my work each week, to keep myself on track, and as an example for others who might have a big idea in addition to a full time job.

    My Goals Last Week:

    I went to a networking event for people in tech and showed Coverlist to the guy sitting next to me. He pulled it up on his phone. He didn’t like most of the books (there are only about 10 right now) and didn’t click on a book or give any “kudos.” I had already wanted to switch the “kudos” to three options: Meh, Yes., and Ooh!. This confirmed that plan. I also wanted to switch the default view to show only one book at a time — so instead of scrolling through all the books, you would just see one, and have to click one of three options to see the next book.

    At first I thought I needed to add a model for Meh and Yes. as I already have one for Ooh! (my previous Kudos). I couldn’t remember how to do that but then I realized I could design the buttons and leave them not really doing anything, just to confirm that it was the best design from a user standpoint.

    The last thing I wanted to do was put all the book info in the same place. It is really important to me that the default view shows only the cover plus the buttons, since you are judging the book by its cover. But instead of clicking the book to see more info (author, summary, share buttons, etc.) I wanted this info to show up on hover and the book would rotate, or flip.

    What I Accomplished:

    Changing the default view was surprisingly easy. @books was set to pull in Book.featured, or all the books where “featured” is checked Yes. This is important so I can eventually add thousands of books but turn on/off which ones are shown to users. It turned out all I had to do was change it to Book.featured.sample(1) and it pulls only one random book each time the page is loaded. The downside is that the url the user is on will always be coverlist.com, so they cannot potentially share a specific book to social media.

    I also added Meh and Yes. and turned the happy face into Ooh!, all in line underneath the book cover. All of them refresh the page, to show a new book, and Ooh! still keeps track of how many votes it gets.

    Then I tried to add the flip view using CSS. I found a number of tutorials that do the same thing, with a <div class=”side-a”> and <div class=”side-b”> but the closest I got was with the code in a Treehouse tutorial. The only problem is that the book would rotate and the book info would appear very far out in the side of the browser. I’m not sure why. Perhaps there is something in my existing CSS somewhere causing this. I could not fix it so I pulled the code.

    Goals For This Week:

    I met the founder of Poshmark this week and was really impressed by his approach to the app and how he came up with the idea before mobile technology was pervasive enough to make it work. I also really like the site’s homepage when you’re not signed in. Right now Coverlist looks like this:


    I’d like it to look more like this:


    A fellow developer I met on Angellist recommended I find a splash image on this site.

    Another problem that I believe is key to fix before Coverlist is truly an MVP is the Add to Library action. Right now you can add the same book to your library many times. That doesn’t make much sense but I haven’t figured out to disallow it yet. Another fix would be to enable users to remove a book from their library, which should be added anyway.

    There’s also some debate on whether the action should be Add To Library or I’ve Read This. From a book recommendation algorithm standpoint, it seems more meaningful to track what books someone already read. But from a social standpoint, it’s more meaningful to track what books people actually like. So, adding to your library should evoke the same feeling as Add To Favorites does on a site such as Birchbox. I actually don’t care if you’ve read the book at all; perhaps its something you were recommended and just want to read — that’s fine. I think a user’s library should be aspirational as that’s a better expression of identity anyway.

    That said, the heading on the user page may need to change. How about: “My name is Dani and these are the books I like to read.” What do you think?

    One Thing I’ve Learned:

    I met someone last week who just finished YC over the summer. He said he arrived thinking it would be an intense three months of building the product, but instead, they were told to spend their time building *and* talking to users. Many times I don’t feel like Coverlist is strong enough to show to anyone — there are some obvious design flaws. But I’m beginning to see how early user input is better. I’m lucky in that I am the target user for my own app, but I have a lot of friends that are, too — and if they can confirm one of my doubts about a feature, it allows me to be much more confident in what I am making.

    Tags: making coverlist / writing / reading / coverlist / app /