Dev of the Week: Valeri Karpov
Dev of the Week: Valeri Karpov
Join the DZone community and get the full member experience.Join For Free
Learn how to build stream processing applications in Java-includes reference application. Brought to you in partnership with Hazelcast.
Every week here and in our newsletter, we feature a new developer/blogger from the DZone community to catch up and find out what he or she is working on now and what's coming next. This week we're talking to Valeri Karpov, MongoDB Kernel Engineer at MongoDB. Some of his most recent DZone posts include:
- A NodeJS Perspective on What’s New in MongoDB 2.6, Part I: Text Search
- Plugging USDA Nutrition Data into MongoDB
- Crunching 30 Years of NBA Data with MongoDB Aggregation
1. What have you been working on lately?
Currently, I'm primarily working on MongoDB's internal continuous integration framework, although I'm putting in ~20% time on the MongoDB NodeJS driver and slowly taking over maintaining MongooseJS. In my spare time, I do some consulting work for a small startup called Bookalokal.
Right now my biggest project is getting the MongoDB node driver into our internal CI framework. Its a big step forward for us because, as of now, our CI framework is built to test a single codebase, the MongoDB core server, but the end goal is to phase out Jenkins and Buildbot across the board. In addition, I've recently spent a lot of time thinking about Browserify and ZombieJS, and I'm putting in some time to migrating my client-side JS to Browserify.
2. You've tackled some interesting datasets with MongoDB. Have you done any projects with MongoDB that stand out to you as favorites?
The data set I've been having the most fun with is the NBA regular season box scores data set. I've been a big basketball fan since 1998, and I love digging up random statistical factoids. I first got inspired to get this data when I was watching a Warriors game a couple years ago and the announcer quipped that there had only been one other time in NBA history that a player hit 10 three-pointers in a losing effort. With the NBA data set, I could calculate both small factoids and broad correlations, and I had a great time doing so.
3. Are there any particular developer tools or resources you couldn't live without?
I also do a fair amount of work in Go nowadays, although I have a much more love/hate relationship with Go than I do with JS. SublimeText and GoSublime are my preferred dev environment for Go, and, since I don't code without dependency injection, inject goes into all my projects.
4. Do you have a favorite open source project (or projects) that you've contributed to recently?
In addition to contributing to the MongoDB node driver and mongoose, I maintain a simple NodeJS dependency injector called omni-di that I'm quite passionate about. Its a small and straightforward module that helps complex node projects grow gracefully, and I don't build non-hack NodeJS projects without it.
5. Do you follow any blogs or Twitter feeds that you would recommend to developers?
Beside my blog and Twitter feed, I would recommend following Dave Asprey's Bulletproof Executive blog and the paleo diet blog Mark's Daily Apple. Getting your exercise, nutrition, mindset, and lifestyle right is a very underrated part of becoming a better software engineer; you can be a much better coder if you optimize these day-to-day details, and those blogs will set you on the right path. For technology news, I find the Hacker News twitter feed, @newsycombinator, and the trusty @nodejs_bot do a good job of getting me relevant content.
6. Did you have a coding first love -- a particular program, gadget, game, or language that set you on the path to life as a developer?
I started putting together basic HTML and JS sites at a very young age, but where I really learned to love coding was the USA Computing Olympiad training materials. The USACO training problems aren't as flashy as Codecademy, but back in 2005 USACO was about as good as automatically-tested-submission-based coding tutorials got. In addition, USACO focused on classical algorithms problems, such as knapsack, Dijkstra's algorithm, and max-flow/min-cut, which gave me a very solid grounding in fundamental algorithms. I loved solving algorithms problems so much that I ended up focusing in theoretical CS as an undergrad, and the rest is history.
Opinions expressed by DZone contributors are their own.