Today, I’m stopping work on Bookends. In this post, I’d like to reflect on why I’m stopping work on it, what I’ve learned, and what’s next.
Bookend’s purpose is to help track and discover books. So far, I don’t think I’ve solved this.
What I’ve learned
When I started the project, I had a simple understanding of how to build a web application using Node.js, working on Bookends has helped me learn or solidify my understanding about routing, authentication, hashing, async calls, promises, and building an API. These are just Node related things, there are other things like how to deploy a staging and production server and how to keep a simple deployment flow have been one of the most delightful thing about Bookends.
Developing a project on your own is boring, hard, and slow. That’s one of the biggest lessons I’ve learned. It’s hard to keep going when there’s no users who want to use your product. It’s boring because every time you work on something, there’s no user feedback. And it’s slow because you have nobody to think with.
The tech stack I chose was familiar to me but it’s not very productive to build an application for the first time with a bunch of tools glued together. I chose node.js with express, vue.js, and sequelize as my main stack. Each of these tools, I’ve learned to use and build with better throughout my year with Bookends but it was still slower because there is no convention guiding best practices with any of them apart from the documentation.
Building an app that relies on third party data is tough, all the book info on Bookends was sourced from public APIs like OpenLibrary and that resulted in lower quality results in the end.
Bookends is currently not solving a problem for anyone and I’ve seen myself become detached from it.
Why I’m moving on
The past few weeks have been pretty hard by myself, inside my mind there have been conflicting thoughts that if I stop this, I’m giving up and at the same time, if I stop this I’m buying myself time to do something else. Up until last night, I was working on small features but even after stopping for the night, I felt like I wasn’t happy with the progress for the day. Fighting against my tools every time I work on it has been draining me to the point where I’m unable to go on my personal computer and concentrate on anything else. As you can see with hardly any posts in the past month.
I’ve been using ruby and rails at work. I’m in a reverse tech cycle here, most people are moving to node.js and a modern front-end framework like vue.js or react while I’m moving to a more conventional web app framework like ruby on rails. I want to spend more time learning ruby, building things with ruby, and learning better habits for myself as a web developer. There are so many things I still would like to become proficient at like testing, iterating on product ideas, solving real world problems, learning deployment best practices, moving away from weekend projects for a change.
I might come back to working on Bookends when I have more experience building web apps.
Below are some screenshots of the most recent deploy on https://bookends.app. Depending on when you’re reading this, the site might still be up or not.
I just finished listening to the audiobook version of Timelineby Michael Crichton, narrated by Stephen Lang. It’s another novel I had no idea about going in and the last one I did that with was Dragon Teeth also by Michael Crichton. I was blown away by Dragon Teeth since it was so engaging and it felt like an odd prequel to Jurassic Park even though it had nothing to do with it.
Overall, this has to be one of my less liked book by Michael Crichton as the world building in the beginning was pretty great, especially the first few chapters but eventually it became a bit too sparse for my liking. I like to listen to fiction as audiobooks because if the book contains a lot of world building, it feels very immersive to me. This did feel like that at first but as the novel progressed, especially when the characters were in a new environment, the world building had subsided too much for my liking.
If I was to recommend books by Michael Crichton, this wouldn’t make the list. ☹️
I’m standing here at my mac mini, with my head in my hands, frustrated yet laughing at myself. It’s been more than 3 months or whatever since I started working on this project and each time I finish working on a small feature, a bigger issue arises.
A couple of days ago, I rewrote the BookModel which was initially tightly coupled with the Amazon response but I realized I should make it less reliant on Amazon and more on the local cache I had already set up. Well, today, I was working on it and I realized it was so stupid of me to rely on Amazon at all. They’ve throttled my request for book search even though I was making something between 10-20 requests an hour if that, and all while doing development so maybe 200-300 request every week.
Well, I don’t want to just rant about Amazon. I have decided to start using OpenLibrary as it’s available to use and I will just need to update the BookModel slightly instead of rewriting it this time.
If you’d like to checkout Bookends right now, you can go to https://bookends.app. It’s not ready to be used by you’ll see updates from me here and there.
I recently finished listening to Bill Bryon’s In a Sunburned Country. Narrated by Bill Bryson himself. It’s a fun listen, I haven’t listened to or read books that are formatted like a travel log before so this was my first time doing that. It’s very calming and pleasant to listen to someone just talk about a place they visited and throw in some facts about it. The combination Bryson’s writing and narrating it himself made the book that much more enjoyable.
I started out looking for a book to listen to while riding on Muni for my short commute. Quickly, I realized that the book is a great summation of facts about Australia’s history and current (or current in 2000) affairs.
The book covers Bryson traveling from the Gold Coast all the around Australia ultimately ending near Perth on the south western coast. He covers a lot of topics I had not thought about, like what’s in the middle of the huge continent or how the people are.
He meets with some friends on his journey who take him to different parts of Australia, some great and some avoidable places. A fact that Bryson mentioned repeatedly, the country is huge. There have been many who have gotten lost in the middle of Australia’s Outback and never returned. A lot of Australia is still unexplored, this is kind of a nice thing, as it seems there are no parts in this world that are unexplored in the 21st century.
One thing I really liked that he covered was the history and status of aborigines in Australia. Historically and currently, Aboriginal Australians are disadvantaged and often ignored by the Australian government. This has been evident by the misunderstood initiatives that led to things like the Stolen Generations. An inhumane act of authority in which the government started forcibly separating Aborigine parents from their children in an effort to “civilize” them but it led to a lot of orphan children not having a connection with the non-indigenous Australians as well as not really know where they came from. This was happening from 1905 all the way into the 1970s.
My next book that I’m going to listen to Bill Bryson is A Short History of Nearly Everything. I’m thinking Bill Bryson might be a new favorite to listen to while walking and commuting because his voice and writing go so well together and the books are not too serious and missing a few seconds of something won’t affect what the book has to offer overall.
The series is split up into 4 parts of Hazel’s journey to find and secure a safe home for himself and his friends.
After reading about how Richard Adams felt about Martin Rosen’s 1978 version of Watership Down on reddit: link, I decided to not watch the movie. I did this because I am very happy with how I felt about Watership Down as a book and the audiobook version is an amazing piece of work to listen to if you want to try something else.
So, when I saw the preview of the Netflix series, I really got excited because it did not look as misinterpreted as the 1978 movie. And I think that was how it turned out as well.
The series does a good job of telling the full story, there are of course some hard to convey emotions and stories but overall, it did a pretty good job of capturing and showing the emotions and stories that the rabbits were going through.
On the differences part, I only noticed a couple which I didn’t mind as much and if you’re someone who likes the series and it’s your first foray into Watership Down, I recommend reading the book or listening to the audiobook afterwards. Three differences that stuck out to me:
Strawberry’s character is a female in the series while the book has a male character. As a female, the series adds on a love triangle sub-story which adds a bit of comic relief at times.
Both Pipkin and Silver are omitted altogether in the series which did not subtract from the overall story but it did create some scenarios where another member of Hazel’s group took that line of dialogue or part in a fight. I just really like the name Pipkin 😊.
The third one is in my opinion a difference because of how a book can be written versus how most visual things are made, there was hardly any real story telling from Dandelion or Bluebell. And when a story was started, the camera panned out and faded out which means you’ll only know stories about the Black Rabbit of Inlé and El-Ahrariah if you go through the book is not bad in my opinion.
Rosamund Pike as the Black Rabbit of Inlé is probably the best voice casting choice and Peter Capadli as Kehaar is so entertaining! I would recommend watching the series as it’s a great winter season watch, a group of rabbits running around finding a new home and fighting strange Elil on their way!
This year has been a great one in many ways and a year of learning good, easy, and hard lessons all around. One of my favorite revelations this year has been finding out that it takes a lot of focus to build some focus. Eventually, the latter increases while the former decreases. It’s easier to focus on things for a longer time if you spend consistent effort focusing. This has led me to write more, read more, and deliberately work on things I value.
Reading is one of my favorite things to do because it relaxes me, takes me away to a different world, I learn something new, or about someone new and all these things are things that reading in some form brings me. So in this post I’ll talk a little about that and a little about my favorite way to consume books consistently, audiobooks.
Out of these 20 books, my top there are Watership Down, Dragon Teeth, and Stardust. All the ones I enjoyed the most were fantasy or fiction of some kind. Dragon Teeth blew me away by how well it was written and how different of a book it is from anything else I’ve encountered. I listened to Stardust within the last 2 weeks and it has been a great book read by Neil Gaiman himself! My favorite of the year is definitely Watership Down, check out my full review of it.
Now, on to 2019 and a full year of new books to check out! If you have any recommendations, please send them to me!
It’s been a few weeks since I wrote the the initial Bookends post. I’ve been taking a couple of hours every week to work on the setting up Bookends and today, I sat down and got the search working using OpenLibrary’s API.
The search works by doing a naïve search so I think right now, it’s not ready to be used as it’s not reliable.
If you look at the screenshot below, you’ll notice that there’s no way to tell which book is actually a real Harry Potter book or one that’s missing an author.
Next steps will include actually getting the search to order based on popularity. Also, I want to add more descriptions and covers before allowing people to actually play with this.
It’s been a slow progress because I’ve been thinking more and more about making the application portable from dev to production. No idea how I’m going to do caching right now and so I spend some time thinking about that right now.
During the months of May and June, I worked on a hobby project with a friend of mine called “Decide”. You can go check it out here. During development, I learned a couple of new things, technical and personal things about myself. Technically, I learned some React based on Next.js. If you’re about to start learning React, don’t pile on another piece of tech on top of it, it’ll just make things more complicated and development even slower. My friend took care of most of the deployment work and the heavy lifting related to getting the app working, he even did a lot of the styling so I was left with figuring out some minor bugs, adding some features, and eventually doing some product development. This felt odd to me, I wanted to learn more and do more during this process. Well, we figured that the project was going to be “done” soon so we should just launch it and let it simmer on the web. After about a month of being live, we have some users on it but we’re not actively working on it. I wanted to start working on something new.
This post is about that new project. I am starting working on another hobby project now and I’m hoping as time goes on, it can be more than a hobby project especially depending on how much traction it will get over time. I don’t want this to be a rushed project, I don’t want it to be a dance of git between two people, and I really don’t want it to be vaporware. So how do I prevent this from happening? Well, I’m hoping this won’t be a short-lived idea since it’s not something I want to just throw on the web and walk away. I have decided to take the development slowly. A couple of days after work during the week, maybe a few focused hours on the weekend. It won’t be a dance of git since I’m going to be the only developer on it for as long as possible. And it not being vaporware? Well…that’s going to depend a lot on how much effort I put into the project and actually make it useful for the community.
So what is this project? Bookends is an a place to track your books and discover new ones. You might be thinking, “Goodreads already exists, why another one like it?” I love Goodreads, I use it often but it’s not what I want a book tracking, readers’ social network to be, I think it can be more than what it is right now. There are so many people out there who love books and I believe Bookends can be a place for them to belong and be part of a community.
Anti-social network ideas & privacy
Most social networks thrive on the network effect and then turn around and use the same mechanism to betray or at least kindly coerce their users into paying them somehow, whether it’s clicking on ads or providing valuable gross data profiles that can be then sold to corporations, governmental agencies, and even potential employers read more about this. Sure, this might be a necessity for companies that are pushed by their investors and stakeholders to churn out huge profits but I believe people’s emotions and wellbeing should not be taken advantage of for the sake of making money. I don’t want to build a social network that takes user’s activity and turns it into revenue. I also don’t want to build a social network that acts like a layer of information for corporations to make more money.
My goal with Bookends is to provide a safe and friendly community for book lovers to connect and share ideas. It’s not to collect every action you perform on the website and then turn it into a unit of revenue.
For the privacy portion, it’s amazing what contemporary tech companies can collect about their users but they don’t always have to do that. I don’t want or need to collect user information that’s only used to build generic profiles to be sold to ad buyers. A user’s privacy means they will only share things with their circle of friends.
People should connect over books and genres they love and that’s my hope with Bookends.
What is a user?
User on Dictionary.com A user is an odd term, in my opinion, it’s technically fine to call anyone using something a user but I believe it’s a bit too abstract or if you’d like to ignore the first definition and go with the second one, it becomes a bit more weird. But I think a user on Bookends is really a “reader”. You read books, you’re a reader. So you’ll see me refer to users on Bookends as readers.
Development status and what’s in it for me
The past few weeks, I’ve spent after-work hours working on the backend setup for Bookends. I’m grateful to have a team at work as each person is great at their own role making development easy but since I don’t have a team working on this with me, it’s a bunch of googling, reading, experimenting, and spinning in circles. I do feel like I’m learning more and more about each part of the product. From putting together the landing page and pointing it to the Bookends domain (www.bookends.app) which needed to be https to getting the vue.js app working properly, I’ve been making slow progress but I’m feeling like things are speeding up.
Why would I want to build a social network for book lovers? I love books, that is a big reason. Building a place for communities to thrive is important and meaningful to me. I want to grow as a developer and having something meaningful to work on will help me do that.
Currently, Bookends is live as a landing page but the past few evenings, I’ve spent putting together the initial user interface that will feature a search for looking up books. The alpha will launch as just a search for books. The beta will feature reader profiles and the ability to track books. As things move forward, I’ll look for a way to allow making upcoming features a publicly visible thing but for now, I don’t have a good way of doing that.
Who’s paying for it?
Most startups don’t worry about making money because they’re in a hurry to collect the most users possible and then somehow figure out how to make money, that has worked out for most of them, but some just can’t figure it out (see Tumblr, Luxe, Rdio, etc.). Accumulating the most active users in a month or being the largest network of any kind is useless if the users on the network are either addicted or not adding value. That’s not my aim with Bookends, if each reader using Bookends can comfortably use the product and get something out of it, that’s worth it to me. At this point you might be thinking: “but who’s paying for it!?” Initially, the first few months, I have no plans of growing exponentially as it’s a hobby project so I won’t worry about making money in any way. This is not to say I’m going out to raise money or do anything like that. I’m still working my day job so I can pay for rent and food 😂. What I am thinking is that in the long run, it would ideally be a community funded project, something that the community can help fund and grow but I’m not concerned about that right now, first let me find that community!
Please follow along this journey and I would love feedback anything I’ve said in here and on the project itself. You can go checkout the project here: https://bookends.app.
This is a weird one. This post is about not being able to finish this audiobook. I’ve been on a good streak with audiobooks in the past few months, finishing about 2-3 a month. But…I’m not sure what’s happening with this one.
So far, I’ve listened to a total of an hour of the book and I can’t seem to keep up with the story and maybe the narration doesn’t sit well with me, I just can’t keep going. I’m calling quits on this one.
Before I started listening to this book, I had heard good things about it and China Miéville but maybe I should read the book instead of listening to it.
In the past 2-3 months, I’ve been writing way more code and relatively more blog posts than I had before starting this blog. This has been mainly due to my goal of being consistent about things that interest me.
I’m writing this post because I haven’t posted in about 10 days and I was getting anxious to write something. This post is kind of like an intermittent update because I have been busy lately but I think most of those things are not very interesting to post about.
Cycling: I’ve started riding my bike again, after about 11 months of inactivity! My bike was hanging on its hook for so long that it had collected dust on all the components! I had forgotten where my pump was and took me awhile to find it. Below are my stats from Strava for cycling:
I don’t want to be unrealistic but I do want to ride a couple of hundred miles if I stay consistent.
Books: after finishing The Three-Body Problem, I wanted to read/listen to something non-fiction and I started listening to A Fine Mess by T.R. Reid. It’s a book on taxes and I did enjoy it. I have a draft post about it but I’ll talk more about it in that. I’m also reading a fiction book called Mattimeo by Brian Jacques, it’s a children’s fantasy novel about anthropomorphic mice, second in the Redwall series. After my experience with Watership Down by Richard Adams, I’ve been feeling many different things, like the whole story is so magical and profound yet so dark and simple that it kind of hurts to think about how real it made me feel.
The Joy of Tidying (and finances): I didn’t really know what to call this part but one thing that’s been part of my everyday thinking has been the notion of “less is more” and also using a recently learned problem solving principle called Occam’s razor to clearly focus on things. I remember when I read The Life-Changing Magic of Tidying Up by Marie Kondo last year, it really opened up a new way of looking at my possessions. It started with just the things I had and how many of them I wasn’t using or wanting yet they all were in my house, taking my room and requiring my time. Once I simplified my clothing, books, and other possessions, I started to think of abstract noises and complexities like finances, digital presences, online shopping, and even apps on my phone. This has been a topic of research for me as most people in my generation are dealing with this in various ways, I want to find an approach that’s not Draconian and still lets me enjoy my time with these things and without them. More on this later!