Compare the Market was nice enough to invite me to speak at their tech managers’ off-site about distributed teams. This talk reflects my own experience leading distributed teams.
I was presenting to them over video. Their meeting included people in two different offices and also folks dialing in from home. Ironically, in the middle of my talk, I got disconnected from the video conference. Because I was sharing my slides full-screen and had my speaker notes on my second monitor, I didn’t notice. So I spoke to myself for about 15 minutes before I realized what happened and dialed back into the meeting. It was a bit mortifying, but the folks in the UK were extremely nice about it. I can’t think of a better example though of the challenges around working with teams who have to communicate over electronic means constantly, so it was a good illustration of the issues I raised. 🙂
I’ve been spending the last year working on machine learning methods to train an algorithm that could be competitive with professional-level Candyland players. I’m happy to report that as of today, I attained my goal.
For the first pass of my automated Candyland player, I built a very simple rules-based engine. The engine ran efficiently on a Mac Book Pro. The rules-based engine did ok in lab tests with strong amateur players. I knew it couldn’t stand up to the rigor of professional Candyland tournament play, however.
For the second pass of my player, I created a more sophisticated look-ahead engine. Before taking its next card on its turn, it would simulate every possible permutation of the rest of the deck. While this was very processor intensive, by moving it into AWS and distributing it across 100 xLarge instances, it ran near real-time, although at some expense. The results of this player weren’t significantly better than the first engine.
In my third pass, I trained a shallow Convolutional Neural Network with 100,000 Candyland games. The results of this were disappointing. Playing against my look-ahead engine, over 500,000 games, it did no better than winning 50.05% of the time. Adding more layers didn’t improve the score significantly.
The fourth permutation of my Candyland player was a fully recurrent neural network running across a few dozen AWS GPU instances. This player played itself for several weeks improving the weights in its network using a genetic algorithm. The results from this were fascinating. It was able to win against itself 100% of the time.
This morning, April 1st, 2018, I played three games against the RNN player. While I am not a professional level Candyland player, I am rated 1200 on the amateur circuit, and it was my favorite game in 1st grade. This last version of my player beat me all three times! I think it is finally ready.
I’m going to be setting up some exhibition games with my Candyland player as soon as I can track down someone on the professional Candyland circuit. Not only will this gain some positive publicity for machine learning, but I’m hoping that it will help me recoup the $350,000 in AWS bills that I racked up building, testing, and training my players.
I’ve been remiss in posting since I’ve been back in Seattle. Readjusting to life in the states, and adjusting to the new role has kept me busy. I hope to rectify that in the future. I have been lucky enough to be invited to speak several times this winter and spring in the US and Europe. If you’ll be there or live nearby and want to meet up, drop me a line on twitter and let me know!
I’m playing with an idea here. One of the things I really like on Instapaper is the browsing of what your friends are reading. My pal Kevin Stewart, has particularly awesome tastes on technical articles and I find myself saving almost everything he reads to my own queue.
I won’t vouch that my own tastes are quite as good, but maybe the articles that I’ve found valuable might be valuable to others. So, I created an ifttt.com action to save any article that I’ve liked to a google doc. Periodically, I will post the most recent articles to this blog. At some point in the future, I might autopublish them. For now, I like the idea that I can edit them before they go live.
As you grow as a developer (and development leader) and you work with more and more technologies over time in different projects, you start to realize how easy it is for the team to get more focused on the challenging technical problems than the actual product issues. Ignoring the product issues will kill the product (and possibly the company). With limited attention (he calls them innovation credits), it is best to put your effort into innovations that can differentiate your product. All too often, teams get more focused on the next cool technologies, turning everything into a nail as the old saying goes.
Dan McKinley does a great job explaining this in his talk below.
I’m getting used to the predictive keyboards in iOS8. I found myself wondering today what would happen if I just hit a single key and then just picked the suggested word over and over. So I typed “a” and the following resulted. It looked like it was going to end up in an infinite loop, but while it got very repetitive, that never happened.
So, cheap fun (if you don’t include the cost of the iPhone)…
And the rest of the day after a long day at the same thing to say it was the best of the year and the rest of the day after a while ago but the fact I can get it right away with the best of the best way of the best thing to say it was the best thing to say it is not the same thing to say that I have a great way of the day I have a great way of life and the rest of my favorite part of the best of luck with the best thing ever I go back and the rest of my favorite part of the day I have to go back and the rest of my life and the rest of my favorite part of a sudden it was the first half of the best of the year and the rest of my favorite part of a sudden it was the first half of the day after a while ago but the rest of the best…