The Texas-based engineer loves to play piano and video games when he's not busy building Kumospace, the best place to host events on the internet.
Kumospace may be based in New York but our all-remote team lives all over the U.S., and even across the world. What unites us is our shared passion for building technology that brings people together. Plus, we all happen to be someone who you'd want to kick back and have coffee (or a cold one) with.
In our employee spotlight series, we invite you to get to know one of Kumospace's first hires — the talented and immensely collaborative Michael Nguyen. Below, Michael shares what his role is at Kumospace, how much he loves piano and video games, his favorite Texas BBQ, and why Kumospace floor previews are a thing of software engineering beauty.
Meet Our Piano-Playing Engineer Michael Nguyen
What do you do at Kumospace?
I’m a software engineer. This means I build new features and fix bugs at Kumospace. When you send your suggestions to email@example.com, I’m one of the people that works on ’em!
Why did you join Kumospace?
Yang, one of the founders, is one of my old high school friends. He would talk about his idea for "virtual spaces" while we played Final Fantasy XIV together.
If I had enough money to retire, I would work on assorted software projects with friends. So I really just wanted to get a taste of what retirement is like.
What's your favorite Kumospace feature?
My online alias is chessdork, so I’m a big fan of the chess furniture. I often show up to meetings 5 minutes early and squeeze in a blitz game against a random opponent online.
I also play piano and had a lot of fun picking out the music pieces for our piano furniture. (Turns out finding decent recordings that are royalty-free is really difficult!)
What's the best thing about working remotely?
Piano breaks are a 10-second walk. (This was also one of the perks of my previous employer, who had a grand piano on-site).
Although we're a remote company many of us are in New York, and you work out of Texas. What's something you love about Texas?
Texas is pretty proud of its brisket (Texas BBQ). Polish immigrants that came to Texas also brought along kolaches (klobasniky) — think "pigs-in-a-blanket." And, of course, there's a wonderful place called The Kolache Shoppe that combined the two into a glorious "brisket kolache."
I hear you have a few special 'pets' in Texas that live outside, can you tell us about them?
I have a koi pond in the back with 4 koi and 9 shubunkin (goldfish). It forms a pretty cool ecosystem. There's a pump that pumps water up into a bog containing a bed of rocks and plants that grow on top of that bed. Fish eat food, producing waste. That waste is consumed by bacteria that naturally grow in the rock bed, producing nitrates. The nitrates are then fertilizer for the plants. And lastly, the water flows from the bog back down into the pond via a waterfall, which provides oxygen to the fish. So everything is balanced.
I also really enjoy how much natural wildlife the pond attracts. Every day there are birds that come to bathe in the bog. Toads come to lay eggs from April - August, and there are tadpoles swimming about. Dragonflies perch on the bog plants. It's quite nice.
What's your favorite game, or your most memorable moment, from Kumospace's weekly team socials?
Dan Galea, on the customer success team, has some incredibly creative floors (you can take a peek yourself at kumospace.com/meetingswithdan). One of them is Pac-Man themed, complete with Pac-Man techno playing in the background. It was a total ruckus with 12 people scrambling around like ghosts and trying to avoid getting eaten.
What's your favorite floor template, and why?
I adore the Welcome Room. It showcases some of our coolest furniture and even has signs to guide you through.
It's also one of the first templates that had multiple types of flooring. Alan, our graphic artist, does a great job designing the furniture and laying out our templates.
I know you're a video game pro. Tell me about some of your favorites.
Oh, there's too many to list. My favorite childhood games were on the SNES. I have countless hours on Super Mario RPG, Yoshi's Island, Final Fantasy VI, Donkey Kong Country 2. In fact, a lot of the piano songs I've recently learned are from these games.
Finally, what's something you have built at Kumospace that you're especially proud of?
I was one of three software engineers who worked on the Custom Spaces feature, where people can edit their spaces by adding virtual furniture, images, a YouTube TV, a jukebox that plays Spotify, etc. It was a ton of effort, so it’s very gratifying to see the awesome spaces our users have created.
One of the features I’m very proud of is a deceptively simple one: floor previews. In the lobby, it’s nice to see what the floor looks like before you join. It's simple to describe, but it's tricky to actually build. (Warning: technical bits below).
The first problem is: “how do you generate a picture (JPG) from some data describing the floor (JSON)?" For this, I wrote a cloud function that uses Puppeteer to launch Chrome. The cloud function then reconstructs a scaled-down version of the floor in HTML. Puppeteer allows you to take a screenshot of that rendered HTML and save it as a JPG. Once the screenshot is generated, we upload the screenshot to blob storage and update the floor with a link to the new preview.
The second problem is “how often should we trigger preview generation?". If the floor doesn’t change, it would be wasteful to generate a new preview. But if the floor changes a lot in quick succession (e.g., if you’re trying to get that rug just right), we want to avoid generating a bunch of wasted previews as well. To solve this, we use a queue, batch all the changes together, and generate a preview up to once every minute. I think this is a good balance of “fast updates” while minimizing wasted CPU.
The third problem is cache busting. Our default HTTP cache duration for assets is one hour. This saves you from having to download the same image repeatedly, but it also means that if the image changes, you don’t know about it for up to an hour! I wanted to use the cache if the preview is unchanged, but to download the updated preview immediately if it does change. To do this, I added a timestamp to the preview link. So rather than, image.jpg, we retrieve image.jpg?t=1234. Since browsers use the entire URL as the cache key, this has the effect of bypassing the cache when there is a new image. If the image is unchanged, the timestamp remains the same and we can happily use the browser cache.
Phew! If you made it here, congrats, and I hope you appreciate those floor previews a bit more!