Modern full-stack design + development · Decades of expertise.
Photography community, news publishing, and tutorial store
One of the largest photography communities on the web. Millions of monthly visitors, hundreds of thousands of registered users. Sole developer and designer for over 12 years.
Daily editorial content, photo sharing and contests, a digital tutorial e-commerce store, and a community engine built on Drupal.
Headshot photography coaching community and studio directory
Peter Hurley's online coaching platform for teaching his headshot photography technique. Built from the ground up on Drupal as a paid membership community with courses, contests, events, and a directory of trained photographers.
Proofing gallery SaaS for photographers
Photo Proof Pro is a proofing gallery SaaS platform for professional photographers. They create password-protected galleries from their photo sessions, manage their clients and orders, and let their clients log in to view proofs, choose favorites, and place orders.
I'm a designer and developer based in Los Angeles, specializing in Drupal. I've been building for the web since 1998, starting out in graphic design and animation. My recent focus has been designing, building, and supporting the community platforms and tools that creative educators, photographers, and artists rely on. Most of my clients have been with me for over a decade.
I'm always looking for new and interesting projects that align with the work I've been doing. If you've got something and want to work together, drop me a line.
Design. I started my career in design and still work across the full Adobe Creative Cloud suite, including Photoshop, Illustrator, InDesign, and the rest. I've been in Photoshop since the mid 90s, practically since its invention. I'm also skilled in video editing and motion graphics, working in Premiere Pro and After Effects. Figma comes in when a project calls for it.
Frontend and applications. Standard HTML, CSS, and JavaScript for web, with Sass for stylesheets and Gulp for build tooling. React for more involved frontend work, and React Native when a project needs a real mobile app on iOS and Android. Git for everything.
Backend and frameworks. Drupal is where I spend most of my time these days, with a deep library of custom modules built up over the years. I also work in WordPress when a project fits it better, building custom plugins and themes as needed. PHP and MySQL underneath both, with Node.js where it fits.
Infrastructure and services. I run production sites on AWS (EC2, RDS, S3, CloudFront) on Linux. For payments and subscriptions I work most often with Stripe and Recurly. I handle the whole infrastructure layer myself, not just the application on top of it.
I've worked with teams large and small throughout my career. These days I run my practice mostly as a solo operation, bringing in collaborators when a project calls for it. The majority of the work is done by me.
I'm at my best with clients who want a partner. Someone who wants design input, technical pushback, and real conversations about how to reach the goal. I'm not tied to any one technology. I figure out what the project actually needs and pick the right tools for it.
That said, I'm always open to interesting projects with teams. If you're working on something interesting with like-minded people, I'd love to hear about it.
I started my career as a designer. I studied illustration and design in college, and got introduced to the web in the late 90s through Flash. I spent several years building interactive animations for instructional content across a wide range of clients. Flash is also how I learned to program. I started with ActionScript, and many of those early applications were driven by XML data. That's where the core concepts clicked: requesting data, waiting for it to come back, and building the interface around the response. The same request-and-respond thinking sits under every data-driven application I've built since. From there it was JavaScript, then PHP, then whatever came next. Since then I've taught myself a wide variety of technologies as they've come and gone throughout my career.
Coming up through design first, then learning to program because I needed to make my designs do things, gave me a feel for the patterns and concepts underneath whatever language or framework is current. These days I spend most of my time in Drupal, and it's the framework I know inside and out.
That foundation is the reason I can still own the entire stack as one person.
Los Angeles, California. Pacific time zone. I work with clients across the US and internationally, almost always remotely. For Southern California based projects I'm happy to meet in person when it helps.
Yes, and so is everyone else right now. AI tools are the buzz of the moment, and used well, they genuinely help developers and designers work faster and smarter. They've also made it easy for anyone to produce something that looks finished to the untrained eye.
But left to run blindly on their own, they're a recipe for disaster. That's where experience comes in. A seasoned designer and developer isn't valuable for running the same tools everyone else has. The value is knowing what to do with what comes out of them. After 26 years, I know what works, what doesn't, and what quietly breaks six months down the line. I use AI to move faster, then filter everything it produces through that judgment.
Without that filter, you get slop. Code that looks right but isn't. Designs that miss the point. Security holes that get you hacked. The tool is the easy part. Knowing what to keep, what to throw out, and what to fix is the actual job.
I take on a small number of new clients each year, so I'm selective about what I take on. My focus is long-term partnerships with photography, creative education, and community platforms, but I also take on shorter engagements like custom Drupal modules, WordPress plugins or themes, and Drupal 7 to 11 migrations.
The easiest way to reach me is the contact form on this page. I respond personally to every message, usually within a couple of days. If you're unsure whether your project's a fit, send it anyway.