What Did I Learn in 2017?

A quick summary of a great year

Uri Shaked
codeburst
Published in
10 min readJan 1, 2018

2017 was an amazing year for me —I went to many conferences, met great people, learned about Neuroscience, Biology, Electronics, Robotics, Accessibility, Angular Internals, Web VR/AR and created some “making” projects, open source libraries and blog posts.

A moment before 2018 begins, I would like to reflect about the past year, and share with you a short summary of everything I learned during 2017.

Let the journey begin!

Digging deeper into Angular

Angular is my go-to framework of choice, and this year, I decided to go deeper and explore the internals of the framework: I took a deep dive into the Angular compiler, and was even selected to do a DiY Angular Compiler workshop in ng-conf, the official Angular conference in Salt Lake City.

I started collaborating with Max NgWizard K, and together we explored how Angular applications are wired.

There was even a time where I gave a talk on a cruise boat, combining an old passion of me, Salsa dancing, with Angular, Web Bluetooth and my Purple Eye robot. I even got Ben Lesh and Jeff Cross to dance together!

Everybody Salsa! Photo credit: Eva Blue

Going on a cruise with friends from the Angular community was an amazing and memorable experience for me. Thank you again Tracy Lee | ladyleet, Joe Eames, Gerard Sans and Taras Mankovski for making ng-cruise happen.

One big happy Angular family in the Bahamas! Everybody Salsa! Photo credit: Eva Blue

Some other great Angular conferences I have been to are ng-vikings, where I spoke about Web Bluetooth, Beacons and Angular, NG-BE and AngularUP, where I showed an interesting use case for Angular: build-time rendering for creating high-performance static web sites. The light-show at the beginning of the talk was a lovely surprise by Carmen Popoviciu.

When I went to AngularConnect, I was really happy to find that we were total of 6 Israeli speakers in the conference, including Shai Reznik and Shmuela Jacobs— it made me really proud!

Web Accessibility

Web Accessibility is a topic I really started to care about this year. I spent a lot of time learning about how people with different disabilities interact with technology, and even wrote a blog post to raise the awareness for the need of accessible apps, giving the readers a taste of what life with a screen reader feels like, and showing a real-life example of making an Angular component accessible:

In addition to the blog post, I also gave a lighting talk about accessibility in ng-conf, in front of a thousand developers, and a full-length version in AngularConnect:

Overall, I believe that accessibility is a very important aspect when developing an app, and it is often overlooked by product managers and web developers. I truly hope that we, the web developer community, will keep adopting accessibility standards and serve a great examples for other to follow.

Beacons and the Internet of Things

One of the things I was really excited about in 2016 was the Web of Things — including The Physical Web and Web Bluetooth. I spoke about these subjects in many meetups and conferences, and even built a small dancing robot for demos.

This year, I decided to level-up the game. I came up with a clever travel hack how to use beacons to get notifications when my checked luggage arrives. Next, I learned how to create my custom-designed electronic circuit boards, and created my own beacons that were designed to resemble the Angular logo — thus, the ng-beacon was born.

ng-beacons!

While working on this project, I learnt a lot about Bluetooth Low Energy, and more specifically about the nRF52832 Ultra-Low Power Bluetooth chip and Espruino, and embedded JavaScript engine that powers my hardware projects.

One of the major problems that I had with Web Bluetooth, is that it is not available for Windows, my main operating system. I had to use an Ubuntu Virtual Machine with a USB dongle whenever I wanted to use Web Bluetooth, which was very inconvenient. Fortunately, I was able to create web-bluetooth-polyfill, a Chrome extension that adds Web Bluetooth support on Windows 10.

Equipped with the new polyfill, I was suddenly able to prototype faster, and so I was able to connect my brain to the web (more on that later).

Making, Robotics and Mechanics

Last year, I spent some time reverse engineering Smart Bluetooth Bulbs, created a Physical Simon game powered by Angular and a Raspberry Pi, and connected my Shirt to Slack using Arduino.

This year, I had the opportunity to work on even more challenging “making” projects — including the ng-beacons I mentioned above, as well as a small heart-shaped key chain for my life partner’s birthday, an angry Panda circuit board and a few more. I learned a whole bunch about PCB design with Eagle and KiCad, PCB manufacturing and soldering.

Then, I leveraged my newly acquired electronic design skills to turn a Smart Bluetooth Bulb into a battery powered one, so I could perform magic tricks like these ones:

My next project was Spinduino, a Smart PoV Fidget Spinner — basically, one that you could program with JavaScript to display any pattern by blinking a row of LEDs really fast as you spin it, using a combination of a small magnet and a hall-effect sensor to sense the rotation speed. Overall, I did 3 different revisions of the board, learning from my own mistakes along the way. Also, soldering the very small and tightly packed LEDs required me to level-up my soldering and hot-air gun skills:

Finally, my most challenging project for the year was trying to build the Chrome Offline T-Rex game in Real Life. It thought me a lot about Mechanics, working with Stepper motors, driving e-paper displays, designing laser-cut parts, and I even got to experiment with casting tin!

The most amusing part was, of course, was debugging the game:

and of course, watching people playing the game and enjoying it during the Chrome Dev Summit was priceless:

Nueroscience

This is a subject that always piqued interest, and this year I was finally able to start exploring this exciting field. It started when I purchased my first EEG Headset, and shortly after figured how to connect to it with Web Bluetooth and created the muse-js library, which then led to the creation of eeg-explorer app.

Things shifted up a gear when I joined the NeuroTechX Slack Community, where I was able to learn so many interesting things from the experts hanging around there (I’m looking at you, Alexandre Barachant), and even built my first EEG-powered game — controlling the Chrome T-Rex game by blinking your eyes (you see the recurring theme here, don’t you?)

In the last quarter of the year, I had the opportunity to share what I learned in my DevFest Nantes and JSKongress Talks, and even wrote a very comprehensive blog post summarizing all my learnings:

For 2018, I hope to continue exploring this field, conduct new experiments, and meet with people from the Nueroscience community. In fact, in February, I’m going to NY to meet AJ Keller, the brain behind PushTheWorld (pun intended). Really looking forward to it!

Software Engineering and Design

Software is the driving force behind almost everything I do — whether it is Angular projects, hardware beacons or reading brain waves. As such, I find it important to sharpen my software skills all the time.

As you can see, my GitHub profile was pretty active in 2017

One of the major focus points for me in 2017, was to get more effective in testing my code. I used to write tests in the past, but the process was often very painful — setting up the testing environment, and figuring out the actual error when a test failed was always timing consuming.

This all changed when I discovered Wallaby.js by Artem Govorov, an amazing tool that gives you instant feedback and test coverage as you are writing your code. It really made testing a pleasant experience again for me. Thanks to a good friend, David Yahalomi, I also started working with Jest, a testing framework from Facebook, which I use for all my projects now. I even use it to test some of the code running on my IRL Chrome T-Rex project.

T-Rex, driven by JavaScript Code

Other than that, I also had a chance to learn how to write Chrome Extensions while working on the Web Bluetooth Polyfill. Architecting the extension and the test suite was a very interesting endeavor for me, and I had to learn C++/CX, a set of WinRT-specific extensions to the C++ programming language.

Speaking of new programming languages, Richard Feldman introduced me to Elm when we chatted a few months back, during the speaker dinner before YGLF 2017 conference. Elm is a new functional programming language targeted at Frontend Development, and built from the ground up to try to be as developer friendly as possible. Elm is also the source of inspiration for the popular Redux library.

I took an introductory Elm course, and then started experimenting with bringing Web Bluetooth to the language:

Overall, I fell like Elm gave me a new perspective on functional programming, and while I haven’t had a chance to use it for a real-life project, I did feel it influenced the way I think about writing JavaScript (and TypeScript), and I plan to keep exploring it in 2018.

Virtual and Augmented Realty

Back in 2014, I went to Google I/O and got my very first Cardboard device. The first time I put it on I was really excited by it — the experience felt very immersive, and I was very positively surprised by what this 20$ device could do.

One year later, I also got a Project Tango tablet — again, it was an amazing piece of technology, and I really had fun playing around with it.

In both cases, however, I found it really challenging to create new content and share it — the web was my preferred development platform, and 3D on the web was hard.

This all has changed when Madlaina Kalunder and Martin Splitt introduced me to A-Frame, a mark-up based web framework for building VR/AR experiences. With A-Frame, you can quickly build a 3D world by putting some HTML tags together, and get up and running in no-time. It builds on top of the Custom Elements specification, a part of the Web Components standard.

Shortly after, I started extending a-frame by writing my own custom components:

My next project was combining Angular and a-frame, followed by a workshop Alex Castillo and I gave in AngularConnect. The “VR-Hero” workshop was about connecting the JamStik+, a smart Bluetooth Guitar to a web page, and visualizing the notes in VR as they are being played. It was so much fun creating this workshop, and I learnt a lot about working with Midi and sound on the web. Seems like the attendees enjoyed too:

Our VR Workshop in AngularConnect 2017

Another fun project was building the Offline Chrome T-Rex game (yes, again), this time in VR. I built it together with 3 friends during the W3C WebVR Content Workshop in Brussels:

I spent the last month experimenting with AR, and also started hacking on combining AR with Machine learning, together with my friend Pavel 'PK' Kaminsky. I see a lot of potential for AR on the web, and there is a good chance you hear me talking a lot more about WebAR in the near future.

BlackBerry, Genetics, Actions on Google and More!

As the list is already long, I will briefly mention a few more things I learned this year. I started the year taking a Introductory Genetic Engineering Course, which I found really fascinating. We learned about DNA analysis and manipulation techniques (such as Gel electrophoresis, PCR, and CRISPR/Cas9), Designing plasmids with online software, and even conducted an experiment where we injected a pink florescence gene into E.Coli bacteria.

I also researched into what BlackBerry, the company that I work for, does nowadays, and learned some very basic Chinese. In the past month, I started developing a Google Assistant Action together with Daniel Gwerzman, which helps you extend your Spanish vocabulary. It has just been submitted to Google for approval, so I hope you will all be able to try it soon.

Looking forward to 2018

I am very grateful for everything I had in 2017 — I traveled to 9 different countries, made many new friends and spent so much quality time with existing ones, learned so many interesting things and on top of all, had Ariella Eliassaf, my amazing life partner, take a major part in this journey.

That time when we photo-bombed a Llama in Munich

It is going be hard for 2018 to rise above 2017, but let’s hope it will be at least as good!

Published in codeburst

Bursts of code to power through your day. Web Development articles, tutorials, and news.

Written by Uri Shaked

Google Developer Expert for Web Technologies, Maker and Public Speaker

Responses (2)

What are your thoughts?