Skip navigation

I quit my job to build an app and start a startup!

It’s been a few weeks and I’ve been posting updates to Facebook, but today I feel like updating my WordPress!

According to my git commits, here’s what I did this week:

  • Check-ins are now associated with shows instead of venues (obvious in retrospect)
  • If there’s a show happening right now, the app will get a list of all checked-in users and flag them when they participate in chat.
  • Users can now change their display name via the Settings/Profile screen
  • Added support for different types of shows (IE regular show, secret show, appearance w/o music, invite-only shows, etc.)
  • Added a leaderboard to the app that fetches on app startup but can be reloaded via pull-down-to-reload pattern
  • App now knows which users are band members so they can be highlighted in chat
  • Refactored all client and server request handling code to use JSON for client requests (previously was url-encoded string, which was working until I needed to send an array!)
  • Added “heartbeat” code that automatically grabs chat and check-in info every ten seconds. It’s generalized so that any frequent updates can be added and broadcast to the rest of the app using a notification pattern.
  • Added support for push notes via OneSignal, including storing push note data on the server so I can support server-side push notes later. (Later meaning tomorrow, when I hope to get them working!)
  • Added client support for loading band info at startup (future support for multiple apps running on the same server)
  • Updated top-bar layout to user prettier (and smaller) font
  • Completely refactored app startup sequence into a service separate from controllers (should have done this in the first place!)

Whew! That’s a lot for one week, but I still had a bunch of other stuff going on (errands, etc.) so I definitely could have done more.

Plus, I wasted a ton of time on push note stuff before implementing OneSignal. I didn’t realize that OneSignal handled the whole PN prompt process from the start!

One thing I want to note that I did last week that I’m really proud of is lazy loading of user info in chat. Basically, I don’t want to send player info along with every chat message because that’s hugely inefficient. Here’s my solution:

  1. Chats from the last week are sent to the client on startup along with player info.
  2. Leaderboard data is always sent on startup, and it includes the top 250 users. It’s safe to assume that these will also be users who chat a lot. Player info from the leaderboard can be used to populate player info in chat.
  3. Chat info loaded from the ‘heartbeat’ (IE after startup) is sent only with player id and message. The client matches up player ids to existing in-memory data, compiles a list of player ids from chat that it doesn’t have data for, and sends that list back to the server to get info for JUST those players.

This guarantees that the client will only ever load player data for new chat participants, and the server doesn’t ever have to send redundant player data along with “heartbeat” chat data.

Whew, that’s it for now! Tomorrow I’ll tackle server-side push notes and then hopefully go see Star Trek Beyond!