email@example.com // 941.312.1865
A background in art and design with an emphasis on 3D animation. Professional experience with a variety of languages, frameworks, and databases. I like to work in areas that exercise both sides of the brain; creative problem-solving.
Lately, I enjoy working in Scala (Play Framework, Akka, ScalaFX) and ES2015+ (mainly using React via Webpack/babel), and Python (Django with REST Framework).
Laika, Inc - Hillsboro, OR
Senior Software Engineer August 2013 -- current
At Laika, I am essentially the resident web dev during a time where web-based applications are on the rise in the organization.
At Laika, I have:
- Built a large ScalaFX application, designed for use on a large format (40+ inch) touch display. (Ask me all about it!)
- Helped design and build a custom graph database (Atlas) with Play Framework (Scala), which sits on top of Postgres, implementing the TinkerPop Blueprints interface. We expose the graph via a Rexter-like REST API with some critical additions, such as an Actor-based cursor system, and filtering elements by an element type (a discriminator field we added to our elements). This system is still in active development, but is already in production for the current in-progress film.
- Built a Python REST client for Atlas. The client handles basic interactions against the REST endpoints for CRUD operations, handles gremlin (groovy) script encoding for ad-hoc queries, and abstracts away the presence of the cursor system (pages of results are streamed back to the client via a continuous generator). Additionally, results are optionally mapped onto class records which provide a nice high-level interface for doing basic traversals. A set of base classes are provided for developers to extend and enhance.
- Modernized a pair of old/crufty Django apps with ExtJS interfaces by updating the backend to use Django Rest Framework (DRF) and combinations of Angular/React/Bootstrap. These apps are frontends for databases which govern production of 3D printed puppet faces, and puppet armature deliverables.
- Launched and maintain about 4 brand new DRF+Angular products to service
various departments in the organization. These apps cover a wide range of
tasks such as:
- Sending editorial notes to animators (with shooting details pre-filled based on Shotgun data).
- Shotgun shooting task creation and editing via iPad (Shotgun's interface is unusable on small and/or touch devices).
- Storage, categorization, and playback of animation reference video footage.
- Record keeping for archived production assets (puppets, sets, props).
xhr with Angular's
$httpservice for direct client-side interactions with Shotgun (a 3rd party Rails app).
- Converted a bunch of disparate single-page WSGI scripts to be handlers in a single Flask app.
- Introduced the org to the wonders of Python Packaging (reusable units of code are now distributed as packages via a local devpi server instead of all our code being in a single repo and smushed together).
- Added automation around the build and deploy process by setting up Jenkins and helping to break up our monolithic codebase.
Quality Distribution, Inc - Tampa, FL
Software Developer (Python, GAE) November 2011 -- July 2013
At QDI, I was a member of an agile team, who are currently working on a (Python) AppEngine application that aims to replace a wealth of legacy .Net apps which are at the core of the business.
While at Quality, I managed to:
- Built the foundation of an MVC framework on top of webapp2, jinja2, and NDB (app engine datastore ORM).
- Developed an NDB entity (de)serialization routines to allow us to use a single pipeline to transfer data from stringly-typed (more or less JSON) structures, to NDB model instances (and back again). The serialization pipeline was later adapted to support SQLAlchemy models as well.
- Created custom rich interfaces using a combination of jQuery, and LESS/CSS3.
- Introduced the team to unit testing, and helped to automate the test/deploy pipeline by installing and configuring Jenkins.
Ringling College of Art and Design - Sarasota, FL
Security Analyst October 2010 -- November 2011
Daily duties are mainly analysis related, looking over logs, maintaining snort sensors, etc. In addition to this, I also support our LMS (Moodle) and build various Python tools and web apps (as needed).
Completed a small Django app which allows students to archive their work in a DSpace repository without needing them to fill in a lot of meta-data (we pull as much as possible from the registration database).
- Configure/Deploy IDS (Snort) sensors on campus.
- Monitor Snort alerts and investigate anomalies.
- Custom tool development for network event analysis and correlation (python, django).
HPC Engineer January 2009 -- October 2010
In this role I was responsible for development, maintenance, and support for all distributed render activities.
- Implemented a brand new render pipeline based on Windows HPC: ringling-render-tools.
- Maintained a large cluster of nodes using Sun Grid Engine (SGE), CAOS Linux, and Percues.
- Built render pipeline tools (using Autodesk Maya's python API) to simplify user interaction with RenderMan, and to detect issues in a user's animation file before dispatching to SGE (aka "the grid").
- Implemented a web (django) based front-end for SGE job submission and monitoring.
- Implemented a prototype application leveraging HTML5 video elements for institutional content syndication.
- Managing and deployed a number of web applications in apache, lighttpd, and IIS.
JBA Network - Asheville, NC
Application/UI Engineer October 2006 -- January 2009
In this PHP shop, I wore various hats ranging from front-end to back-end development.
- Zend Framework based application design and implementation.
- Designing/Implementing shared PHP5 APIs for internal projects.
- Database design.
- SEO (mostly client-side, markup-related, optimizations).
Ringling School of Art and Design 1999 -- 2004 BFA (Computer Animation).
IntelliJ, Git, Mercurial, Postgres, SBT, Gradle, MySQL, Subversion, Apache, Nginx, Lucene/Solr
React, Angular, Play, Akka, Flask, Django, Webapp2, Socket.IO, Zend, jQuery, Bootstrap, Compass