1. screenshot of new photo slider
    New Photo Slider Controls!
  2. screenshot of link preview
    Bonus: Link Previews!

I'm making this a photo post because the photo slider got an upgrade.

Previously it was purely HTML/CSS which is fine. However, I decided to progresively enhance it with some simple JS to add some controls to make scrolling more smooth.

As a bonus I also added Open Graph data to every page. Now when you share links to my blog the link previews work!

Hike

Hike 1/40: 2026

Elevation profile

Gain -- Loss --

Distance
--
Moving time
--
Stopped time
--
Total time
--
Avg moving speed
--
Max speed
--
Elevation gain
--
Elevation loss
--

It's been a rainy new-years day but Azure and I didn't let that stop us from getting outside!

It was gorgeous in the desert today. The colors are magical when it's been raining.

Looking Forward to 2026

I’m sitting here writing this on the couch of the in-law suite at my girlfriend’s parents’ house in St. George, Utah. Now that is a sentence I never would have guessed I’d be writing last year. Honestly, it’s not even a sentence I think I could have guessed I’d be writing back in April. But here I am. That feels like as good a place as any to pause, look forward, and write down a few goals for 2026. I’m a firm believer that growth without goals is mostly accidental, and I’d like to be a litt...

Read more

Adding H-Card Support to django-blog

I just merged PR #21 into django-blog, adding first-class h-card support across the app. This is part of my slow march toward more semantic, IndieWeb-friendly markup without bolting on heavy third-party tooling. This change is mostly invisible from a UI perspective, but it adds a lot of structure under the hood. What’s an H-Card? An h-card is a microformat for representing a person or organization in HTML. Think of it as a lightweight, standards-based alternative to things like JSON-LD for b...

Read more
  1. git-wrapped.com results for CrowderSoup
    My Git-Wrapped: 2025

Honestly, I wasn't sure if I was going to share this or not. But Kelly shared her's as an engineering manager and I realized that I have worn so many hats this year that I should be proud of everything I was able to get done this year.

I continued to build Govalo. I started an LLC and took on loads of consulting work. I went on the job hunt and found new full-time employment (more on that later).

I started a new relationship with Azure. She was living in St. George when we started dating back in May. Since then we've transitioned to splitting time between St. George and Salt Lake. We even moved into a new place in Salt Lake and signed a lease together.

I'm really proud of everything I've accomplished this year. And my GitHub activity is just one small slice of everything I've done.

Testing Shopify Webhooks Locally With shopify-webhook-faker

If you’ve ever built a Shopify app, you already know that webhooks are at the heart of the platform. Everything from orders and fulfillments to customers and subscriptions fires through them. But actually testing Shopify webhooks during development can be exhausting. You either need a publicly accessible HTTPS endpoint, a tunnel that loves to break at the worst possible moment, or a staging environment just to debug one handler. Triggering real events from the Shopify admin is slow, unreliab...

Read more

Basic Analytics in a Django App

I recently started my journey of rebuilding this blog using Django. It's a learning experience for me, with the side benefit of nudging me to write more. Something I wanted to add was some super basic analytics to help make sure this site is actually being used by someone other than me. I wanted to see things like a (somewhat naive) count of unique visitors, total page views, where requests were coming from (both referrer and geographically), and response codes (mostly so I can find 404s). Th...

Read more