I helped my husband out today with an event today by creating some custom software.
I made a web-app that allowed users to upload a photo based on some prompts with a simple interface that was mobile friendly.
Things worked really well at home and things were so fast I left out certain ‘features’ just to reduce the amount of code written (each additional piece of code potentially can introduce another bug).
I thought I was set.
I was completely wrong.
Within minutes of the first ‘real-world’ users using it:
“This isn’t working”
“I press submit and nothing happens”
“I pressed refresh and now cannot see anything but what I’ve submitted”
It was taking much longer to upload the photos. Beyond this, they found a nasty bug that got created when an object did not fully save on the backend.
Users were going ‘back’ prematurely causing some incorrect values to be saved.
As a result of this, the code that split accomplished vs pending broke because it didn’t know how to handle this weird case.
Since it was go time, I had to move quickly and manually ‘fixed’ the data on the server to get it looking right.
I asked the users to wait for the photo to upload and that it would take some time.
My main priority was to fix the broken data. At first I was looking in the database to see where the issues were. This was tedious and time consuming, but it worked. Finally I realized ‘Hey, I created an Admin portal to see what’s going on’ and the admin portal with a minor tweak showed me exactly when something was broken.
This modified admin screen sped up fixing broken items and bought me enough time to patch the web-app everyone was using. I added an overlay to let the users know ‘something’ was still happening so that they wouldn’t be too quick to hit a button.
This seemed to fix around 95% of the cases that caused the original bug. There were maybe 10 occurrences that followed in the next few hundred entries.
I continued to make changes to the admin screen to make my job a bit easier.
It was mostly smooth sailing till my next major issue.
We had four chromecasts connected to four TV’s at the event location. The Chromecasts were set up on the same network as one of my computers using a portable hot spot (802.11n speeds). My goal was to present a slideshow to each of the four TV’s.
I was way too overconfident on this point. I was using Consumer hardware to do something that is theoretically possible and it was failing every step of the way.
At the end of the event and after most people left, I tried again and successfully got the Chromecast set up to work. It was not just theoretically possible, but possible in the right conditions.
I had three points of failure:
- The Chromecast
Maybe it just wasn’t designed for a wifi dense area.
- The portable hot spot
Maybe it just wasn’t designed to handle streaming 1080p video data to multiple devices very well.
- AirParrot 2
I bought this because it was a fairly easy way to share one’s screen across multiple Chromecasts. Perhaps broadcasting to four was just too much.
Since I was able to get things working (barely) once everyone cleared out, my only thought is that the network is likely the issue and I’ll need to try a different access point to see if the outcome is any different. Multiple people in the room should not affect AirParrot, nor the Chromecasts, but it may play a role in the ability for the hot spot to relay data between the various devices.
Overall, I was testing things live and it’s given me plenty of insight into what I would’ve done differently.
I did my best to play the customer service role as people had issues and given their time crunch, each minute counted and I needed to relay what I knew was happening in a way that they could understand and do something with. It was not easy, and there are some words that the general public is still coming to terms with.
It was a fun event, and I wish I would’ve done more rigorous testing to see how I could have made it a better experience.
Lesson learned: No matter how much you want to crunch things into a short period of time, sometimes the things we do need an amount of time that we are unwilling to give it. It’s like trying to bake a cake and expecting it to be done affter 15 minutes in. Pulling it out early just to get it on the table sooner does not a cake make. Sometimes things need a little more baking time.