Blogpod: My Journey So Far — Part 2

Samuel Rowe
5 min readMay 11, 2021

A few months ago I started working on an app for audio articles (podcasts made from text articles.) This blog chronicles the second iteration of it. If you’re interested to know what happened in the first iteration, check out my previous blog.

Photo by Joshua Earle on Unsplash

The Personal Side of Things

I was going through a major transition in my life. I CUT MY HAIR THAT I GREW FOR OVER A YEAR! Just kidding, I was just lazy to cut my hair.

I had completed my remote internship at Trell. I took a break for some time and then joined another startup called Mela, a Y-Combinator alumni. Unlike at Trell, I was a full-time employee working at the office now.

Life was busy. I would go for a jog from 6 AM to 7 AM. Finish up the previous day’s assignments from 8 AM to 10 AM, if any. Work at the office from 11 AM to 6 PM. After work, sometimes I would ride 11 kilometers for coffee (perhaps the only thing that kept me from going insane.) I would then head back home, read some books, and go to sleep.

As of this writing, I am a fourth-year engineering student who *might* graduate next month. It’s the placements season! I noticed that a lot of people were trying to learn technologies at the last moment to improve their chances of getting a job. From my experience working at Trell and Mela, I knew one thing for sure: learning MERN stack would help these students a lot in their job hunting. As an entrepreneur in the making, I obviously took the opportunity and launched AcademyJS with Joel E. Rego.

Needless to say, with Mela, AcademyJS, and college, I was already stressed out, and inevitably had to put Blogpod on hold.

After a few weeks had gone by, I was now used to Mela’s codebase and work became much simpler. We had figured out a routine for AcademyJS that worked for Joel, the students, and myself.

Everything seemed to have settled down, so I decided to come back to Blogpod. This time, I pitched the idea to Joel E. Rego and Akshay B. Likith. I have been working with Joel for a long time now. He is a brilliant developer. Akshay is a budding designer with potential. Both loved the idea and decided to join Blogpod, which marked the start of our second iteration.

The Development Side of Things

I am an engineer. This is obviously my favorite section, and hopefully yours, too, if you have read this far.

Updated the UI

Now that we have Akshay on board as our designer, we quickly updated our screens to give the best experience to our users. Akshay has improved our designs whilst keeping the aesthetics that we desired.

Removed Text-to-Speech Pipeline

In the first iteration of the app, I created a pipeline to convert text to audio through Google’s Text-to-Speech engine because I could not afford to hire a narrator. When I gave the app to a few users, they found the overall concept helpful. However, they would not want to stay on the app because they found the robotic voices too annoying. So something had to be done about it.

I thought it was time for me to onboard a narrator. I was looking for someone who had a good voice, a decent accent, and smart. My high school friend, Jaideep Francis, checked off all the requirements. When I pitched the role to him, he delightfully joined the team. After a few cycles of editing and recording, we were finally able to find the right workflow that worked for us.

Since the platform was designed for the TTS pipeline, we had to make major breaking changes to the platform.

Moved Audio Clips to Google Cloud Storage

The audio clips generated by the TTS pipeline were stored on the virtual machine on which the REST API ran. When I wanted to deploy a new version of the REST API, I thought it would be easier to delete the local repository and clone it again, Without thinking twice, I executed my genius deployment strategy only to realize that I had deleted all the audio clips.

It was not a disaster because we were moving away from TTS. But we needed the audio clips for testing. So I wrote a small script to generate the audio clips again.

In the new update, when the user uploads an audio clip, a lot of interesting things happen in the background. First, the client makes a request to the REST API for a signed URL. The REST API ensures if you have permission to upload the audio file, creates a name for the blob, and requests Google Cloud Storage for a signed URL, which is returned in the response. The client then loads the file from the local device and uploads the data to the signed URL.

A Bug That Wouldn’t Let Users Signup

We use Express middleware to protect our endpoints. We had to expose a few endpoints to the public. It was something of a hotfix situation, so I deployed the code without testing thoroughly.

Before I explain the bug, you need to understand the signup/login flow that we use in Blogpod. Since we use Google OAuth, we use a single public endpoint for both signup and login flows. The idea is, we try to create a session whenever the user continues with Google. If their email address is not found in our database, we basically signup the user by inserting a record.

We shared the app for internal testing with a few of our friends. Some were able to open the app, whilst others were not able to. When we further looked into the situation, we realized that each public endpoint had a different requirement. Some would require the JWT token from Google, and others didn’t. I had not thought about this when I deployed the code I mentioned earlier, which caused the critical bug! Luckily we were able to fix the bug quickly.

The Business Side of Things

We focused heavily on software development and content production last month. We have now shifted our strategy towards acquiring users and authors.

We have been able to onboard around 25 authors on the platform in the true-crime genre. We have enough content to publish for at least two months. We have an ongoing effort to onboard more authors.

As for the listeners, our target is to get 500 listeners through 1–to-1 marketing. We are trying different experiments to see what yields the best results. I’ll make another post to keep you guys updated on this.

Thank you for reading! If you have any queries, you can find me at samuelrowe1999@gmail.com.

--

--

Samuel Rowe

With software development, there is always something new to discover. Designing a platform that is helpful to millions of users is my ultimate goal.