What I learned in 2017 as CTO for a VR startup

For me, I’ve found that I have to get my hands dirty to really understand and appreciate something. There can be a big difference between learning something in the abstract and applying it in real life, particularly in production environments.

I spent most of 2017 as interim CTO for a VR startup. This was a great opportunity for me and I’m grateful for the chance it gave me to meet and work with some great folks.

Below is a list of some of the technologies and otherwise that I learned in 2017 as a result.

360 Video / Photos

I learned about 360 video and photo formats, transcoding, and playback.

In particular, I got a lot of experience with equirectangular projection[wikipedia].

I was surprised by the lack of mature tool-suites in the area. The tools available today for creating and working with 360 video and photos are very primitive, requiring extensive semi-manual effort to edit and manipulate 360 video. There is no one single dominant tool today. There is an opportunity there.

Hibernate ORM API with JPA 2.0

Like all startups, things move fast, so there is always technical debt. In this case, there was a significant requirement to update the back-end to something more flexible, adaptable, and testable. With limited resources, and customer deadlines, fork-lift replacement was not an option. There was a functioning data model and a lot of business value in existing Hibernate ORM code. So, while we replaced the REST service with Jersey/JAX-RS/Spring, we kept and re-used the Hibernate ORM code and data models. This meant integrating Hibernate with JPA 2.0 and the Spring entity manager / data services. So, long story short, I learned more about Hibernate than I knew before 2017. And I learned more about Spring JPA too.

Amazon Elastic Transcoder

I’ve worked with a lot of AWS services but there always seems to be a new one I haven’t had a chance to use. For 2017, one of those was the Amazon Elastic Transcoder service.

As expected, it’s pretty cool. You set up a pipeline and S3 notifications (i.e. when a video file is uploaded) can trigger a Lambda function to initiate the transcoding and SNS notifications then indicate the state of the transcoding process and output. Easy peasy. 😉


As we built sufficient tests to allow for continuous integration deployments, it was a great opportunity to get familiar with CircleCI. Since we had a Maven build using the standard verify lifecycle, it was an easy fit with CircleCI. Basically upon every push of a specific git branch, CircleCI spawns a fresh container that then must be set up with any dependencies required to run the build (MySql, Tomcat etc.); it pulls the code, runs the build, all the integration tests, and if it all succeeds it deploys to either staging or production as determined by the git branch. It’s a nice service. I’d use it again on future projects.


That’s a short list of some of the technologies I got to explore in 2017. In addition to technologies, a few other things I learned in 2017 include:

  1. Even being pretty consistently the oldest person in the room, I still really enjoy working with teams, working with customers, and building new products and services
  2. Startups are still hard. Raising money is hard. Getting and pleasing customers is hard. Working with limited resources is challenging and can be stressful. I don’t envy startup CEO’s; they have a tough job.

So what’s next for me in 2018? I don’t know yet. I think I’ll be focusing on blockchain and AI/ML, but more on that to follow.