Last year both Uri and I delivered sessions in AngularConnect 2015 and were very excited to be there. A few months after AngularConnect 2015, we talked about doing something different in this year’s conference and we end up with thinking about a joined workshop. We contacted Pete Bacon Darwin, one of AngularConnect’s organizers, and asked about an option to do a workshop in the conference. Pete wanted to know the subject so we gave him a few options. One of the options was an IoT workshop which will use Angular 2 (The first thing we came up with was doing the Simon game that Uri presented in ng-conf).
A few months later, we got notified that the workshop is going to happen. Yeah! and more than that, Pete informed us that they thought that the workshop is cool and decided to giveaway the IoT workshop’s hardware as a SWAG to all the attendees. On the other hand, we had a really tight schedule to purchase all the hardware and had to buy >1000 kits. So what could we do? Go to plan B. Plan B included a smart Bluetooth light bulb that can change colors.
The first problem we had in plan B was the fact that we couldn’t control the attendees laptop setups in terms of OS or platforms (and we didn’t want to control those). If you ask yourself what’s the problem with that, the answer is Bluetooth Low Energy (BLE) isn’t widely supported and that is a real challenge with different platforms and OSs. This is why we chose Ionic 2 as the app’s platform. Ionic 2 aligns with Angular 2 and can run on different devices, so it made a natural fit for the workshop. Accept from the Ionic app, we also developed a web app that used Bluetooth web API.
The second problem came from my end… I have an old laptop (this is going to change in the near future ) with no BLE support (because of both the hardware and OS which is Windows 10). The solution we found was to create a VirtualBox VM that will run Linux and to add a Bluetooth dongle to our setup for Windows users. The VM proved to be very valuable during the workshop because there were a lot of different problems that we haven’t thought about.
Two weeks before the conference the apps were working and Uri even put the Ionic one in the Android store. We started creating the document that attendees will follow in the workshop in order to build the apps and also a small presentation (20 minutes long) that will help us to explain basic concepts in both Ionic 2 and BLE. Along the way François Beaufort from the Google Chrome DevRel team joined our venture, because he was interested to get real usage feedback about Bluetooth API, and became a third workshop instructor. There was also support from Adam Bradley, Ionic co-creator, which helped us to use the newest Ionic 2 bits and bytes (we worked on their nightly build). Last but not least, Uri even did a pull request to the TypeScript project to add the support for Bluetooth API so we will have Bluetooth types in the workshop (yesterday the PR was merged into TypeScript – two thumbs up for Uri!).
The workshop day arrived and we were very excited to see more than 70 attendees in the crowd. After the short presentation the attendees started to work on the app and all the three of us went from table to table and tried to solve attendees problems. 15 minutes before the end of the workshop we decided to stop the work and to ask for feedback. The feedback was really constructive and valuable and our favorite one was “I think that it’s absolutely amazing that you can do this with a web page.”.
All in all, we were really happy with the outcome of the workshop and that attendees were really thrilled to explore BLE further (I’m talking to you Phil Nash ) .
If you want to build the app by yourself, the workshop instructions are online. The apps source code are available on github and the Virtual Machine Image is also online (follow the workshop instruction to wire it up). I hope you will have fun and you can contact Uri or yours truly if you want to talk about the workshop.
You can also read Uri’s thoughts about the workshop.