Also in this section:
Web Development

For the last several years, I've been concentrating on web development with node.js, often using Express and Sails.js, generally designing the architecture of and building out RESTful JSON APIs. I've also done a fair amount of single-page apps in JS, sometimes in Ember.js, sometimes backbone, and I've become interested in React and React Native. I've been using Postgres a lot lately, some Redis, and sometimes Neo4j for graph database functionality and MongoDB for more amorphous document stores.

Before 2012, I did a lot of traditional LAMP-stack work with PHP, MySQL, and the usual HTML5/JS/CSS on the front end.

05/20/2015 Identified Technologies: Lead Software Architect

I've joined Identified Technologies to bring my full-stack JS and RESTful API experience to expand the communications platform for industrial aerial robotics. I’ve built out the company’s API (in Node/Sails.js) for receiving, processing and delivering data collected from UAVs, making extensive use of AWS services. I’ve rebuilt the front-end in Ember.js (2.x) for the customer-facing system, and integrated the system with the Google Maps API, added volumetric display and analysis functionality, and have lately been working with PostGIS for more efficient delivery of spatial information, as well as mentoring other members of the team.

07/16/2013 The Efficiency Network: Senior Software Engineer

At TEN, I rewrote the company's mobile data collection app in Sencha Touch (JS/HTML5 compiled to a native iOS app with Cordova), and in eight months brought this JS/HTML5 version to feature-parity with the previous iOS version (including several asked-for upgrades), which had taken four previous Objective-C developers two years.

Prior to that, I re-architected the company's Node-based API to use clearer structures in its data store and Neo4j (instead of Allegrograph). I improved the API design with more intuitive URIs and worked dynamically with other team members to replace the current infrastructure in dramatically less time than it took to create the initial codebase. Technologies used: Node.js/express.js, Neo4j/Cypher, MongoDB, mongoose.js, Redis, MySQL.

05/15/2013 Node.js/MongoDB: Net Minds Corporation

Looking for a chance to branch out in new technologies, I joined the early-stage startup Net Minds to help build out its app/service. Responsibilities included building a web-based RESTful JSON API in Node.js (using express) with a MongoDB database (with a mongoose.js interface), and Redis for storing sessions. The product needed to interface with third party APIs for user authentication (Facebook, Twitter, LinkedIn, Goodreads, Google+, github), Stripe's API for payment processing, DocuSign's API for document signing (although we also tested several other providers), and I worked toward interfacing with Balanced Payments' API, continuing development of the node-balanced npm on a forked github repo. I took over some server administration duties, including managing AWS EC2 instances, configuring Haproxy to deliver our CORS-compliant API over SSL. I participated in planning and strategy meetings, designed database schemas (in MySQL) and pseudo-schemas (in mongoose for MongoDB, which is ordinarily schemaless), and interfaced with the front-end development team, who were building an Ember.js app to handle user interaction and asset presentation in the browser. Task management was trending toward agile methods with the help of PivotalTracker, and we managed several simultaneous code branches in git.

05/18/2012 PHP/mySQL/CSS/Javascript: Carnegie Mellon University Qatar (W|W)

As part of my work at Wall-to-Wall Studios, Inc., I did the PHP/MySQL/CSS/JavaScript work on a clean, compelling, modern site for Carnegie Mellon University Qatar. This was built on top of W|W's custom in-house CMS, and features parallax JavaScript scrolling on the home page, with dynamically sized full-screen images at the highest possible resolution. These appear on the home page, main section page backgrounds (with a dynamic reveal), and anywhere there's a gallery. This was a fun one.

01/31/2012 PHP/mySQL/CSS/Javascript: Forbes Management (W|W)

As part of my work at Wall-to-Wall Studios, Inc., I did the PHP coding, MySQL design and query writing, and HTML/CSS/Javascripting for the new website for local real estate rental company Forbes Management. This was built on W|W's custom CMS, developed in-house by several developers (myself included) on CakePHP. The design's elegant precision required exacting work in the HTML/CSS JS realm, and there were several interesting niceties like the dynamic property search and custom behavior of forms on the frontend and backend. A neat, challenging site for a great client.

10/07/2011 PHP/mySQL/CSS/Javascript: Burgatory Website

In my capacity as a developer at Wall-to-Wall Studios, I did the PHP/mySQL/CSS/Javascript development for the excellent design for Burgatory. Neat features include a design implementation that scales down to mobile, complex CSS that presents multiple layers and textures, a custom design of the embedded Google Map, as well as integration with NoWait, MailChimp, and PayPal APIs. This was a complex implementation on Wordpress, and I'm quite proud of it.

09/15/2011 PHP, Javascript, CSS: Wall-to-Wall Studios

As an employee of Wall-to-Wall Studios, Inc., I was asked to work on a new implementation of the company home page, which involved a dynamically repositioning display of the company's latest projects. I did the CSS and leveraged the Isotope JS library for tiling and dynamic placement. It looks and works great, and scales to all kinds of widths.

01/10/2011 PHP/mySQL/Javascript

Here's a new site for Family Resources of Western Pennsylvania, built on the latest version of the Actual Size CMS. We did a full restructuring of our admin interface, and there's a lot of gorgeous work on the front end from the Actual Size team. My role was to design the data structure (MySQL) and do the dynamic server-side scripting (PHP MVC Codeigniter), coordinating closely with our designers and front-end developer. Significant challenge: integrating (successfully!) two different flavors of PayPal clearing for donations and benefit purchases.

11/18/2010 Quick Takes

I'm dealing with Bad Neighbor Effect. Fortunately this is just on a database server, and not in our real neighborhood.

11/01/2010 PHP/mySQL/Javascript

Another new site, for hockey blog TrueHockey. The excellent, bold design was done, of course, by our fine team at Actual Size Creative. Notable problem solved: there are a lot of different types of content, many of which behave slightly differently, but all need to be aggregated in some places, and performance needs to be responsive. I structured the database with this in mind, doing a combination of discrete tables for presentation and aggregated tables for searching. Another interesting problem was commenter authorization, so the site offers login through a native system, Facebook, and Twitter, each of which are, of course, rather different, but the behavior is consistent for users from each. I coded the CMS and dynamic front-end in PHP MVC framework Codeigniter.

10/01/2010 Quick Takes

So, Twitter @Anywhere authentication, who's laughing now, huh?

09/15/2010 Flats at 327: PHP (CodeIgniter, jQuery)

The client brief was to have the Flats at 327 site launched quickly. It required large images, image randomization, Javascript-based slideshows, and a lot of AJAX-revealed (or -hidden) content. And no database or CMS. To ship this site quickly, I leveraged the CodeIgniter framework for serving the pages and routing the URLs, and jQuery on the front end to handle the asynchronous transactions. Admins maintain the site (without a CMS) by editing content in one configuration file.

02/08/2010 Quick Takes

I'm bringing you a better tomorrow today, but isn't sure what will fill the vacuum where tomorrow was going to go.

01/28/2010 PHP/mySQL/CSS/Javascript

A really nice new site, for The Century Council's Ask, Listen, Learn program. I built and structured the database, coded the CMS and dynamic front-end in PHP MVC framework Codeigniter, and did a fair amount of the front-end implementation, working closely with Steve, Actual Size's new front-end developer. Possibly the part of the site I'm proudest of: when you sign up and upload your photo, my code dynamically creates a baseball card for you. You choose colors, text, icons, etc., and we give you a custom graphic. Pretty slick, and there's a lot of neat stuff going on here.

12/04/2009 Quick Takes

I just told someone "I'll be in the bit-mines."

12/01/2009 Quick Takes

Yet another day of PHP programming, and still no flying teapot in sight.

11/18/2009 Quick Takes

A certain kind of software developer, if he was building a house, would lavish great time and attention on an elaborate and possibly revolutionary scheme to replace all the doorknobs with something "much better," but meanwhile none of the bricks would be mortared together, because people have already solved that problem in other houses.

10/16/2009 Flash

At FlashPitt. The MMO in Flash session is compelling--nice to see MVC in Flash/Flex...not that I'm going back into Flash anytime soon.

06/25/2009 Javascript

Fun with prototype.js!

06/09/2009 PHP/mySQL/CSS/Javascript

New site for Actual Size Creative!. I designed the database structure (MySQL), scripted the front end and CMS in the PHP MVC framework CodeIgniter, and spent a lot of time with prototype.js and scriptaculous for the animation. Some tricky stuff here, and a great design by my co-workers.