Side projects are where I get to choose the problem. The work here spans my own AWS and GCP accounts, custom domains, an Alexa skill, and tools that more than once made it into production at work.
StreetLogic AI
Objectives
Street Epistemology is a conversational technique for examining beliefs — not to win arguments, but to explore the reasoning and confidence behind them. StreetLogic AI makes that conversation available on demand. Users start with a claim of their own or one surfaced from the day's news headlines, set a confidence level, and the AI leads the dialogue: asking questions, reflecting answers, and probing the reasoning rather than the conclusion. Conversations are deleted within 48 hours and never used for training.
Lessons
Designing a Socratic AI means fighting the model's instinct to be helpful in the wrong direction — it wants to validate, summarize, and conclude. The engineering challenge was keeping the AI in the role of questioner rather than answerer.
Source
Connections
URL: https://connections.dbowland.com
Objectives
A word-grouping puzzle game with a twist: every puzzle is AI-generated on demand. The concept is familiar — sixteen words, four hidden categories, find the groupings — but there is no puzzle bank, no curation, and no repeated games. The AI authors the categories, selects the words, calibrates difficulty, and writes the reveal text for each solved group.
Lessons
This was my first project where the AI was the content producer, not just a tool. Getting the model to produce game data reliably — consistent format, appropriate difficulty, no duplicate words across categories — required careful prompt engineering and validation logic. The real challenge was making generated content feel handcrafted rather than algorithmic.
Source
URL: https://email.dbowland.com
Objectives
What started as a forwarding alias for my parents grew into a full email client I actually use. The migration off GoDaddy needed a working email solution first — so I built one. The result: a React application backed by SES, Lambda, and DynamoDB that handles inbound delivery, outbound sending, forwarding rules, and alias configuration — all from a single UI.
Technologies
AWS SES handles both inbound and outbound email. SQS buffers outgoing messages so delivery is decoupled from the trigger, and Node.js Lambdas via AWS SAMdo the actual work. Serverless is a natural fit here: traffic is bursty, latency requirements are relaxed, and there's nothing to keep warm between messages.
Lessons
Managing DNS properly — MX records, SPF, DKIM — turned out to be the most educational part. Route 53 became my standard for domain management and came up in every project that followed. The migration succeeded; I now have separate production and test domains, and my parents still get their forwarded emails.
Diagram

Source
Choosee
URL: https://choosee.dbowland.com
Objectives
A friend suggested this one: an app that helps a group decide where to eat by presenting restaurant options one at a time until everyone agrees. It drew on everything built before it — Lambda backends, React frontends, SMS messaging, and Cognito authentication — and introduced GCP integration for the first time.
Lessons
Choosee was my first time working with Google Cloud Platform and the Places API. Setting up a GCP account, learning the billing model, and integrating the Places API into an otherwise AWS-native stack was a practical lesson in cloud agnosticism.
Diagram

Source
Root
Objectives
Every project needs a foundation. This one provisions my AWS environment — IAM users, permission boundaries, and the shared infrastructure everything else builds on. I started with Pulumi, which I genuinely liked, but once I adopted AWS SAM for Lambda work, I was already writing CloudFormation. Consolidating on one tool made more sense than maintaining two.
Each project gets its own IAM user with scoped credentials and permission boundaries. A compromised key can't become a full account breach.
Lessons
Pulumi is excellent — expressive, well-documented, and a pleasure to use. CloudFormation is more verbose, but it covers everything I need and keeps the toolchain uniform. Either way, infrastructure in version control quickly becomes non-negotiable.
Source
Other
URL: https://dbowland.com
Objectives
The catch-all for things that didn't fit neatly elsewhere: this site, an SMS messaging service, and a log subscriber that watches CloudWatch for errors and texts me when something goes wrong. The word-game utility is a Python tool that scores letters by frequency to surface the highest-value guesses.
Lessons
AWS Pinpoint powers the SMS delivery, and CloudWatch subscription filters route log events to the alert Lambda in near-real time. Small projects, but they made observability feel real rather than theoretical.
Source