Taking a break, 2019

Like last year I’m taking a summer break from open source, including Rusoto. Outside time is good for me I’ll be spending more time outside and less time on a computer until September 2019. There won’t be a disappearing act but I’ll be significantly reducing the amount of time spent on computers for the next few months. Until then!

How much testing is enough?

Most software developers will tell you that tests are good. More tests are better. How much is enough? How can one recognize diminishing returns? What types of tests should be written? Here are some guidelines for determining what a team’s “enough” level of testing is. Definitions and goals unit test: tests a single unit of code. Think a single function or method. If there are more than one or three mocks being used, it’s probably not a unit test functional test: tests behavior of code, staying within a single process integration test: a test that crosses a process boundary.

Don't hot patch

A hot take on hot patching/fixing. Definitions A hot patch, or hot fix, is a method of fixing a critical bug found in production by following a branching strategy that’s outside the norm of software development. Specifically called out in Gitflow, this process is more complex and error prone than treating a critical bug as a regular bug or feature. When following Gitflow, a hot patch can get a fix to production faster by making the change off the master branch, which is then also applied to the release branch.

Chaining Rusoto Futures

Rusoto supports asynchronously running commands to AWS. While immediately making a blocking call to AWS is a common use case, one can create actions to run async and let the tokio runtime handle it. This opens up the ability to run multiple AWS calls concurrently.

If a project sets up infrastructure on AWS, the actions that don’t depend on others to finish can run concurrently. For example: creating an S3 bucket and an SQS queue. Instead of creating a bucket and waiting for the request to finish, then moving on to creating the queue, one can put the Rusoto Futures together and concurrently run them.

In this post we’ll explore to examples of using futures and the Rusoto DynamoDB client.

Repos for getting hired

I’m often involved in hiring. When GitHub links are on a resume, I look at pinned repos and source repos. Here’s a checklist of important items to have in a GitHub public repository to catch the eye of reviewers. Or at least my eye when hiring, and why it’s important. Your goal, my goal Yours: get hired. Mine: make an informed decision about hiring someone who can do the job.

Postgres over TLS with postgres and r2d2_postgres

“Dance like nobody’s watching. Encrypt like everybody is.” In this post we’ll go over how to get the postgres crate and r2d2_postgres working with openssl for connection pooling with TLS. Source code is available. Goal Modern web applications are built with resiliency and fault tolerance in mind. For our example, we’ll be examining parts of a web application backed by a Postgres database. When services launch, their database won’t always be available.

CI/CD Pipeline

Previously, we defined Continuous Integration (CI), Continuous Deployment (CD) and build servers. Now we’ll see how combining these concepts creates something greater than its parts: a true CI/CD pipeline. Continuous Integration and Continuous Delivery are processes that tell humans what techniques to use with source control. Build server is a server, servers or a system that automatically builds and tests code. Putting these concepts together require people following processes so automated tasks execute well.

Build servers, Continuous Integration, Continuous Delivery

Ever hear someone say “CI/CD build pipeline” and weren’t sure that that means, exactly? Let’s define and explore the concepts of: Build server Continuous Integration (CI) Continous Delivery (CD) Three separate ideas Build server is a server, servers or a system that automatically builds and tests code. Continuous Integration and Continuous Delivery are both processes, guiding humans on what to do. Build server (or build service) Whenever code is pushed to the repository, the build server checks out that commit or branch and tries to build the code and run tests.

Taking a break

After three years maintaining an open source project, it’s time to take a few months of me time. TL;DR I’m taking a break to do things I’ve been missing. I will be back, no later than September 1st, 2018. Rusoto history and running an open source project Back in early 2015, Anthony DiMarco and I started Rusoto. Rust’s promises of performance and correctness looked like a perfect match for cloud computing.

Curated list of resources for software engineering

List of links for topics including: Git Branching strategies Ruby Go Testing Cloud and AWS Git Think like a Git Pro Git Branching strategies GitHub flow Trunk based Development Ruby Learn Ruby the Hard Way Go Effective Go Golang Tripping Hazards Testing Practical Test Pyramid https://en.wikipedia.org/wiki/Test-driven_development Red Green Refactor Repeat Cucumber general reference Cloud and AWS Getting Started on AWS This Is My Architecture A Cloud Guru Linux Academy