It’s been a busy year! So much so that I’ve barely even had a weekend to myself to reflect on things. Thankfully, I have a couple of weeks off for the holidays to write this year-in-review. I did this last year and I think it was an extremely useful exercise. Sometimes things move so fast that we don’t get a second to stop and think about what’s happened, what’s happening and what’s coming down the road. At least with this year-in-review, I can make sure I do it once a year.
Last year, I mentioned how I look back at myself and I’m surprised how much I’ve learned (I believe the words I used were just how stupid I was). Funny thing is these lessons learned are almost never technical, and this year is no different. It’s always something new about human relations or how the way the world works, which really follows what’s really complex in this world — the people and their interactions. This ignorance removal process (à la Buffett and Munger) is what really gets me going and I have to say is one of the big drivers of my modest success. I’m looking forward to a bright 2019 loaded with more ignorance removal and hopefully sprinkled with some wisdom acquisition if I’m lucky.
This has been a pretty good year for me and I’m quite proud of all that I’ve accomplished. Here’s are the highlights.
This has been a really big year at Rubikloud (my fourth this past September). We were able to raise our Series B round, which came with a lot of expectations on growth. It wasn’t easy but I’ve built a great team of data scientists and machine learning engineers, essentially doubling the team size from last year. All the while, I’ve been learning how to step into bigger shoes being a manager of managers: setting expectations for my teams, getting cross functional teams working properly, and most important of all making sure that I don’t forget about the people involved. It’s by no means an easy task and there is still a ton that I’m learning. I do have to give a shout out to the Raw Signal Group. All the managers at Rubikloud attended their amazing Leadership Workshop where Johnathan and Melissa Nightingale taught us that people managing is a serious skill, that it can be learned, and that it’s not easy! I’m really fortunate that I’ve had the opportunity to grow along side Rubikloud because I couldn’t even imagine learning and accomplishing a tenth of what I have anywhere else (at least in this short a time).
I’m not really a researcher anymore, not since graduate school, which is why it’s so surprising that I have this entry! I’ve had the pleasure of working with a few great graduate students as part of Rubikloud’s data science research internships. This year we were able to publish two papers at the International Workshop on Data Mining for Service (held in conjunction with ICDM):
- T. Doan, N. Veira, and B. Keng, “Generating Realistic Sequences of Customer-level Transactions for Retail Datasets”
- T. Chen, B. Keng, and J. Moreno, “Multivariate Arrival Times with Recurrent Neural Networks for Personalized Demand Forecasting”
These papers are applied academic papers relevant to a couple of topics we’re interested in at Rubikloud. I’m incredibly proud that we were able to get them published (retail isn’t a popular topic now a days!) I thought that my days writing academic papers were long gone, but I guess not!
Adjunct Professor at Rotman School of Management
This was even more unexpected than the research papers that I co-authored. This past summer, I was appointed as an Adjunct Professor in Data Science at the Rotman School of Management at the University of Toronto. My responsibilities include helping shape the data science education and research through my work at the Management Data and Analytics Lab, the Master of Management Analytics program and interactions with faculty and students. I was extremely fortunate that Rotman has recently decided to push their data science and analytics capabilities and my experience building AI systems for enterprise companies was a good fit. This is one of those opportunities that came out of left field.
A friend at work happened to be having dinner with one of the vice dean’s at Rotman who was good friends with his mentor. At this meeting, the vice dean mentioned that he wanted to connect with some AI experts. My friend recommended me, and the vice dean and I got to talking. Coincidentally, before our meeting he read my blogs (personal and technical) and was particularly impressed with my ethos on learning and my explanations of variational autoencoders. After a few more meetings, he recommended me to meet a couple of other professors who just happened to be overseeing the Master’s of Management Analytics program. They happened to be looking for someone with industry experience in AI to help complement the academic instructors they had already gathered. A few more meetings later, I had a contract and a letter from the dean appointing me as an adjunct professor.
This little event shows how success is really preparation meeting opportunity. I’ve been writing on my blog for years with no immediate rewards (except learning for myself, which is really the only reason I do it). However, the right opportunity just happened to come along where my blog turned out to be incredibly useful. There’s no guarantee of success in this world because there is luck involved (e.g. the right opportunity) but you can definitely increase your chances with preparation and hard work. (As a side note, I find looking at things probabilistically a much better model of the world.)
This part-time position is in addition to my full-time job at Rubikloud, and one that often keeps me busy on the evenings and weekends. This is the main reason why I don’t have many new posts on either my personal or technical blog. Despite the large time commitment, I’m really enjoying having one foot back in academia (and not from the student’s point of view).
This year I’ve undershot my goals for posting. In particular, there were a couple of ideas I wanted to post on my personal blog and half a dozen more on my technical. I was able to pump out six technical blog posts this year though, three of which I’m particularly proud of on tensors, manifolds, and hyperbolic geometry. All very complex topics especially if you’re learning them through self-study! Hopefully, things will move into steady-state for Rotman and Rubikloud (unlikely) and I’ll have more time to write but I’m not getting my hopes up.
Music and Chinese
These are my two main hobbies, and I’ve made some progress on them. For the amount of time that I put in, I’m pretty happy with the result. I think I’m hitting that point where I’ve learned most of the “easy” stuff and now I’m starting to hit the “long-tail” (this is one of the topics I wanted to write about). For music, I think it’s really solidifying some of the basics like pitch and rhythm, which should directly transfer to singing and playing at the same time. For Chinese, it’s really learning that long-tail of words beyond everyday simple conversation. Finding time is probably the hardest thing for me nowadays but I’m hopeful that I can make steady (if slow) progress on these two hobbies.
Health and Fitness
Due to the busy schedule that I have, health and fitness are usually not on the top of my list. My one saving grace is that my wife convinced me to start a personal trainer last year and he has been the main reason why I’m in decent shape. I only train with him once a week but boy that 1 hour is pretty killer. The one big quantitative gain that I’ve seen has been in my pull-ups. In the past, I struggled doing even one (I’ve always been pretty bottom heavy). But recently, I’ve consistently doing three at a time! Okay, I know… not spectacular, but it’s pretty surprising to me. Hopefully, I’ll be writing about this next year with a much bigger number.
Perhaps more important than discussing my achievements, failures are where I can work on ignorance removal. It’s important because I (like most people) have a tendency to gloss over failures because it’s embarrassing to see how stupid I was. But it’s precisely because of this tendency that it’s even more important to focus on them so that I can learn.
Building and Overseeing Multiple Cross-Functional Teams
In my mind, this topic has got to be my biggest failure for the year. While I can’t get into all the details, I’ll say this: scaling a data science team at a startup is hard! At the beginning of the year, the data science team at Rubikloud was a handful of people working on probably two distinct projects; now it’s more than a dozen, and we’re working on half a dozen different projects (not all distinct though). Moreover, these projects involve not just data science but engineering, analytics, client solutions, product, and the list goes on. There are two big things that I took for granted: cross-functional teams and their oversight.
It’s funny that I took cross-functional teams for granted because at the start of 2018 I had just finished reading Andy Grove’s High Output Management (great book), which has a chapter specifically on this topic (Hybrid Organizations)! At the time though, we didn’t have that problem because we were still relatively small. There’s so much less communication overhead when the team is small, and so much less context switching that happens when you have fewer projects. The major issue with cross functional teams is (duh!): how to get different functional members to work together effectively. The complication is that our organization’s reporting lines are primarily functional (data/product engineering, data science, analytics etc.), while our working teams are cross-functional. This means that while each function is very tightly knit, we have to do more work cross-teams.
Without getting into all the details, I think the main thing I learned is that you have to put in much more work to make cross-functional teams work (I suppose if you had mission oriented teams, you would have the opposite problem at the function level). This wasn’t so much a problem when you’re small with only one or two projects. Everyone knows each other, you have shared context and you don’t really need to spend much time on it. Once you get bigger, you can’t rely on that shared context because the teams are often newly formed; don’t have a founding team member leading the project because we’ve doubled in size; and, to be honest, much more pressure because of the increased venture funding. I suppose most high-growth startups deal with this at one point or another, that’s why it’s so interesting.
The other big issue is the oversight of many different cross-functional project teams. I’m primarily responsible for the data science aspect of a project but also (of course) concerned about the overall success. The main issue from my point of view is that I need to be able to clearly articulate what results I want to see (not necessarily how to get them though) at frequent enough checkpoints so that I can give feedback to the on-going data science projects but — and here’s the key point — without being on the project team! When you’re small, you of course are elbow-deep in all the on-going projects, as you get bigger this is just not feasible. The hard part, especially with regards to data science, is that I still need to define the “requirements” of the data science function. This is not easy because (contrary to Kaggle competitions) it’s not only some fixed metric that we’re chasing after. Additionally, the difficulty from a management point of view is getting a good read on the progress of the project (which is usually very non-linear) and giving feedback on the results at frequent intervals.
For both of these issues, we’ve done some pretty good work on improving them that I probably won’t share here because of the company-specific details. But you can check back next year to see if this still tops the list of my failures!
One of the big issues that I’m still struggling with is getting a routine to de-stress. The pressure of a high-growth startup combined with my additional duties at Rotman have really put a lot on my plate. I spend a lot of my previously free time on Rotman work, which I do enjoy, but it leaves less time to relax. In particular, one issue I have is that I often wake-up in the middle of the night and my mind is thinking about a problem causing me to have difficulty going back to sleep. This (obviously) happens much more often when I do work right before bed.
Last year, I already cut out a lot of caffeine (no caffeine after lunch), and as I mentioned above I have a more consistent workout schedule. One goal for the new year is that I need to work out more often. Once a week (even if it’s intense) doesn’t really cut it to de-stress. I need that “workout high” more often to let my mind relax and get my body tired. Related to this is obviously diet too, which is a hard one for me because I really like junk food (especially sweets).
The other (also obvious) thing that I need to do is to have more downtime before bed. This means I need to be more efficient and/or shift work earlier in the day (e.g. morning). I’m trying to shift all the random things I do like read internet news or hobbies to later in the evening, while moving “work” earlier in the day. This way I get a break for my mind to rest before I sleep.
These two things are probably my main tactics but I’ll experiment and try others as I find them. These two are simple things but, as usual, easier said than done. I do have good motivation though because I really do like having a good night’s sleep!
Relationships: Family and Friends
The other big gap in my goals is relationships: spending more time with family and friends. When it’s not busy, I see my friends and family at regular cadences. With family it’s usually weekly or bi-weekly. My friends are a different story. With one group, we try to at least meet once a month or else we find that we go for months on end without seeing each other. For another group, it’s actually been months! I think the once a month idea is great and I really should keep it up. It’s much harder to keep up with because everyone’s so busy, not the least of which is me! Still, this is an important part of my life and it should get the attention it deserves. So I’m definitely going to make progress on this in the coming year.
Last year, I wrote about a few habits that I’ve been trying to pick up. I think I’ve regressed on at least a couple of them. For the best hour of the day (first hour after I wake up), I’ve been slacking for the past half year or so, partly because I’ve been working like crazy at Rubikloud, partly because I use that time to work on Rotman work too. I still think it’s valuable though (why give it away to others when I can keep it to myself?), so I’m going to change that. Hopefully that will translate to more posts (either here or on the technical side).
As for the flashcards, I stopped midway through last year. Once I got to a couple thousand flashcards, even with spaced repetition, I found that I had too many to do in one day and I got frustrated. I also guessed that it outlived its usefulness as a learning tool — I was wrong. I do think I had to change the way I was using them though. Two big ideas: (1) don’t start adding random words, only add words you’ve experienced (read or heard in context) or else you won’t be able to use it properly; (2) I started also practicing to form a sentence with the word and ghost writing it, in addition to just recognizing it. Using it actively in a sentence is really the most important part, while ghost writing helps with remembering it (I don’t intend to hand-write Chinese anytime soon). I’ve also reset my flashcards and I’m starting from scratch. This means a lot of the “easy” words are gone from my deck. Hopefully this clean slate will also help adoption.
Déjà vu: Again, this year I haven’t spent much time reading books. One of them, again, I spent reading over Christmas break. It’s either because I feel guilty I haven’t read much or because I actually have the time. Anyways here is the list with a few comments about them.
- My Life (Bill Clinton): A while ago I heard a friend say good things about Clinton’s biography so I decided to pick it up. It’s quite interesting. Bill Clinton is obviously a very complex man. What struck me is that his thinking was quite rational and that he was much more focused on the economy than some of his successors. He did after all oversee a big economic boom that actually took the government budget into surplus. The other interesting thing from a historical perspective is how harshly the Republican opposition was hounding him about some alleged campaign spending misappropriations. In fact, they appointed an incredibly biased special council who intimidated (via expensive lawyer fees) his friends and colleagues who might be suspected in the scandal. Time after time finding nothing related to the initial investigation, they finally stumbled upon his sex scandal. On the surface, you can superficially see a lot of similarities to today’s special council investigation. It’s interesting that what feels like such a big deal with the current situation, played out in a very similar way a couple decades ago. The problem is people my age would have no sense of that unless they’ve read up on the past. That’s at least one reason why reading about history is important: it gives you a lot of perspective on current situations (it’s not predictive though).
- Ten Great Ideas About Chance (Persi Diaconis & Brian Skyrms): This is a book that was recommended to me by a friend at work. It’s literally what the title suggests: going back to some of the earliest ideas about probability all the way to modern implications of it in computing and physics. The book starts off slow then gets really deep into mathematics. Depending on the chapter, complex notation and ideas are jumped into without much reference to building up the background. This is definitely not a book for general audiences but rather someone with university-level mathematical training. For a couple of the chapters closer to the end, the mathematics went above my level, so definitely not for the faint of heart. Overall, I thought the book was just “ok”. I like the idea of explaining big ideas in mathematics but I would have hoped it would be more accessible and, in particular, give me a more intuitive and clear way to think about these big ideas. It was able to accomplish it for some of the chapters but not others, especially not for the more math heavy ones in the back half.
- The Manager’s Path: A Guide for Tech Leaders Navigating Growth and Change (Camille Fournier): This is a recommendation I got from one of Erik Berhardsson‘s post (great blog by the way). It’s probably one of the best technical-focused management books out there right now. It details all aspects of leadership and management from tech lead all the way to CTO. For each one, Camille outlines the responsibilities, “gotchas”, and gives insight to what the role entails. Most new to management (not just technical) haven’t studied this in school and haven’t even had any training on it! This is nuts because it’s probably one of the most important roles in a company. There are key ideas at the strategic, tactical and day-to-day level that are important for managers, and especially technical managers, which I do think require special treatment. I like it so much I’ve actually bought a few copies for my colleagues so that they can use it. I’d definitely recommend this book to anyone who is even thinking about moving into a technical leadership role, whether that’s just mentoring an intern or becoming a VP of Engineering.
- Sapiens (Yuval Noah Harari): I’ve heard a bunch of good things about this book and so I decided to pick it up before a flight at the airport. It’s a very accessible book, easy to read and written in an engaging manner. It’s thesis is about “shared fiction” that we humans create in order to work together in large groups from companies to cities to societies. All of these things around us (e.g. the concept of money, society, country etc.) are all really just “fiction” in the sense that there’s no physical representation of it but he convincingly shows that these abstractions are necessary in order for us to be able to work in large groups together. The “fiction” label for me is a bit extreme (although definitely eye-catching), I view them more as “abstractions” but maybe that’s only because I come from a computing background. Anyways, the majority of the book is actually a detailed run-through of human history (back from pre-historic times), which is always an interesting subject. Nothing was particularly new to me because I’ve read a lot of this before in Guns, Germs and Steel and probably some others that I can’t quite remember. It was good to get a refresher and it was a very engaging read (at least compared to Guns, Germs and Steel in my opinion). Definitely recommend it to those who haven’t read much about human history.
- Mastering the Market Cycle (Howard Marks): Howard Marks is widely considered one of the great value investors of our time. He’s respected by those in the community including Warren Buffett. Buffett actually convinced him to write his first book (which is also great). A lot of the ideas in his books (including this one) arise from his memos, which are freely available online. In this book, he goes in depth into market cycles, what causes them, and how to approximately deal with them. If you’ve been reading his previous material, I don’t think there’s anything too surprising but one thing I like very much is his focus on uncertainty; in other words, probability. Every outcome is one of the many possible outcomes, and it’s important to understand the many possible outcomes, not just the observed ones. For example, I wouldn’t say that I’ve good at picking lottery numbers just because I won. Marks’ writing style is very accessible and the ideas are clearly laid out. Definitely worth a quick read for any value investor.
- The Examined Life (Stephen Grosz): This is a book my wife found in the Harvard book store on a short vacation we had to Boston. This is probably the most engaging book I’ve read on psychology. The book is a collection of short (anonymized) true stories from a psychoanalyst and his patients. It’s written in a super engaging manner from the point of view of the author (the psychoanalyst). The most interesting part is that he does not try to explicitly impart any lessons after each story. He just leaves the story as is (often without any satisfying resolution) and moves on to the next one. This forces the reader to draw any lessons that may be there for themselves but in the process makes the lesson on human behavior so much more visceral. The stories are incredibly enthralling from things like why we lie to ourselves all the way to how we sabotage ourselves. Bear in mind, all of his patients are very broken people but upon reflection I was able to see resemblances to both myself and those around me. It’s probably one of my favourite books and I would definitely recommend it (we’ve already bought a couple of copies for friends).
- How F*cked Up Is Your Management?: An Uncomfortable Conversation about Modern Leadership (Johnathan Nightingale, Melissa Nightingale): This book was given to use during our leadership training with the Raw Signal Group. The authors were the one giving us the training. It has a bunch of short excerpts on a variety of topics, particularly for smaller, growing tech organizations. It’s got a lot of useful tidbits of information. The one big idea that I really like from the book (paraphrasing): “The best predictor of an employee’s performance is how well they understand the business.” Good stuff! (Also highly recommend their leadership training.)
- Measure What Matters: How Google, Bono, and the Gates Foundation Rock the World with OKRs (John Doerr): This is written by one of the early proponents of the OKR (Objectives and Key Results) system and one of the early backers in Google. He introduced this to Google with great success in the early days and this system has been a popular goal-setting framework for many famous tech companies. The idea of OKRs is excellent, and definitely should be considered if you want to introduce a good framework around goal setting. The book had a lot of interesting anecdotes about OKRs, written by actual people from the companies (e.g. Google, Gates foundation etc.). I thought the treatment of OKRs probably could have been more clear. I’d say this book is good at giving you inspiration to start using OKRs but probably a better way to learn about it is to go through Rick Klau’s tutorial on YouTube.
- The Dictator’s Handbook: Why Bad Behavior is Almost Always Good Politics (Bruce Bueno de Mesquita, Alastair Smith): This is one of the best big ideas that I’ve read about in a very long time. The book introduced a very different explanation for why things are the way they are in politics. For example, why do so many scandals happen both in politics and companies? Why do politicians and CEOs alike do things that are counter-productive towards the goals of the country or company? Or even, why does foreign aid more often helps dictators and not the people actually in need. This gives a much more predictive view of why leaders behave badly, which fundamentally starts with the incentives of leaders: staying in power. What could be more obvious? Anything that they do really starts from that premise. A good overview of the subject is covered by CGP Grey in his video “The Rules for Rulers“. Definitely worth reading (especially if you have ambitions of being an authoritarian leader).
The Coming Year
The coming year is going to be busy for me. Lots of things to do from working at Rubikloud to teaching at Rotman to the long list of things I still want to learn. Good luck to both you and me in 2019!