Building websites since 2015

From nonprofit storytelling to digital marketing at scale to independent client work — over a decade of solving real problems with clean, maintainable code and a bias toward shipping.


Working philosophy

What I optimize for

I believe the best digital work comes from understanding the full picture — not just the design or the code, but the business problem behind both. Every project I take on starts with listening: what’s the goal, who’s it for, and what does success look like?

I write code that’s meant to last. That means strict types, automated testing, semantic markup, and accessibility built in from the start — not bolted on at the end. I care about performance, maintainability, and giving the next developer (or future me) something clear to work with.


Key Points

  • Full-stack ownership — I move comfortably between frontend and backend, from React editor components to PHP architecture to CI pipelines.
  • Convention over configuration — Predictable patterns reduce onboarding friction and cognitive overhead. If the structure is obvious, the code explains itself.
  • Ship, measure, iterate — I’d rather ship something focused and refine it than chase perfection in isolation.

AI Integration

How AI fits into my development workflow

I integrate AI into my development workflow the same way I’d integrate any powerful tool — deliberately, with clear boundaries. AI is exceptional at accelerating research, generating boilerplate, stress-testing ideas, and catching blind spots in code review. I use it daily.

But I don’t hand over architectural decisions, and I don’t ship code I don’t understand. AI works best when the developer driving it knows what good output looks like — and knows when to override it. The judgment, the context, the taste — that’s still the human’s job.

My approach: use AI to move faster on the work that benefits from speed, and stay hands-on for the decisions that benefit from experience.


Key Points

  • Code generation & review — Drafting implementations, catching edge cases, and pair-programming through complex logic.
  • Research & exploration — Quickly surveying approaches, evaluating trade-offs, and prototyping ideas before committing to a direction.
  • Documentation & testing — Generating test scaffolds, writing clear documentation, and maintaining consistency across a growing codebase.
  • Always verified — Every AI-assisted output is reviewed, tested, and understood before it ships.

Skills

The toolbox.

A decade of building for the web means picking up a wide range of tools — and knowing when to reach for each one. Here’s what I work with regularly.

Languages & Frameworks

  • PHP
  • JavaScript (ES6)
  • TypeScript
  • React
  • Vue
  • jQuery
  • HTML5
  • CSS / SASS

WordPress & CMS

  • Gutenberg
  • Timber / Twig
  • ACF
  • Multisite
  • WooCommerce
  • Yoast SEO
  • Visual Composer

Testing & Quality

  • PHPUnit
  • Vitest
  • Playwright
  • Cypress
  • Jest
  • axe-core
  • TDD
  • BDD

DevOps & Tooling

  • Docker
  • DDEV
  • Git
  • GitHub Actions
  • CI/CD
  • esbuild
  • Webpack
  • Composer
  • npm
  • AWS
  • RSYNC

AI-Assisted Development

  • Claude Code
  • Gemini
  • ChatGPT
  • Codex

Methodologies & Standards

  • Agile
  • Scrum
  • Kanban
  • Code Reviews
  • WCAG
  • ARIA
  • Semantic HTML
  • Responsive Design

Career

From nonprofits to agencies to independent work

I started my career in 2015, hired straight out of college as a Junior Web Developer at StoryCorps — a national nonprofit dedicated to recording and preserving personal stories. Over two and a half years, I grew from junior to Web Developer, building and maintaining the digital platforms that supported their mission. It was a place that taught me how to write code with purpose and work within tight constraints.

From there, I joined Situation Interactive, a digital marketing agency in New York. I spent nearly nine years there — the longest stretch of my career — working across campaigns, platforms, and clients at scale. I sharpened my skills in frontend architecture, performance optimization, and working within large, cross-functional teams. It was where I evolved from a developer into an engineer who could own systems end-to-end.

When the pandemic hit, I was laid off — and what started as an uncertain moment became the foundation for my freelance practice. I built a client roster that let me take on ambitious, long-running projects with real ownership.

PeriodRoleOrganization
2012 – 2015B.S. Computer ScienceBrooklyn College
2015 – 2018Junior Web Developer → Web DeveloperStoryCorps
2018 – 2020Web DeveloperSituation Interactive
2020 – 2020WordPress DeveloperKing & Partners
2021 – 2026Senior Web DeveloperSituation Interactive
2020 – PresentPresident, Full Stack WordPress DeveloperIndependent

Resume

Want the full picture?

Download my resume for a complete overview of my experience, skills, and education.