John Omar Serial Builder

About Twitter Github RSS

Powwow Progress Report - Week 3

Apr 05, 2017

Hello from Tokyo! I’m working from Japan for a month, but don’t expect that to slow Powwow’s progress.

Many of you sent great feedback after last week’s progress report. In general, people loved hearing about my routine - knowing that I take a 3 to 4 hour midday break while building companies comforted many because it is contrary to the workaholic/hustler mindset that pervades startup culture these days. What people want to hear more about are specific technical and business challenges we are facing each week. Tell me what you want to hear.

Previous Progress Reports
Week 1
Week 2

Week 3 Overview

Technical challenge

I spent ~10 hours grappling with the best way to update a user’s last read message. We’re using firebase as our backend database. Being careful with the number of read and write operations makes the app feel faster for the users and saves us money. At the same time, we need to ensure enough data is sent and retrieved so as to have cool features that users keep coming back for. That’s the sweet spot.

First failed attempt
Update the user’s last read message every time a new incoming message arrived from firebase. It worked perfectly but doubled the amount of requests we had to make. Every time a message arrived to the app, we had to send another request to firebase to update the user’s last read message.

Second failed attempt
Firebase has a handy function called onDisconnect() that will send an update to firebase right before a user disconnects from their app. My idea was to use this method to dynamically send the last received message to our database right before disconnecting. That means that updating the last read message for a user would cost us one extra server request. This didn’t work because onDisconnect() only works with static data that can be computed upfront. The function could not calculate the last message and then write to the database all while our app is closed.

Third attempt
My last idea would cost us only one write operation to the database and get us all the unread notification functionality we need, so I definitely wanted to figure out a way to get onDisconnect() to work for us. What if I could overwrite the onDisconnect() function each time a new message arrived? All I needed to do was cancel the old disconnect event and create a new one. It worked!

Business challenge

As I touched on above, we are trying to figure out what the client dashboard is all about. There will be more to talk about next week. We’re light on business challenges this week because our focus is on coding the features we know we need.

Khari’s routine

Last week John shared his daily routine with you all. This week, it’s my turn. My schedule is a little less predictable but equally consistent.

I wake up every morning without an alarm following 8 hours of sleep. On average I go to sleep between 1 and 2 so I wake up naturally between 9 and 10.

When I wake up, I get up and walk over to my phone. I try not to sleep next to my phone. For the next 5 minutes, I check emails/messages. On a lazy morning I might check Twitter/Quora in bed on my phone for a little while before leaving the house. If there’s something that urgently requires my attention, I’ll work from the computer and handle that before I leave the house.

Within 20 mins of waking up, I’m on my skateboard headed to get a coffee. I may or may not bring my computer. Some mornings I code/design a bit at the coffee shop, but usually I take the time to just read articles, talk to people in the shop, handle miscellaneous tasks from my phone and plan out what I want to work on that day (assuming I didn’t make a concrete plan the night before).

I am usually there 1-2 hours. If I need groceries, I get them on the way home. I am at my desk and really getting into work before 1. I stay this way for the rest of the day, sometimes interrupted by hunger, or a need to move. If I need a break, I might head to youtube for a quick vlog, interview, or some sort of fabrication/construction/modification video.

I eat when I am hungry. No real mysteries there. Usually 2 times per day. Once before 13:00 and again before 10.

I usually stop working around 10-11 but if I’m motivated, I might continue working until who knows when.

Then I will either watch a movie/series or make music for a few hours.

I don’t have trouble falling asleep and staying asleep but some nights I am bombarded with ideas that have to be written down immediately. I used to take these notes on my phone but I don’t like having my phone near the bed - now I use a pen/paper. Call me crazy but on the rare occasion that my phone is left on and near my bed, I can feel a slight tension in my head upon waking up. I eventually want to get a small sound recorder because sometimes my ideas are musical and I need to hum/sing those out.

Total work count: 8-11 hours per day, 7 days per week.

Screenshots of the app

Showing online users. It’s lonely out here.

Screenshot 1

User settings.

Screenshot 2

What’s next

Send me some recommendations for things to see or eat in Japan. Until next week.

Get on the mailing list for future progress reports.