Wednesday, June 13, 2012

Short bio


I decided it was time to write a short bio of myself, and share some of my developer experience.  I encourage anyone I might work with in the future to read this.

Development Style:
I believe I work best when I know exactly what I'm doing, what's expected, and have some creative freedom to explore my work while I'm doing it. I like getting very focused when I'm working on a problem and mixing it up with creative conversations. I find a mix of focused work, and less focused general discussion with my coworkers keeps me motivated and inspired. I always find the team works better when everyone idealistically believes in what they are doing and can share a single vision. It's that excitement and sense of forwardness that I'm really looking for in my future professional endeavors.




Background:
I started writing software at a very young age, experimenting with C++ and then PHP3 at the time. During college I became interested in animated films (maybe Pixar inspired me) and worked as an intern at a small CG/Modeling shop in Grand Rapids. During my time there I worked some with Scene7 (now owned by Adobe) and used tools like Maya, 3d studio max, Photoshop, After Effects, etc.
After that company changed ownership I started working for the notorious Geek Squad (while still attending college), and several years there after found myself working as a Systems Engineer for an electrical company in Grand Rapids, MI. During my time as a systems engineer I did some web programming and started taking it more seriously adopting more standards, learning jQuery, and writing applications that interacted with MsSQL, and Mysql. After two years fixing other people's problems and programming routers I decided it was time to follow my true passion and start writing code full time. I got the first job I could (and took a pretty big pay cut) at a new (and small) development company in Grand Rapids. I saw the ins and outs of getting clients and had a big reality check. I learned what it was like to work at a startup, the challenges, and the pressure to get things done. I often wasn't insulated from the customer so I had no choice but to learn how to interact with customers, define requirements, and gained an understanding of how difficult it can be to write code with little to no real direction from anyone but yourself.  What a growing experience this was; but I embraced the new challenges and did some work I'm pretty proud of.

After writing software for clients and working on many projects (including consumersearch.com) I was made an offer to join an organization that combined two of my interests (motorcycles and programming). The prospect of writing new software and having time to work on longer term projects was very appealing. I was hired in and worked along side 1 other developer. As the team grew I was made the lead developer, and then the Director of Technology as the company grew to over 40 employees.

Today:
Over the last three years here at Riders Discount I've grown the team of developers and made 4 hires. I thrive working with a great group of talented, passionate, professionals. Everyday I try to be a servant leader and work alongside my team on nitty gritty problems and help with design and planning challenges. Together we decide when to refactor, where to spend more (or less) time, and I protect the development process by doing the everyday mundane stuff (write a report for accounting) myself when it's needed.

I also championed the addition of Python as the infrastructure language of choice. In my time here I've found that Python is used in so many different fields that it's almost impossible to find a software problem that someone hasn't already worked on in Python. Python is a great glue language for companies leveraging open source development environments and we have used it to interact with everything from .Net web services (using IronPython) to Java Lucene, to wrappers for SIFT image processing algorithms implemented in C.

Most organizations need applications, they need to be able to communicate between those applications, and maintain a life cycle of those applications as well as continually test the applications. We have adopted a very suitable technology stack that we've evaluated and vetted based on several factors. In the end we've come to a pretty stable list of tools to solve our problems based on a couple factors; they include: code-stability, documentation, cost of adoption, learning curve, performance, and community.

This technology stack includes:

Databases:
MongoDB
Postgres
SqlLite3
PyTables
Redis (sessions)

Reporting:
ReStructured Text
Matplotlib (graphs/plotting)
Map-Reduce
Custom Aggregation API's
Python OpenOffice API (custom procedural spreadsheets)

Search:
PyLucene
Custom JNI Extensions (C++)

Web/Network:
Parallelism/Network:
Twisted
Twisted Perspective Broker
BSD w/PfSense
Custom Job Queue / Process Monitoring

Python:
Setuptools
Sphinx
Pip
PyPI

Desktop:
pyGTK
Cairo
Twisted / PerspectiveBroker / GTK-Mainloop



I'm looking forward to the coming years, I've reached a point in my career where I feel like I have enough experience that I can tackle most any challenge with the knowledge I've gained from using such a great set of tools.  I remember when all I knew was PHP and I tried solving every problem with it; oh how I've grown since then.  I'm sure the coming years will hold even more challenges but I look forward to growing my skillset beyond what I know now.  Never stop learning!

No comments:

Post a Comment