Year in Review: 2017
Software Development
New Skills
I'm pleased that I was able to expand my knowledge of the Android development ecosystem this year:
- Model-View-Presenter: the Logo Maker app gave me an opportunity to look into this architecture for the first time, and apply it to a real app.
- Custom Views: the logo is rendered with a composite view that uses dynamic resizing of multiple elements. I'll write a blog post about it sometime.
- RxJava: After many months of sitting on the sidelines, I finally got a chance to learn and apply reactive programming in an app.
- Kotlin: The timing of Google's announcement for Kotlin support was right around the time we started on Hatchful.
- Model-View-Intent: One of my colleagues was keen on exploring this architecture, which we used in Hatchful.
- More Firebase: There's over a dozen products in this platform, but this year, I was able to use the realtime database, cloud storage, cloud functions, and performance monitoring, in a production app.
- In-App Billing: This is the first time that I've had to deal with IAP, and managing SKUs in the Developer Console.
Apps
At work, I contributed to two new Android apps at Shopify:
Logo Maker
In April, we launched a basic logo maker, allowing you to customize text, icon, color, and basic placement.
Hatchful
In November, we launched a more polished brand asset app that launched simultaneously for iOS and Android.
Education
For the past year, I've been thinking about earning a master's degree. I like the idea of more formalized education, and the discipline of learning in a structured environment with a cohort of peers.
I looked into Georgia Tech's OMSCS (an online CS Master's), but wasn't sure whether I could sustain interest and apply myself in a completely online environment. I also looked into the University of Toronto's MScAC program. It combines study and work, and is suited for practising professionals, like me, but the program has very little coursework. With so many free, online resources available, I also found the idea of a self-directed, open-source masters interesting.
As to what area I'd like to concentrate in, hardly a day goes by without some mention of artificial intelligence or machine learning, even in non-technical news sources. I've been paying more attention to these fields to see if they're areas I'd like to someday pivot into. With the formation of the Vector Institute in Toronto, and the Ontario government's announcement of increased funding for applied master's students in AI, this is an exciting time to be involved.
Deep Learning
With these thoughts rattling around in my mind, after the announcement of deeplearning.ai in August, I decided to jump (back) into studying machine learning. (A few years ago, I started, but didn't complete, Andrew Ng's seminal ML course on Coursera.)
After enrolling in the Deep Learning Specialization, I'm pleased to have successfully completed the first four courses this year:
- Neural Networks and Deep Learning
- Improving Deep Neural Networks
- Structuring Machine Learning Projects
- Convolutional Neural Networks
Completed the fourth course (Convolutional Neural Networks) of the #deeplearningai specialization by @AndrewYNg on @Coursera. Here are some neural style transfer images I created as part of an assignment. pic.twitter.com/74uaTZWzK7
— Eric Fung (@gnufmuffin) January 8, 2018
The subjects have been really interesting, so I'll continue to take more online courses this year, after finishing the DL specialization.
Public Speaking and Writing
In contrast to last year, I wasn't accepted to speak at any conferences this year. I'm not sure how many CfPs I submitted, but it was less than five. My proposal ideas weren't that original, so I'm going to re-think my talk ideas some more, and try again this year.
The Toronto Android Meetup is still going strong. We ended the year with over 700 members, and 11 events (including two rounds of lightning talks). I gave one talk at our meetup this year:
As you can confirm, I didn't publish anything in 2017. I'd like to work on that more, perhaps using a productivity tool to encourage me to meet a goal for writing on a weekly basis.
Productivity
I've been running RescueTime on my work laptop for a long time. My year in review report is an interesting look back at how I spend my work time. Notably, I spend only half my day doing "software development". One-quarter of my day is on "communication and scheduling", that is, group chat using Slack.