Active Hatch
Hello! I see you just tried to reach the old Active Hatch site. Since my personal site now shows my recent work and skills set, I decided to consolodate down to a single, all-encompasing site. If you want to get in contact with me about anything freelance related, please email me at craig@activehatch.com.
Hi, I’m Craig, a developer currently working in Salt Lake City, Utah for an awesome shop called Welikesmall. Below you’ll find some projects (the ones I’m allowed to admit to) that I’ve been proud to be a part of in the last couple years. I’m really into learning/utilizing new languages, installation work and unique web projects. I rather enjoy working my design chops every now and again, too. Thanks for looking!
My job on this site was to put together the backend of this site. We went with Python/Django/MySQL and a shopping cart system called Satchmo. Satchmo also required me to install Fedex/USPS plugins and AuthorizeNet. I also wrote the JS that controls the product image zooming.
A coworker and I were lamenting on how much could be improved with the current wikis on the market in terms of design and usability, so we decided to take a crack at it. Of note in the codebase is a versioning class, where Will refactored diff functionality and I ported over patch functionality from Python. I also designed the entire app as well as the frontend site, which both feature HTML5 with full support of IE6-9, Safari 3+, FF 3+, and Chrome. I also used media queries on the frontend site to create optimized versions for iOS and Android based devices.
Upon a tight deadline I wrote the front-end and back-end code for this site in two weeks. This included a custom CMS for the blog, events, partners, news, as well as tagging abilities on blogs. I cut up the site into strict XHTML 1.0, and integrated any jQuery necessary (including the homepage slideshow and an HTML5 video player that sat in a modal window). I also integrated a third party vendor with multiple contact forms. And what an amazing client Desktone was to work with! They were easy to find solutions with, extremely responsive, and were quite timely.
I wrote the initial draft and led all subsequent iterations on a standards manual for JavaScript at iMarc. This included not only JavaScript but also standards for jQuery as well.
On the side I built a site through Interactology to build Harpo Creative Works a new website. They provided a fluid design and I cut it up and integrated into ExpressionEngine 2.0. All of their works are dynamic thanks to EE, and they have the ability to add any audio, video, or photo as a piece and the system knows how to treat each accordingly. Of particular interest is the fact that the client only has to enter in the URL of a video work and the site knows to parse it and show it in a modal window on the fly.
Upon realizing that iMarc had many internal sites where usernames and passwords were all stored separately, I tackled building a secure, single sign-on service for all sub-sites of iMarc. This meant writing the initial code base as well as collaborating with coworkers during regular meetings to ensure that the code was solid. All information sent from Identity is encrypted into HMAC strings using public key encryption (OpenSSL), and then SHA-256 is run on those strings. All sessions are restricted to https by running the core service under an SSL to prevent session fixation. Each user has a GUID, and information is pushed (in JSON) whenever asked for by the remote site (typically during log in but can asked at any time).
I needed to allow a user to select upcoming seasons to filter trips, so I wrote an Iterator class to accomplish this. You construct upon any valid date and it allows you to iterate from that point in time over a static array of all possible season change dates within the PHP range of time(), or return a range of seasons based on an entered end date.
I have been actively using the Flourish framework since its inception, as it was created by a great former coworker of mine, Will Bond. During that time I have helped find bugs, give advice on refactoring, and written patches, the history of which can be found here.
Wrote a Flourish ORM plugin at iMarc for dynamically adding many to many relationships with tags. You can make a single call in an init script to load the class and subsequently tie in a tags table to any number of SQL tables, allowing for relational querying and storing of tags on the fly when active records are stored. I took it a step further and also allowed querying of tags via a set of active records.