I’m a programmer who’s passionate about my craft. I tinker with personal programming projects for fun, learn new languages as often as I can, and I am constantly on the lookout for new problems and interesting people to learn from.
I have a wide range of experience, mostly in systems programming and database-driven web development, but I’ve also dabbled in computational linguistics, written network traffic analysis tools, created systems-provisioning and configuration frameworks, and tinkered with semantic web technologies.
I’ve been programming and doing system administration professionally since 1994, have spoken at a number of conferences, and I co-wrote a couple of sections of O’Reilly’s Ruby Cookbook. I maintain a number of Open Source projects, and I try to stay active in software- and technology-related communities.
Building unobtrusive informational tools for the modern warfighter.
I provided technical oversight and planning for the services and payment systems of several online leasing web applications, and mentorship for the engineers working on them. I set up the initial PostgreSQL backend, added integration with multiple payment-processing, credit-reporting, and messaging services, and set up HTTP services to interact with them. I wrote internal customer support tools using Angular and Aurelia, rewrote the automated payment system (which processes over $2B annually) to handle multiple methods of sending and receiving payments, added an asynchronous job system using AMQP messaging, and integrated with vendors like Experian, Stripe, Balanced, Mailgun, and Bancbox.
Cozy was acquired by CoStar Group/Apartments.com in 2018.
I am a member of the Ruby Agent team, who is tasked with writing, maintaining, and supporting the code that runs in customer-side applications and send periodic reports back to the New Relic service about an application's performance.
I write web-based and command-line applications and services for controlling and maintaining the IT infrastructure of this Portland-based stop-motion and computer animation company. I use Ruby and C along with 0MQ, AMQP, Mongrel2, OpenLDAP, PostgreSQL, and other best-of-breed tools to construct systems distributed over three geographic locations, so our crew of 600 artists and their supporting crewmembers don't have to think about technology. I use JQuery and AngularJS with HTML5 and CSS3 for web interfaces to these systems, backed by a collection of REST services written in Ruby on the back end that provide integration with several databases, an LDAP directory, an Asterisk phone system, digital asset management, monitoring services, network storage, asynchronous job queues, and other systems.
I was a part of several ThoughtWorks teams hired by Fortune 500 companies to do web application development in Ruby and Java, as well as to help transition their teams to Agile methodologies from more-traditional project-management styles. I built web interfaces in HTML4, CSS, and Prototype with Ruby on Rails and MySQL back ends for tracking ingredients from suppliers to supermarket shelves, tracking credit card rewards programs, a customer-facing mortgage web portal for a major lender, and an intranet Java Struts application for tracking claims resolution for a discount insurance company.
I started this programming consultancy with a friend after we discovered Ruby. We spent the summer writing a web application framework using Apache and mod_ruby, and then discovered that neither of us knew how to actually sell our services. It was a great learning experience, both as a programmer and as an entrepreneur, and I ended up with a great collection of Open Source code that I still use parts of today.
My earlier experiences (I'd be happy to provide more details if you should so desire):
In addition to a great deal of professional work, I've also created or contributed to many open source and free software projects. Some examples which I think are particularly representative:
There's a bunch of other stuff that you can find via my Github account, or my Sourcehut account.