Software lights up the world

The LIFX bulb has been a significant effort of hardware engineering but it’s also a significant feat of software engineering. As with many “Internet of Things” devices, the LIFX bulb is largely driven by software: the software that controls the bulb (e.g. smartphone app) but also the software inside the bulb that makes it come alive.

We asked our CTO, Daniel May, to talk tech about the software under the hood of the LIFX bulb, as well as covering some of the big questions that you’ve been asking.

So … what’s the deal with all this software?

Your LIFX bulb has much more in common with your Bluetooth speaker than your regular analog lightbulb. It’s an electronics device with chips, memory, radio and networking components. It’s pretty much a small networked computer. And like all computers, it runs software that makes it do the things it does.

The software inside the bulb – called firmware – does a lot of things: it controls the LEDs, processes all the messages from apps, it remembers what colour the bulb is, connects to Wi-Fi networks and much more. We don’t have a whole lot of space on the chips in the bulb, so there’s a lot of work to make sure it does the job as efficiently as possible, works properly and can be updated in the future.

Then we’ve also got the smartphone apps. First, you need to spend a lot of time designing the app. What does a smart bulb app do? How does it look? How does it behave? There’s no precedent for this: it’s a new category of product. And then you have to implement the app. This is complicated because the app has to talk to the lights – so both firmware and app teams have to constantly work together and be in sync. (And it’s much trickier than a standard smartphone app that just needs to talk to a web backend.)

On top of that, we’ve also been working on LIFX Cloud, our web service on the Internet where you can store your bulb details, schedule events and remotely access your bulbs. It’s a web site but it has to work very fast and scale to handle hundreds of thousands of simultaneous users and bulbs.

Because our product is integrated, firmware + app software + cloud software all need to work together to deliver a satisfying experience for our customers.

There’s a lot of moving pieces.

Yup 🙂 That’s one of our biggest challenges.

Anyone who has worked on software of any real complexity will tell you that it’s hard.

Also many of us will have experienced that growing a team can be challenging. It’s no different for us. We’ve scaled up a world-class team of engineers to tackle our workload but can’t scale infinitely, instantly. So we are constantly prioritising what we need to deliver to our customers: sometimes, making difficult decisions in the short-term to give the best outcomes in the medium and long-term.

What about all those features in the Kickstarter video? I want my features!

I really feel your pain. They’re coming!

Our goal has always been to deliver on the Kickstarter features at minimum, no questions. Our focus on this first quarter of 2014 is to keep delivering these features. All of our customers are important to us, but our Kickstarter customers are extra-special to us: they were the ones who believed in us first and it’s our highest priority to honor the commitment we made to them.

Creating something new usually means unexpected challenges and delays. We also made some big decisions along the way like creating a bulb that was much more powerful and premium than we had originally planned: so effectively, Kickstarter customers would be getting a better product for their money. We made the call to release a product that first delivered core features to our customers: so that our loyal supporters could get something in their hands now, while we progressively shipped updates post-launch.

We realised that we could use the app update features of smartphones today, as well as the capability for our bulbs to be updated. These will be standard features of Internet of Things devices, so why not use them?

Now the Android app. It’s pretty painful to use …

Yup, this is one of those unexpected challenges and delays that I mentioned. It’s hard to get the right people who can do this properly.

We had issues that we couldn’t resolve with an external developer who put together the current Android app and we parted ways just before launching the product. The Android app feels like it lacks features because, to be honest, we couldn’t complete those features at launch.

You’re dealing with a smartphone app that is not your standard app that has a simple user interface and queries a web back-end. There’s a lot of technical challenges and subtlety that’s needed to communicate effectively with the bulbs. Plus connecting this to a user interface that also has to behave in a sophisticated way.

We had a lot of internal debate about whether to delay Android app launch til we found someone who could revise the code. Again we made the call to release so customers would have something in their hands now, while we worked on fixing the situation.

It’s not an easy situation: we feel our customers’ pain – and we’re busy fixing the problem to take away that pain – but the fix doesn’t happen immediately and also feeling your pain all the way too. We’re using that to keep ourselves focused and to solve the problems.

The big win out of all of this is through all of this, we found our senior Android engineer, Jarrod Boyes, who is well into building a robust Android app. Previously, Jarrod wrote the top-reviewed Android version of the Footy Live app, also chosen by Google as one of the best Australian Play Store apps for 2013. Releasing a proper Android app is one of our top priorities and this will happen in the first quarter.

This video features our upcoming Android app and the new firmware in the bulbs, with improved messaging rate and reliability. You’ll be able to update existing bulbs over-the-air through our smartphone apps, once the new firmware is released.

Why don’t you release an API? Don’t you want people to write apps for LIFX?

Most of the LIFX team have a maker/hacker background. We love APIs. So the LIFX API has always been – and still is – a critical part of our product. We absolutely want people to write apps for LIFX bulbs.

It comes down to priorities. We have a long list of things to get done – even though we’d like to do everything straight away 🙂

Developing an API actually takes a lot of time and effort. We started working with customers and partners on preview versions of our API last year. Every time the product changes, you have to update the API and documentation – e.g. our protocol is in its third significant revision now. And there’s a lot of design decisions to be made around an API: how do you want to expose this functionality? would a developer find this or that approach helpful?

We realised that the more time we were spending on the API, the less time we could spend on the product itself 🙂 So again, we decided to deliver a product that all our customers could experience, and then start focusing on supporting our developer customers so they can create even better experiences for everyone.

People often ask how I feel about all the LIFX customers that are reverse-engineering our underlying protocol and create all kinds of apps and libraries. We love that spirit of hacking! There’s something special about someone building and extending something new on the foundation you’ve created. It gets us excited because this is the start of our community of developers that we want and need to support, as we keep growing this year.

In the first quarter of 2014, we’ll start to release API language bindings that will wrap around the protocol, simplifying a lot of complexity and bringing LIFX to a much wider developer audience. This approach will also insulate developers from future protocol changes. Our app libraries will also be open source and royalty-free. Our goal is to make LIFX available and accessible to as many customers and developers as possible.

So what’s next?

I wish I could say 😉 We have a lot of things in the works.

The best thing is to stay tuned to our blog. I know a lot of our customers already are – so thank you for your truly inspiring support. Now we have shipped, we have turned a corner and will be doing better at sharing our journey and keeping you updated.

Our main focus right now is to keep delivering those features we promised and live up to the trust that our customers have invested in us. We feel privileged to reinvent the lightbulb and create experiences that will be an intimate part of everyone’s everyday life.

Questions, comments and feedback? Drop us a line at support@lifx.co