I was recently tasked with ensuring that objects could not be accidentally deleted or overwritten in an S3 bucket. In my scenario, the bucket stores deployment artifacts. A build pipeline uploads files to the bucket, and EC2 instances download those same files during bootstrap. …


‘Big Data’ is a huge trend in technology today, and AWS has many offerings that allow you to perform complex data analyses. The goal of this article is to introduce some of the very basics of Big Data in AWS. There are many ways to store, query, and visualize data…


You’ve embraced infrastructure as code (IoC) and painstakingly created Terraform or CloudFormation to model your EC2 Instances, AutoScaling Groups, ECS clusters, and everything else. The devops and development teams have committed to only modify and create infrastructure using your chosen IoC tools — but, surprise, some people just won’t comply…


A step by step tutorial on consuming a DynamoDB Stream using AWS Lambda in C#

Event-driven programming is all the rage in the software world today. There’s a lot to be said for building a system with loosely coupled, independently deployable, and easily scalable components. Serverless tools can be leveraged to create some of those components; one AWS, that often means using DynamoDB and Lambda…


If you’ve spent years working with relational databases, getting started with Amazon’s DynamoDB may feel intimidating to you. Traditional relational databases were optimized for storage; DynamoDB is optimized for performance. Tables exist independently; there is no ‘Join’ clause to query records from more than one table at a time. …


Whether its “Hey Siri”, “OK Google”, or “Alexa”, voice user interfaces (VUIs) are growing in popularity by the day. Although the most common way to interact with these assistants is still via a smartphone, they are more frequently being built into all kinds of devices from speakers to televisions to…


Picking up from Part2, we’re going add the final component of our application — a message queue. The specifics of this example will seem bit contrived, but the goal is to decouple our publisher and worker, use Docker to launch a RabbitMQ container, and use Docker Compose to orchestrate the…


Picking up from Part1, we’re going to be containerizing the application we’ve built. Containerization is an approach where an application and its dependencies are packaged together and and run in an isolated environment. A VM (or physical machine) runs the container host, instead of running our applications directly. The container…


The goal of this series is to introduce some of the technologies we use at Trimble MAPS. We’re going to build a web application that will accept HTTP messages from a client, publish them to a RabbitMQ message queue, then consume those messages from the queue. We’ll also use Docker…

Matthew Harper

Director, Software Engineering @ Trimble Maps

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store