logo Contact

Thoughts

Sharing my journey, insights, and experiences in tech and life.

Lost in Translation? A Founder's Guide to Communicating with Your Development Team

Miscommunication between executives and engineering teams is a leading cause of project failure. This guide provides a framework for clear communication, covering why you should define problems (not solutions), how to protect the developer ‘flow state,’ and the importance of feedback loops. Turn your developers into true product partners.

On Sep 17, 2025 Leadership Communication Software Development Founder Tips Team Culture Management business teams

Beyond the Firewall: A Guide to Understanding and Defeating CSRF Attacks

A deep dive into CSRF attacks, one of the most common web vulnerabilities. This guide explains the anatomy of an attack, covers best practices for mitigation like the Synchronizer Token Pattern and SameSite cookies, and details common anti-patterns to avoid.

On Sep 2, 2025 Cybersecurity Web Development CSRF Security DevOps security web-development

The 100ms Advantage: Caching Headers Boosting Revenue

Website speed directly impacts revenue - just 100ms can cause a 7% drop in conversions. This guide explains how HTTP caching headers like Cache-Control and Content-Encoding can dramatically improve performance, reduce infrastructure costs, and boost SEO rankings. Learn to turn complex caching concepts into simple, powerful business advantages.

On Sep 2, 2025 caching performance http seo devops web-development

Static Site, Dynamic Soul: Building Forms with Elegance and Edge

This post breaks down how we solved the $200/month contact form problem for a static Hugo site. We detail our journey in crafting an elegant, zero-cost solution by using Cloudflare Workers as a serverless ‘brain’ and HTMX for an instantaneous user experience.

On Jul 24, 2025 Hugo Cloudflare Workers HTMX Forms Serverless deployment frontend

When Logic Fails: How We Settled the Monty Hall Problem with Go

When our team couldn’t agree on the Monty Hall problem, we turned to Go programming to settle the debate. This article shows how we built a simulation to prove that switching doors really does double your chances of winning.

On Jul 19, 2025 go golang probability simulation monty-hall mathematics tutorial

Maximizing Efficiency in Product Development: Agile Strategies for Small Tech Teams

This post explores how small tech teams can use Agile methodologies to boost product development efficiency. It covers practices like Scrum, Kanban, and XP, along with benefits and strategies for implementation. Learn to overcome challenges and leverage tools for better productivity in small teams.

On Nov 21, 2023 Agile Methodology Small Tech Teams Product Development Scrum Framework Maximizing Efficiency agile teams business

Get to Know DORA Metrics: The Key to DevOps Success

In today’s fast-paced software development world, measuring team performance is crucial for improvement. DORA metrics help transform low-performing teams into high-performing ones. They track progress and ensure customer value delivery.

On Feb 8, 2023 software-development devops performance agile

Open-source licenses and their implications

This post explains popular open-source licenses and their implications for software development teams. It covers permissive and copyleft licenses like MIT, GPL, Apache, and BSD. Learn how license choices affect usage, modification, and distribution of open-source software.

On Jan 18, 2023 software-development open-source legal business

Application Performance Monitoring

Application Performance Monitoring (APM) uses telemetry data to enhance system observability. It helps teams troubleshoot issues, manage resources, and improve user experience in production environments. Instrumenting Go applications with APM tools enables proactive monitoring and optimization.

On Jan 16, 2023 software-development observability telemetry go performance

Using Plush with Go

This post demonstrates using Plush templating engine with plain Go applications for server-side HTML rendering. It shows how to integrate Plush with standard Go handlers and embed templates. Learn to enhance Go web apps with Plush’s ERB-like syntax for dynamic content.

On Apr 16, 2022

Page layouts in Go

This post explains how to use Go’s template block and define expressions for creating reusable page layouts. It demonstrates avoiding repetition in HTML templates for a blog application. Learn to separate layout from content for better maintainability.

On Mar 12, 2022 software-development go html templates golang

Go embed for better SQL query management

This post explores using Go’s embed package for improved SQL query management in applications. It compares embedding SQL in strings versus using separate SQL files with go:embed. Learn how this enhances editor support and maintains single-binary deployment.

On Jan 16, 2022 go golang embed stdlib

Timezone Data in Go 1.15+

On a previous post I wrote about Go’s time locations and how to put those in an alpine Docker container. This was achieved by copying the timezone data zip file from the docker builder image into the distributable image. Then using an environment variable to point Go to the location of that file.

On Dec 10, 2021 go golang timezone stdlib

Using Go's build tags

This post explains how to use Go’s build tags for conditional compilation in applications. It covers syntax, Boolean logic for tags, and practical examples for plugins and OS-specific code. Learn to optimize Go builds for different environments and features.

On Nov 26, 2020 software-development go

Go's Locations & Alpine Docker image

This post explains how to configure timezone support in Go applications running on Alpine Docker images. It covers copying the zoneinfo.zip file and setting the ZONEINFO environment variable. Learn to ensure accurate time handling in containerized Go apps.

On Mar 29, 2020 software-development Go Docker go deployment

TIP: Ensuring your team uses YARN/NPM

This tip explains how to enforce consistent package manager usage in JavaScript projects. By configuring .npmrc and package.json engines, teams can prevent mixing YARN and NPM. This avoids dependency conflicts and ensures smooth development workflows.

On Jan 16, 2020 software-development javascript frontend

Testing Buffalo Applications

This comprehensive guide covers testing Go Buffalo applications across different layers. It explains testing routes, middlewares, helpers, actions, and models with practical examples. Learn best practices for ensuring code quality and stability in Buffalo apps.

On Dec 18, 2019 software-development buffalo go testing

Golang on CircleCI

This post provides a quick guide to setting up Continuous Integration for Go projects on CircleCI. It includes a sample circle.yml configuration for dependencies, testing, and environment setup. Get started with automated builds and tests for your Go applications.

On Oct 9, 2015 software-development go CI deployment devops