The problem How to develop, run, and test AWS applicaitons locally The solution LocalStack is a cloud service emulator that supports a great number of AWS services like Lambda, S3, DynamoDB, SQS, SNS, and many more. Let’s get it installed and started: pip install localstack localstack start -d There is a bit of configuration if you do not want to install other dependencies: alias laws='AWS_ACCESS_KEY_ID="test" AWS_SECRET_ACCESS_KEY="test" AWS_DEFAULT_REGION="us-east-1" aws --endpoint-url=http://localhost:4566' Finally, we can execute our favorite AWS commands: AWS: LocalStack full article
The problem How to measure the performance of a software development team The solution Lead Time for Changes: how long does it take for a commit to get to production Deployment Frequency: how often does a team release to production Change Failure Rate: what is the percentage of deployments causing failure in production Mean Time to Restore: how long does it take to recover from a failure in production Based on these metrics, teams can be categorized in groups from low performing to elite. Management: 4 Key Metrics full article
The problem How can I pass custom parameters to synthesize templates? The solution cdk.json has a context section that allows us to add custom parameters { "context": { "custom": "parameter" } } The way we access that context is through the app node: from aws_cdk import core app = core.App() app.node.try_get_context("custom") AWS CDK: Context full article
Having worked for a while with terraform, I always felt that learning a whole new DSL to provision infrastructure was a bit unnatural. Therefore, when I started hub, I decided to look around and check for alternatives. The AWS Cloud Development Kit or AWS CDK allows you to code your infrastructure with a regular programming language, e.g. python, and immediately felt more natural. The CDK has the following base components: AWS CDK: Custom Constructs full article
One of the highlights in my week are talking to folks during 1:1s. I have a few guidelines that I follow for those interactions with my teammates: I let them choose when and how often to have their 1:1. I get to know them and their aspirations. I elaborate any company announcements, changes, or anniversaries. We create a development plan around their goals and regularly check in to see their progress. Management: 1:1 full article
The problem Deploy quickly without never-ending yaml configurations. The solution Combine kustomize and helm for best results. From helm, use the prebuild manifests and default values, and from kustomize, use the pulling mechanism for helm charts and overlays for further configuration. Let’s first start with configuring the base by specifying the chart, version, repo, namespace, and default set of values: helmCharts: - name: vault-secrets-operator repo: https://ricoberger.github.io/helm-charts version: 1.16.5 releaseName: vault-secrets-operator namespace: vault valuesFile: . Kubernetes: kustomize and helm full article
Team decision making can be an easy or a hard process depending on the team dynamic. No matter what the situation is, there are two major factors that come into play: Each team member should have a voice The team should avoid paralysis by analysis Let’s geek out and create a flowchart that will drive us through the decision process using the DOT language: digraph G { problem [ label = "The problem"; shape = rect; ]; opinions [ label = "Pool of Opinions"; shape = rect; ]; vote [ label = "Team vote"; shape = rect; ]; decision [ label = "Clear Decision? Management: Decision Making full article
I sometimes find myself in situations where the concept of a leadership style is brought up. While, this discussion progresses, it usually ends up with a conclusion that leaders have different appoaches, and every leader has a style. For me, a leader should be: Honest I have committed to practice transparency with my team as transparency builds trust. Humble I have committed to FIRST listen and solicit feedback before I express my opinions. Management: Leadership Style full article
Birthdays are wonderful occasions and celebrating with your team is showing that you care. In order to make sure I follow up on every birthday, the first thing I do with a new team is setup reminders in Slack for each team member’s birth date. Management: Birthdays full article
One of the practices that I have adopted is to ask if any team member experiences a blocker or a technical challange and pair up with them for an afternoon for a hands-on technical implementation or debugging. That allows me to keep a good pulse on the team, the overall technical direction, opportunities for coaching, and getting to know people by establishing closer relationships. Here are two of my most recent experiences: Management: Pair Up with Engineers full article
Occasionally, chickens will get some sort of a wound either from predators or in my case, the new puppy. After trying a couple of methods to treat the wound what worked amazing was: Clean the wound Apply Blu-Kote The latter nicely closed the wound and kept it clean until the hen was back to normal. Homestead: Treating chicken small injuries full article
Creating and configuring new source code repos can be a tedious process and prone to misconfiguraion. Here are some examples of easy to forget configurations: access branches and protection rules webhooks deploy keys labels default files and more One approach to enforce standartization is to handle repo creation and configuration with infrastracture as code. Terraform conveniently has the github provider that empowers us to perform this task fairly easily. Github: Automate Code Repos full article
Occasionally, you will need to look at what terraform does behind the scenes in order to decipher some weird edge case. In that scenario, we just need to set an environment variable: TF_LOG=DEBUG Terraform: Enable Logs full article
The usual approach to consume cloud services from Kubernetes is to create a service account with the appropriate permissions, generate a key, store that key in some secure location, create a secret with that key during deployment, and mount it into a pod for the workload to consume. The biggest downsides in this scenario, are twofold: Where do we store the key securely? How to implement a key rotation policy? Kubernetes: Workload Identity full article
Untoolia strives to rethink and take a fresh look at building software for educational pruposes. It aims to borrow concepts from agile, accelerated software development in order to introduce an alternative to the traditional monolithic, vendor-dependent software. Budget Small pre-K and private schools have to be mindful of spendings. The focus needs to be on the children and their development rather than trying to cover ever increasing IT cost. The biggest cost factor is paying for resources that are idle. Untoolia Tech Stack: Overview full article
General Guidelines This is the second of a series of Kubernetes sessions. There will be different levels of complexity. We start with beginner and move up to more advanced topics. This session will be recorded. Please turn off your camera/audio, if you do not want to be seen/heard. This is an interactive session. Feel free to ask/answer questions, share your experience at any time. Collaboration is encouraged. If there are areas that you would like more details, please make a request to cover the topic at a later time. Kubernetes Training: Services full article
General Guidelines This is the first of a series of Kubernetes sessions. There will be different levels of complexity. We start with beginner and move up to more advanced topics. This session will be recorded. Please turn off your camera/audio, if you do not want to be seen/heard. This is an interactive session. Feel free to ask/answer questions, share your experience at any time. Collaboration is encouraged. If there are areas that you would like more details, please make a request to cover the topic at a later time. Kubernetes Training: Deployments Part 2 full article
General Guidelines This is the first of a series of Kubernetes sessions. There will be different levels of complexity. We start with beginner and move up to more advanced topics. This session will be recorded. Please turn off your camera/audio, if you do not want to be seen/heard. This is an interactive session. Feel free to ask/answer questions, share your experience at any time. Collaboration is encouraged. If there are areas that you would like more details, please make a request to cover the topic at a later time. Kubernetes Training: Deployments Part 1 full article