I guess we are both data scientists.
Storm comes with Python and Ruby.
The right place to start is src/storm.thrift. Since Storm topologies are
just Thrift structures, and Nimbus is a Thrift daemon, you can create
and submit topologies in any language. Here's a specification of the protocol: Multilang protocol. The thrift structure lets you define multilang components explicitly
as a program and a script, e.g., python and the file implementing your
bolt. Multilang uses json messages over stdin/stdout to communicate with the sub-process.
Python supports emitting, anchoring, acking, and logging. Storm "shell" command makes constructing jar and uploading to nimbus easy.
Here is a good reference: