Mastermind behind TweetSentiments.com, programmer of many languages, and reformed Java guru, Tom Zeng is a powerhouse. He’s the kind of programmer that every one wants on their team, and he’s the focus of this week’s Intridea Insider!
Born to two chemical factory workers, and raised in an industrial city in the Hunan province in China, Tom focused much of his energy on being a good student at the factory’s school. “I don’t remember too many details, except that since around junior high-school, I became very interested in studying the sciences and I stayed in the top 5 in my class until I got in college.” After earning a B.A.Sc at a university in central China, he was accepted into a grad program in Canada, at the University of Waterloo.
In undergraduate school Tom took programming classes in BASIC and FORTRAN, but he was never enthusiastic about programming until he was exposed to some business apps in grad school which piqued his interest in database software. While he was earning his M.A.Sc, he developed his passion for computer programming. “I worked as a research assistant for my supervisor, developing software for sports – an electronic playbook. That was my first paying job. During the same time I developed a database application for storing stats for a professor at the nearby Wilfrid Laurier University.”
Tom, now a Software Architect at Intridea, has spent most of his adult life programming in Java in the banking and ecommerce industries. As “enlightened” Ruby developers, we realize how stodgy that world must have been for Tom. So when he discovered Grails, and eventually Ruby and Rails, he did what most of us would expect any Ruby neophyte to do: he went to his (Java) development team and proselytized. “I was never able to rally enough support in the development team which was composed of all Java developers. No one wanted to learn a new language. So I ended up learning and playing with Rails on the side.”
Tom’s journey to Ruby from Java was bridged by Grails: “My previous employer was in the corporate risk management field. It was a niche market and had a constant revenue stream throughout the .com bust and the recession. However, being a small company in a competitive field, we always faced resource shortages, and our Java app started to get increasingly complex. Features were either promised and never delivered, or, delivered but behind schedule. So I had been looking for ways to improve productivity. I heard about Rails three years prior, but never bothered to try it because it wasn’t Java. Then Groovy and Grails came along, and I saw the Grails’ equivalent of the 5-min blog app and got really hooked on it.”
Thanks to a pushy Ruby evangelist, Tom eventually found his way to Ruby, despite himself. “I was on the Groovy and Grails mailing list, and there was this guy named Charles Nutter who was one of JRuby’s developers. Charles kept bashing Groovy and promoting JRuby/Rails, which was really annoying at the beginning, until one day I decided to check out Ruby and Rails; I was amazed by it and all the plugins that Grails didn’t have.”
Although Tom couldn’t convince his company to transition to Ruby to help with their productivity predicament, he found ways to get intimate with this new language anyways. He taught himself Ruby and Ruby on Rails, and it was during this period that he developed Tweet Sentiments, an application that uses machine learning technologies to analyze the sentiments of tweets. The site shows the Tweet Index, a calculation of the positive, negative and neutral sentiments of tweets worldwide. Users can plug in their own Twitter username to analyze the sentiment of their own tweets, analyze particular topics, or view the sentiments of every one else’s tweets.
Tom explains the internals:
Tweet Sentiments Tweet Sentiments uses a machine learning algorithm called Support Vector Machines, which is based on very complex mathematics. Luckily, one does not have to understand the math behind it in order to implement it. I came across the LIBSVM C++ library developed by a professor and his team from Taiwan National University. It’s one of the most popular implementations of LIBSVM. I wrote a Ruby gem to allow Rails apps to make use of LIBSVM. Tweet Sentiments actually uses LIBLINEAR which is a special implementation of LIBSVM that can handle large data sets at a decent speed.
While Tom was toiling away in the Java enterprise machine, learning Ruby and Rails, and finding time to create Tweet Sentiments, he met Chris Selmer, Senior Partner at Intridea. Last year, when Intridea needed a talented Rails developer, Chris called Tom and offered him a job. I asked Tom what it was like, to finally work with Rails full-time; “I think it’s kind of this sense of relief. Ruby and Rails is just so much fun to work with; there have been a lot of “wow moments” as I discover all the things that can be accomplished so simply (with Ruby) that are such headaches to do in Java. Working with Intridea is very refreshing – ideas and innovation are encouraged, rather than feared like they are in a Java shop because it would mean more work that cannot be accomplished. In a Java shop the developer mentality eventually becomes, ‘do as little as possible.’
By that definition, Tom has proved himself to be quite the opposite of a Java developer; he is the quintessential Rubyist. Thadd Selden, a project manager at Intridea, has spent a lot of time working with Tom on a large project, and speaks highly of Tom’s dedication: “Tom is the ultimate “anytime” engineer. If I’m stuck on something at 2:30 in the morning, chances are he’s up and tinkering too and can help me out. I don’t know how he survives on so little sleep, but he’s bailed me out more than a few times.” Also, as a truly passionate programmer, Tom always loves learning new technologies; “Right now I am enjoying learning NoSQL (MongoDB, Cassandra, Riak) and keeping an eye on Scala and Closure.” He balances his work and technical hobbies with sports like rollerblading and biking.
Tom has settled down with his wife Jane and his 19 month-old son Luke in Ellicott City, MD, an historic community that is conveniently situated between Baltimore and DC. “I met Jane here in Maryland, but fate would have it that we were born 30 miles apart in China, and she went to a university in my home town. And here in Maryland, we worked a couple of miles from each other before we met.” Jane works as a graphic designer in Annapolis, and their son Luke is one of the cutest babies you’ll ever see. “He’s so much fun. I always felt that I was not ready to have a child for many years, but I wish I had known that having a baby is so much fun.” Ellicott City, MD is a far cry from the industrial city that he was raised in. Tom says that his hometown in China has been growing and changing throughout the last few years, but he’s happy to be able to raise his son here in the states.
Most Intrideans love working from home and Tom is no exception. Being able to work from his basement office not only saves him from a daily 2 hour commute, it also allows him to use his HD projector as a monitor for his desktop. He likes working down there with his servers (he builds all his own machines); he’s currently building a 48core 96GB and 12TB super-server for TweetSentiments.com.
We are incredibly lucky to have Tom as part of our team at Intridea. He brings a diverse collection of talents, along with a superlative personality to the team. We love him for his scrupulous programming skills and his infectious merriment.
This post is part of a weekly series, called “Intridea Insider”