
I'm a full-stack developer with over 5 years of experience. I enjoy building websites and web apps, especially when I get to work on something custom. My background in design and marketing has also helped me understand what businesses actually need from their websites.
What I build
- WordPress themes
- Custom PHP
- JavaScript / TypeScript
- React & Svelte
- APIs & integrations
- Front-end fixes
- Performance
// Lives in functions.php, where plugin updates can't undo it.
add_action('template_redirect', function () {
if (is_user_logged_in() && is_page_template('templates/dealer-portal.php')) {
// Keep LiteSpeed from caching the dealer portal.
do_action('litespeed_control_set_nocache', 'dealer portal');
}
});// Send each teacher one lunch reminder per day.
$key = 'lunch_reminded_' . wp_date('Y-m-d');
$sent = get_option($key, []);
foreach ($missing as $teacher) {
if (in_array($teacher->ID, $sent, true)) continue;
if (wp_mail($teacher->user_email, $subject, $body, $headers)) {
$sent[] = $teacher->ID;
update_option($key, $sent, false);
}
}// src/routes/shop/+page.server.js
import { redirect } from '@sveltejs/kit';
// Read the flag per request, not from a shared value.
export const load = async ({ locals }) => {
if (!locals.flags.shopActive) throw redirect(307, '/');
return {};
};// Disable the button while the swap runs.
const [pending, startTransition] = useTransition()
function swap() {
startTransition(async () => {
await swapMeal(planMealId)
})
}
return (
<button onClick={swap} disabled={pending}>
{pending ? 'Swapping…' : 'Swap'}
</button>
)// Send Buy Now and Rent Now leads to the dealer for the customer's ZIP.
$state = rally_state_for_zip($zip);
$dealer = rally_dealer_for_territory($state, $zip);
wp_mail($dealer->email, "New {$type} lead: {$trailer}", $summary);// Move focus into the panel without scrolling the drawer.
function openPanel(panel) {
drawer.dataset.view = panel.id;
panel.querySelector('a')?.focus({ preventScroll: true });
}# Font permissions caused nginx to return 403 errors.
# chmod 644 assets/fonts/*.otf
location ~* \.(otf|woff2?)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
}Selected work
Project 1 / 4
Expertise
Frontend: the layouts, components and interactions people use.
Frontend development is what I enjoy most. I like taking a design and figuring out how to bring it to life. I've worked on everything from custom websites to more complex web applications, and I always try to make sure what I build looks good and works well on any screen.
Tools
- JavaScript
- HTML
- CSS / SCSS
- Responsive layouts
- Tailwind CSS
- Foundation
Backend: data, logic, forms and the integrations behind them.
I've worked on a lot of projects where the real work happens behind the scenes. Whether it's building custom functionality or connecting different systems together, I enjoy figuring out how everything needs to work. Some of my favorite projects have been the ones where I've had to build something completely custom.
Tools
- PHP
- Zapier
- MySQL
- Mustache
- Web3Forms
- Laravel components
WordPress & CMS: custom themes and the editing experience.
I've worked with WordPress for years, starting with page builders and eventually moving into custom themes and development with PHP and ACF. I like being able to build exactly what a website needs without relying on a bunch of plugins. I've also built custom portals and systems that make things easier for the people using them.
Tools
- WordPress
- ACF Pro
- Sage (Roots)
- Blade
- Custom post types
- Custom roles and permissions
Design & workflow: from layout to a tested release.
I enjoy being involved in a project from the beginning and seeing it all come together. Along with development, I've worked in digital marketing, which has helped me understand the business side of websites. I like figuring out what needs to be improved and building something that actually makes a difference.
Tools
- Git / GitHub
- WP Engine
- Yarn
- Webpack
- SFTP
- SSH
Marketing: content, campaigns and the work behind them.
Marketing has always been part of what I do alongside development. My wife Kaylee and I started The Twilight Trekkers in 2021, and we've grown it to over 26K Instagram followers and worked with 11 brands. I write our blogs, film and edit drone footage, and pay attention to what our followers enjoy most.
At Rally, I also handled marketing for the Rally Connects tradeshow. We originally planned for around 100 people, but ended up having over 250 attend.
Tools
- Mailchimp
- HubSpot
- Instagram reels
- Drone video editing
- Lightroom
- Google Analytics 4
Experience
2025 to Present
Rally Trailer Manufacturing
Web Developer / Web & Marketing
Turning a website into a tool for customers, dealers, marketing, and operations
2026 to Present
PROLOOK Sports
Web Developer / Marketing Web Development
Sites: QuickStrike · Legends · ALL IN Tournament
2026
Lincoln Academy
Solo Web Developer / Designer
Rebuilding a school website around the parents, teachers, and staff who use it every day
2024 to Present
Freelance
Web Designer & Developer
WordPress sites I designed and built for local businesses, including DeDona Restoration and American Legacy.

The Twilight Trekkers
Kaylee and I started The Twilight Trekkers in 2021: travel and adventure photos, reels and stories from the places we go.
26k
people follow along on Instagram.
Canyons & slots
The Subway, Zion
- I write the blogs.
- I build and run the website.
- I fly the drone and make the drone videos.
- I shoot some of the photos and video. Kaylee takes most of the photos.
Brands we’ve worked with
- Rush Creek Lodge
- OutpostX
- Dolphins and You
- Mad Moose Rentals
- Redtail Air
- Reset Hotel
- Free Fly
- Merino Tech
- Get In The Wild
- Javie
- 32 Degrees
















