Archives
All the articles I've archived.
-
John Henry at the Keyboard
_Part 3 of 3: Reflections on 30 Years in Technology_ _Part 1: The Short Bus and the Fairway | Part 2: The Fear of Being Included_
-
The Short Bus and the Fairway
Thirty years in technology taught me that resilience, mentorship, and an analytical mindset matter far more than mastering any single technical skill.
-
The Fear of Being Included
Introversion in tech is far more nuanced than antisocial stereotypes suggest, and online community can extend real life rather than replace it.
-
Master Dapr Microservices: Ultimate Guide to Dapr, Kubernetes, and OpenTelemetry Tracing
Adaptability is a critical characteristic of software systems that developers and architects constantly strive to achieve. However, it's a delicate balance between productivity, performance, maintaina
-
Linkerd Service Mesh on AWS EKS
I've been writing for a while now on setting up Kubernetes specifically with AWS' EKS. I love how EKS gives me the flexibility to install the standard and custom Kubernetes resources that I need and w
-
KEDA to build Event-Driven Applications on EKS
Event-driven applications aren't new, but the patterns and discussion in the context of the cloud are hard to miss these days. It's hard to argue with the patterns and practices because with events, I
-
Establishing Datadog on Kubernetes with EKS
Over the past few years I've spent a great deal of time writing and building with Datadog. I find that their platform gives me as a builder the right insight and tools to diagnose things quickly, make
-
Building an API Gateway with Istio and EKS
Working with Kubernetes opens a world of possibilities in a software project. That's one of its biggest appeals to me as a developer. And when building with distributed systems, one of the components
-
4 Benefits to using a Service Mesh
I've been spending a great deal of time lately working with Service Meshes and after having a few of the same conversations over and over (in a good way), I wanted to codify some of the reasons why th
-
Complete Helm Tutorial: Kubernetes Package Management Guide
Clicks, copies, and pasting. That's an approach to deploying your applications in Kubernetes. Anyone who's worked with Kubernetes for more than 5 minutes knows that this is not a recipe for repeatabil
-
Connecting Rust Lambda Functions with OpenTelemetry and Datadog
Tracing Lambda Functions with observability code is the basement level of instrumentation that should exist when writing Serverless Applications. So many times, even in Lambda Functions, there are tim
-
Momento Token Vending Machine with Rust, Lambda, and Datadog
Working with browser hosted code (UI) requires a developer to be cautious about exposing secrets and tokens. A less than trustworthy person could take these secrets and do things that the user doesn't
-
Stepping Out, 1 Year Later
Career independence after one year of leaving a CTO role, with lessons on family, sales pipeline, finances, and building a consulting business.
-
DSQL Part 2 - More Rust and a Momento Cache
**UPDATE: I had a missing index on my DSQL table. If you read the article before, please go back and check the metrics and graphs**
-
AWS DSQL Tutorial: Serverless SQL Database with Lambda and Rust
Serverless developers that use Lambda as their compute of choice have long had to make a trade-off in AWS when it comes to storing their application data. Do I use a purely serverless database in Dyna
-
Orchestrating a Serverless API Workflow with Kestra
Kestra workflow orchestration demonstrated with AWS Lambda and DynamoDB, covering HTTP tasks, database queries, and the control plane interface.
-
Quit Tomorrow - Navigating Struggles in a Tech Career
So you finished that degree, boot camp, or course work and are ready to enter the workforce. It's the day you've dreamed of for years or perhaps just the day you hoped for as you transition roles in y
-
Evaluating 2 Popular Service Meshes
The decision to add a Service Mesh to an application comes down to how your application communicates between itself. If for instance your design is heavily asynchronous and relies on events and me
-
Datadog RUM Provides Deep Application Insights
Observability is a user experience concern. Let that sync in for a minute. When you reach a certain amount of scale, it's not practical for a developer to take feedback from each and every user and th
-
Taking Local K8s for a Spin with Minikube and ArgoCD
In the beginning there were punched cards. And since that beginning, technologists have continued to find better and better ways to deploy code to bring end user value. And as those new techniques hav
-
Build the Perfect Compliment to DynamoDB with Typesense
A modern web application can take many shapes and forms from an architecture and design standpoint. With the launch of AWS Lambda in 2014, the cloud vendor thrust the capabilities of Serverless into a
-
Powerful Visibility with Rust, Lambda, Datadog, and OpenTelemetry
As much as I love Rust and especially Rust on serverless, it would be hard for me to recommend Rust and Lambda to a company without a plan for Observability. I've written about this topic before and t
-
3 Proven Steps to Becoming a Mentor
I talk to my kids about this all the time. The difference between influence and manipulation that is. It's a subtle distinction but something that makes all the difference when creating content that i
-
ServiceConnect with CDK builds Strong Service Affinity
Containers are a fantastic way to package up your application code and its dependencies. I'm on the record as a huge fan and probably write more production code in containers than I do with Lambda Fun
-
Strong Performance with EC2, Lambda, and the Momento SDK for Rust
Momento SDK for Rust delivers 2ms topic latency on EC2 and near-instant webhooks on Lambda, proving serverless caching performs at any scale.
-
My Flow and Productivity has Improved with the Simplicity of Neovim
Neovim setup with LazyVim, tmux, and Wezterm creates a simplified terminal workflow that boosts developer flow and productivity for daily coding.
-
Mind Boggling Speed when Caching with Momento and Rust
Summer is here and in the northern hemisphere, temperatures are heating up. Living in North Texas, you get used to the heat and humidity but somehow it still always seems to sneak up on me. As I start
-
Does Serverless Still Matter?
Serverless as a corporate-backed movement may be fading, but its value, community, and impact on cloud computing will endure for years to come.
-
The Neighborhood Domain will Quickly Improve your Modeling Skills
Neighborhood domain modeling maps bounded contexts to familiar concepts like houses and HOAs, making microservice architecture easier to understand.
-
Secure Pattern for Deploying WASM on S3
Picking up where I left off from the last article, I'd built a simple WASM project with Rust and walked through how to generate a publishable distribution. In this edition, which is probably the penul
-
Surprisingly Powerful - Serverless WASM with Rust Article 1
It's been a while since I wrote a series going back almost 9 months to my Building Serverless Applications. I enjoyed that so much that I have been wanting to write another, but just didn't have a con
-
Guaranteed Safety using Blue Green with ECS and CDK
Buckle up for this one as it's going to be a lengthy piece. I love writing articles like this one because they contain complete infrastructure builds that highlight some best practices to put multiple
-
3 Proven Patterns for Reporting with Serverless
Serverless architecture has given developers, architects, and business problem solvers new capabilities to deliver value to customers. It feels like we are in the age of maturation of serverless in so
-
An Allow List Lambda Function in Rust is 1 Guaranteed Way to Improve CORS
Some time ago I wrote an article about Cross-Origin Resource Sharing with API Gateway that talks about custom allow lists. I wanted to revisit that implementation not because the code doesn't work, bu
-
A Proven and Comprehensive Pattern for Building an API with Rust and Lambda
Rust and Lambda API tutorial walking through a complete CRUD implementation with DynamoDB, Cargo workspaces, and CDK for deployment to AWS.
-
4 Inspiring Tips to Think like a Consultant
Consultant mindset tips that elevate your influence by mastering four skills: listening, adding value, working backwards, and making tradeoffs.
-
Embrace that a Career isn't always Measured by Climbing the Technology Ladder
Career growth in technology does not require climbing the corporate ladder, and discovering your why can reshape how you measure true success.
-
People Matter more than Technology when Building Serverless Applications
I've been hitting the gas pretty hard on Rust lately and doubling down on my desire to see more Rust in Serverless. I feel strongly though that balance is important in anything in life. For every peri
-
Blazing Fast Change Data Capture with DynamoDB Streams and Rust
Propagating changes in an event-driven system can be accomplished in many different ways with many different tools. Do I work with transaction logs, put events on an event bus or do something else? Fo
-
My Personal Serverless Rust Developer Experience. It's Better Than You Think
Serverless Rust developer experience guide covers the complete workflow from IDE setup and Cargo Lambda to local debugging and CDK deployments.
-
Open Telemetry and Lambda
Open Telemetry and Lambda are topics that I've spent a lot of brain cycles on over the past few weeks. Most of my work with these topics has been with Rust but I want to take a look at where my opinio
-
Cognito Starter Kit with Rust and Lambda
Welcome to the Cognito Starter Kit with a large helping of Rust seasoned with some CDK. I'm a big believer in Cognito and the power it gives builders to customize the various signup and authentication
-
Rust and Lambda Performance
I made a statement on LinkedIn that if you have enough traffic hitting your Lambdas you might want to consider a different programming language. And if you've been reading my content lately, you won't
-
Leveraging the SDK to Publish an Event to EventBridge with Lambda and Rust
Following up on my popular Rust and Lambda article, I wanted to explore how to put an event on an AWS EventBridge Bus. If you aren't familiar with AWS' EventBridge, think of it as a highly scalable Ev
-
How to Build with Rust and Lambda
Rust and Lambda are new friends. Sure, there's a great deal of momentum lately around Rust but the language has been around for almost 20 years. It struggled to take off early on but has seen its adop
-
Serverless and Agile
Agile and Serverless go together like peanut butter and jelly. Ham and eggs. Coffee and creamer. Tea and milk. Name your favorite combination that resonates best in your head. But the truth is this, A
-
Customize a Cognito Access Token with Rust
Identity and Access Management is a critical part of any application. And having a solution that provides customization can also be super important. Take for instance the ability to customize a Cognit
-
Web API with Rust and Fargate
Rust web API on AWS Fargate built with Axum, DynamoDB, and Docker, covering local development with Docker Compose and ECS cloud deployment.
-
Becoming a Leader in Tech
I had several conversations at re:Invent that have got me thinking since I returned. No names or details will be given about those whom I spoke with, but I have been processing the how and why of one'
-
Gratitude. A look back at re:Invent
Gratitude and community shaped an unforgettable re:Invent 2023 experience, from favorite announcements to meaningful connections with builders.
-
API Gateway, Lambda, DynamoDB and Rust
It's been a few weeks since I last wrote an article on using Rust with AWS. In the span of then and now, AWS officially released their Rust SDK for interacting with many of their services. If there wa
-
AWS re:Invent Day 4
Day 4 of AWS re:Invent 2023 has come to a close and it was just as epic as the other nights. The day itself was a little slower due to my Day 3 evening ending fairly late, but there's still a good bit
-
AWS re:Invent Day 3
AWS re:Invent 2023 Day 3 recap covering keynote reactions, community booth volunteering, building lasting connections, and the Momento bash.
-
Amazon Q meets Taylor Swift
Amid everything going on, I stayed up after Day 2 of re:Invent to get my hands on the new Amazon S Q Digital Assistant. For more on the release here is the announcement. While sitting in the Adam Seli
-
AWS re:Invent Day 2
AWS re:Invent 2023 Day 2 recap covers the Adam Selipsky keynote, announcements like Amazon Q and S3 Express One Zone, and community networking.
-
AWS re:Invent Day 1
AWS re:Invent 2023 Day 1 recap covers a DynamoDB modeling session, the Healthcare and Life Sciences Executive Symposium, and Monday Night Live.
-
AWS re:Invent Day 0
AWS re:Invent 2023 Day 0 recap covering the community hike at Valley of Fire, meeting builders in person, and kicking off the conference week.
-
Writing a Technical Blog Article
I've had a few people ask me about my writing process and how I produced the articles and code that I do here on my blog. At first, I thought, no way anyone cares what it takes for me to produce the a
-
Partitioned S3 Bucket from DynamoDB
I've been working recently with some data that doesn't naturally fit into my AWS HealthLake datastore. I have some additional information captured in a DynamoDB table that would be useful to blend wit
-
Consuming an SQS Event with Lambda and Rust
I've been trying to learn Rust for the better part of this year. My curiosity peaked a few years back when I learned the AWS-led Firecracker was developed with the language. And I've continued to want
-
Embracing Bad News as a Leader
Some find that handling bad news as a leader is tricky. Their first thoughts range from figuring out who to blame, how to hide the damage or even just how to make the problem go away. I like to look a
-
DynamoDB Incremental Export with Step Functions
DynamoDB incremental exports can be orchestrated with Step Functions using native SDK integrations, eliminating the need for Lambda compute code.
-
Building Trust
Building trust in technology teams starts with adding value, listening before speaking, giving your time selflessly, and showing up when it matters.
-
AWS API Gateway WebSocket Tutorial: Real-time Serverless Apps
AWS API Gateway WebSocket tutorial showing how to build real-time serverless apps with Lambda, DynamoDB, and CDK using Golang step by step.
-
Analyzing and Correcting Errors with Advanced SQS Redrive
A good friend of mine is working on a really neat redrive tool with SQS and wanted to write an article to describe its purpose and use. I'm super honored that he asked me to share his writing on my bl
-
Influence, Credibility and Following the Yeses
Influence. I've been thinking about this often over-used word for a while and wanted to take a candid look at how to establish influence, increase influence and embrace that influence for the betterme
-
Attending your First re:Invent
First off, this post is not affiliated with AWS or the re:Invent conference. The content below contains opinions and some tips for navigating your first re:Invent conference. I believe that if you are
-
Monitoring SQS with Datadog
Event-Driven architecture paired with Serverless technologies are a powerful combo to build applications. But failure does happen and you should expect it to happen. Dealing with that failure is often
-
DynamoDB Streams EventBridge Pipes Multiple Items
I've written a few articles lately on EventBridge Pipes and specifically around using them with DynamoDB Streams. I've written about Enrichment. And I've written about just straight Streaming. I belie
-
DynamoDB Streams EventBridge Pipes Enrichment
DynamoDB Streams enrichment with EventBridge Pipes transforms domain data into FHIR healthcare resources using serverless filtering and Lambda.
-
AWS HealthLake Exports
In my previous article I wrote about a Callback Pattern with AWS Step Functions built upon the backbone of HealthLake's export. As much as I went deep with code on the Callback portion, I felt that I
-
AWS Step Functions Callback Pattern
Some operations in a system function asynchronously. Many times, those same operations must also happen to be responsible for coordinating external workflows to provide an overall status on the execut
-
Building Serverless Applications with AWS – Observability
Building Serverless applications can feel a bit overwhelming when you are first getting started. Sure, Event-Driven Systems have been around for many years but this notion of using managed services to
-
Building Serverless Applications with AWS – Security
Serverless security on AWS broken down into three pillars: API Gateway custom authorizers, least-privilege IAM policies, and KMS data encryption.
-
Building Serverless Applications with AWS – API
API Gateway for serverless apps explored through resources, method requests, integration types, models, custom domains, and base path mapping.
-
Building Serverless Applications with AWS – Handling Events
Serverless event handling on AWS explained through SQS, Kinesis, SNS, and EventBridge with guidance on when to use each service in your design.
-
Building Serverless Applications with AWS – Compute
Building Serverless applications can feel a bit overwhelming when you are first getting started. Sure, Event-Driven Systems have been around for many years but this notion of using managed services to
-
Building Serverless Applications with AWS - Data
Serverless data storage on AWS compared across DynamoDB, RDS, S3, OpenSearch, Timestream, and HealthLake with guidance on choosing the right fit.
-
AWS Step Function Versions and Aliases
Up until last week, when you deployed a new version of your State Machine in AWS Step Functions, the old version was gone and the ability to test or rollback was limited by your ability to re-push a p
-
Lambda Extension with Golang
Lambda extensions built with Golang enable cross-language reuse by running a sidecar HTTP API for caching with Momento and DynamoDB read-through.
-
SQS Re-Drive with Golang and Step Functions
SQS dead-letter-queue re-drive automated with Golang Lambda functions and Step Functions provides self-healing workflows for event-driven systems.
-
Infrastructure as Code
Infrastructure as Code shifts deployment ownership to development teams, building a culture of accountability, customer focus, and faster response.
-
Caching with Momento and Golang
Caching. Simple. Useful. This architectural topic applies to a serverless app as well as an app with servers. Some functions never need caching, and some benefit from it right as the first user traffi
-
Serverless, a CTO's Perspective
I've been following along the past couple of weeks in the "wake" of the article by the Prime Video Team. I've seen a lot of rebuttal-type articles by some folks that I respect so I didn't want to cont
-
Golang Private Module with CDK CodeBuild
Golang private modules in AWS CodeBuild require specific configuration with .netrc files and GOPRIVATE variables in your CDK CodePipeline setup.
-
Custom API Gateway Authorizer with Golang
One of the nice things about building with Serverless is that you can design things in a way that the pieces are composeable. This means that you can put logic cohesively with other like-minded logic
-
Building Golang Lambda Functions
Golang Lambda functions with CDK explored through entry points, runtime selection, environment variables, and linker flags to reduce binary size.
-
Choosing Go when Building Lambdas
So you've decided to build your first or your 500th Lambda function with AWS. Congratulations! That in and of itself is a great decision that will set you up on a solid foundation for operational exce
-
Testing Step Function workflows Locally
If you've been following along for a bit, you know how much of a fan of Serverless I am. And even more specifically, how much I love Step Functions. If you have the problem of needing a highly availab
-
CDK ASL Definition Extractor
I've been working a good bit lately to push testing down when using Step Functions and building some patterns with AWS State Machines Locally. In that same spirit, I'm wanting to be able to create the
-
Intersection of Technology and People
There is so much buzz in the Serverless world about scalability, reliability, and nano-sized functions with the ability to generate faster speeds to market. These points are no doubt true and there ar
-
Cross-Origin Allowlist with API Gateway
Cross-Origin Resource Sharing is a topic that most developers don't generally like to talk about it. It is usually a higher-level item that "is just in place" when building and shipping APIs. However,
-
Event-Driven Serverless Data Architecture
Follow me along on a journey toward data unification. One of the applications that I work on is a modern, distributed, event-driven and serverless-based architecture. What that means is that data is c
-
EventBus Mesh
EventBus Mesh pattern connects multiple EventBridge buses to isolate microservice boundaries while enabling cross-domain event-driven communication.
-
Subscribe SNS to EventBridge Pipes
I've been thinking and working hard on how I can start to introduce EventBridge and Pipes into some of my existing applications. Unfortunately, I have SNS in front of a lot of my service code and you
-
Canary Deployment for AWS Lambda
In life, when working on anything, small and iterative changes give us the best opportunity for feedback and learning. And it's through that feedback and failure even that we get better. The same thin
-
BatchGetItem with Golang
DynamoDB BatchGetItem with Golang retrieves multiple items by key in a single call using the AWS SDK BatchGetItemPagesWithContext function.
-
Common AWS CLI commands and explanations
AWS CLI commands reference covering SNS, SQS, S3, CloudFormation, CodeCommit, Cognito, and Kinesis with practical examples and explanations.
-
Parsing a Parquet file with Golang
parsing Apache Parquet format stored in S3 using Golang
-
Streaming DynamoDB to EventBridge Pipes
Stream AWS DynamoDB changes to a Lambda via AWS EventBridge Pipes, Rules and CDK
-
Extending and Customizing the JWT from Cognito via AWS Lambda using Go
Cognito JWT customization using Go Lambda triggers lets you add private claims to ID tokens through the PreTokenGeneration user pool trigger.
-
Unmarshalling a DynamoDB Map into a Go Struct
DynamoDB map unmarshalling in Go lets you convert nested key-value attributes into strongly typed structs using custom UnmarshalDynamoDBAttributeValue methods.
-
Handling Change with AWS Healthlake
AWS HealthLake change data capture using CloudTrail, EventBridge, and Step Functions enables event-driven workflows for FHIR resource mutations.
-
Mapping AWS State Machine output to API Gateway response with VTL
VTL mapping templates in API Gateway transform Step Functions output into custom HTTP responses with dynamic status codes and JSON payloads.
-
Creating an AWS Cognito User with an Auto-Incrementing ID using AWS Step Functions
Creating a Cognito User with AWS Step Functions native SDK integrations
-
API Gateway Base Path Mapping
API Gateway base path mapping with CDK routes multiple REST APIs under a single custom domain name while disabling default execute endpoints.
-
Querying AWS Healthlake from Go
AWS HealthLake querying with Go requires signed REST API requests to fetch FHIR Bundles and Patient resources from your datastore endpoint.
-
Handling "Poison Pill" Messages with AWS Kinesis and Lambdas
Kinesis poison pill messages block stream processing for hours when Lambda event sources fail, but CDK event source configurations can solve this.
-
Creating an Async Integration with AWS Step Functions from API Gateway via CDK
Step Functions async integration with API Gateway via CDK enables durable webhook-style endpoints that return immediately while workflows execute.
-
Tracing HTTP Requests with Go and Datadog
HTTP request tracing in Go with Datadog wraps the standard HTTP client to generate spans with method and URL details in your flame graphs.
-
Observing Lambda with Datadog and Golang
Lambda observability with Datadog and Golang covers setting up structured JSON logging, distributed tracing with spans, and correlating them together.
-
re:Invent 2022 re:View
re:Invent 2022 recap
-
AWS CDK Pipeline
AWS CDK Pipelines construct provides an opinionated CI/CD pipeline with self-mutation, cross-account deploys, and automatic source monitoring.
-
Intro to CDK
AWS CDK lets developers define cloud infrastructure using familiar programming languages like TypeScript, enabling testing and reusable constructs.