Over a million developers have joined DZone.

Dev of the Week: Mike McCandless

DZone 's Guide to

Dev of the Week: Mike McCandless

· Java Zone ·
Free Resource
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 Mike McCandless, author of "Lucene in Action," Apache member, and smart home automation enthusiast. Some of his most recent DZone posts include: 

Thanks for talking to us! What have you been working on lately?

I'm building a new auto-suggest implementation for Apache Lucene, called FreeTextSuggester, which tries to predict the next word you'll type by using an ngram model looking at the last one or two words from the query.  For example, if you type "wizard of " it should easily predict "Oz", assuming it was trained on this text.

One thing that interests me about your blog is that you mention that you like to build software to control your house. What kind of gadgets to you code for your house? Do you think that homes of the future will be "smart"?

I hope homes of the future will be smart!

I use Insteon, which are devices (light switches, motion sensors, door sensors, etc.) that communicate over the power line; I created a Python interface so I can send commands and receive events.  Using Insteon I turn lights on, by schedule depending on sun-set time, and also when motion or other events are detected. I also have a simple Web interface to turn things on/off. I haven't played with ZigBee yet but I want to.

I use 1-wire devices to measure temperatures, and a serial interface to my photovoltaic (solar electric) panels to see real-time power generation and consumption.  I created a simple circuit and Python script to decode the light flashes coming from the outside electric power meter to see real-time power usage for the whole house. I use the Dygraphs JavaScript library to generate all sorts of charts. A camera on the front door lets me see if any packages or guests have

A tiny 5-watt plug computer handles all of this.

Are there any particular developer tools or resources you couldn't live without?

I do all my development with Emacs, and find any excuse to use Python. Much of the luceneutil library, for Lucene performance tests, is written in Python.  I like Mercurial better than Subversion.  I use mencoder and ffmpeg for video encoding.

Do you have a favorite open source project (or projects) that you've contributed to recently? 

Certainly Apache Lucene, but also the compact language detector project, which is the super-fast language detector extracted from Google's Chromium open-source browser.  Recently version 2 was released!

I also love http://thingiverse.com, which are open-source "things" that you can print on your 3D printer.  I've contributed just one open-source thing so far but downloaded and printed many others.  If you don't have a 3D printer yet, get a Flashforge: half the price and just as good as a Makerbot!  Using this, and with help from my four kids, we created a powerful automatic bubble blowing machine.

Do you follow any blogs or Twitter feeds that you would recommend to developers?

Hacker news and Reddit programming and technology, but I also love UweSays (Twitter).  I follow Jennifer Ouellette on Google+; somehow she has all sorts of interesting things to share.  I use Feedly to aggregate everything.

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 with the original Macintosh (yes, in 1984!), just tinkering mostly.  It had only a floppy drive.  I remember buying a C compiler, which was horribly expensive, just so I could play with C code.  It's wonderful open-source gives us such quality development tools "for
free" today.

Anything else you'd like to mention?

Have a look at my blog, http://blog.mikemccandless.com

Thanks, Mike!


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}