In this blog post, we explore the art of seeking help as a software engineer, emphasizing the significance of providing context and prerequisites to ensure clear and actionable responses. By structuring inquiries with relevant details like issue descriptions, code snippets, and error logs, engineers can obtain quicker and more accurate solutions. Whether seeking assistance internally within a company or externally in developer communities and open-source projects, these skills foster a positive, supportive, and successful community. Mastering this art empowers engineers to make meaningful progress in their projects while contributing to a thriving knowledge-sharing community.
As a software engineer with experience working on Kubernetes clusters at three different companies, I've had my fair share of mistakes and learnings. In all honesty, I initially had little knowledge of what I was doing and made several mistakes. However, these mistakes have been valuable opportunities for learning and growth. Now, as part of the foundations organization at my current company, I've had the privilege of learning even more from my skilled coworkers who are responsible for operating our clusters. In this blog post, I will share my past experiences, including the mistakes I made and the valuable lessons I've learned along the way.
This blog post will discuss the question that plagues many engineers - whether or not to work towards becoming a staff engineer. I will be sharing my personal journey towards becoming a staff engineer at Brex. I will discuss the motivations behind my decision to pursue this career path, the challenges I faced, and the skills and experience I needed to develop to succeed. Through my own experience, I will provide insights into the roles and responsibilities of a staff engineer, the traits and competencies required to excel in this position, and the benefits and drawbacks of pursuing this career path. By the end of this post, you will hopefully have a clearer understanding of what it takes to become a staff engineer, and whether or not it's a goal worth pursuing for your own career.
Over the last few months I've started to use Github Actions in some of my personal projects. This post goes into some quick initial thoughts on the product and experience.
Brex adopted the Elixir programming language as its initial primary development language. However over the years we have decided to divest from Elixir and instead migrate towards Kotlin. This post goes into my *personal* ideas on why Elixir didn’t succeed at Brex so that the community and other companies can avoid some of our mistakes.
In the United States (as well as other locations), we have a progressive income tax system. What this means is that the percentage or amount you pay in taxes increases as your income increases, basically higher income individuals pay a larger percentage of their income in taxes. While working on a side project I was unable to find an algorithm explanation of how to calculate progressive income taxes based on brackets, so this post goes into detail on a simple algorithm to do so.
Getting back into blogging and revisiting this website!
Brex has been developing in Elixir for the past four years, and during this time we have come across a number of learnings around developer productivity in Elixir as well as for hiring Elixir developers. Hopefully these lessons can help other organizations both adopt and rapidly scale their Elixir usage without hitting some of our speed bumps.
Last year I started a new job at Brex where Elixir is the primary programming language for business logic. This was my first real adventure into Elixir after working in Ruby (mostly) for my professional career. Since José Valim came from the Ruby world, Elixir was a common buzzword I heard for years. I had done a tutorial or two here and there but never gotten to really use it. Now, looking back at the past year I've become fairly comfortable with Elixir, and wanted to outline some of the things I really enjoy about Elixir and some of the things I miss from Ruby.
Back in school, teachers and TAs made commenting your code seem like a necessity that everyone constantly does as a software engineer. Without comments, you shouldn't consider your code complete. However, since working in industry I find it much different in practice. This post outlines my own observations on when software engineers actually comment their code and when it's important.
Onboarding can be a very hectic and stressful time when you are starting a new job. New coworkers to meet, new codebases to learn, new languages to learn, new technologies, new processes, and the list can go on and on. Good onboarding materials and processes can go a long way when you're first starting out. However, it shouldn't just be a one way street where the company gives to you and you don't give back anything in return. Onboarding should be a collaborative and incremental process that every new hire actively contributes to. Things change from new hire(or onboarding class in larger companies) to new hire, especially in a fast moving startup. It is therefore not only up to the existing members but also the new hires to contribute to the onboarding experience and make it better over time.
I recently started coding in Elixir professionally. It's relatively easy to develop and add new features at work where most things are set up and running. However, I wanted to get a better understanding of setting up an Elixir project and tooling from scratch. So I decided to start simple and try to write an Elixir wrapper for a 3rd party API. Here are my thoughts and learnings from starting a new Elixir API Wrapper from scratch.
Recently I wanted to create a wrapper for a third party API. It wasn't an API I used myself(at least not at the moment), but seeing as there was no wrapper for this language yet I thought I'd give it a go. Luckily this company provides a test account and sandbox environment for every account free of charge. However, I realized this is not a common thing and makes it incredibly difficult to provide wrappers for third party API's unless you are actively using the API and are a paying customer in most cases. Wouldn't developers and the companies be better served if anyone could easily create a test account for an API and develop against it?
Here are some tips and tricks I used during my interviews that helped me perform better. This is by no means a fool proof guide to getting a job, but can definitely help you to perform better.
Software engineering interviews can be incredibly stressful and difficult. Recently, I went looking for a new job and threw myself back into this anxiety inducing process. In order to perform better in my interviews I came up with a 7 step game plan for technical interviews. This is by no means a fool proof guide to passing technical interviews, but can definitely help you to perform better.
Software engineering interviews can be incredibly stressful and difficult. Recently, I went looking for a new job and threw myself back into this anxiety inducing process. Here are some tips and tricks I used to prep during my interview process that I believe helped me perform better and feel more prepared. This is by no means a fool proof guide to getting a job, but can hopefully help you to perform better.
In software development there are a number of things that once had a purpose but after years of refactoring and feature development may no longer serve a purpose. It's important to never accept something as necessary without understanding why it exists and if it's still useful. When you can, take your time to follow and understand every code and system you see so you can become a better developer and help your fellow developers.
Gatsby.js is a fantastic framework for developing statically generated websites using React. Plugins are a necessary part of Gatsby that allow you to quickly and easily add functionality to your Gatsby generated site. However, a lot of these plugins are updated very frequently and at the same time which can lead to a rather annoying number of pull requests when coupled with Dependabot.
Gatsby.js is an up and coming technology for building simple statically generated websites. It has seen a huge adoption, and seemingly everyone in frontend development has heard about it or is talking about it. However, this has led to people trying to use Gatsby in the wrong places instead of other technologies better suited for that situation. This post talks about me falling into this subgroup as well as some of the cases where you should use Gatsby and when you shouldn't use Gatsby.
This tutorial shows how to automate deployments to Kubernetes using CircleCI. This tutorial uses AWS services like ECR and EKS, but it can be generalized and changed for other Kubernetes solutions. This post will go through the entire CircleCI flow of deploying changes for your app to Kubernetes from updating the image and storing it in a repository to deploying the new application on EKS.
This is a tutorial about how to deploy a Gatsby.js application to an S3 bucket using CircleCI.
In order to hide your IP address and to try and limit throttling when web scraping, it might be a good idea to use a proxy such as Tor. This post describes how to use Python based web scraping tools and Tor to hide yourself when scraping websites for data. However, it can also be used more broadly when using Python to make requests to hide your actual IP. I do not condone the use of this information for any illegal or illicit activity.
This is a tutorial about how to deploy a new Docker image to your Kubernetes worker nodes with Codeship when you've deployed your cluster on EKS. This was based on a combination of tutorials found on Codeship and comments and extraneous links. The documentation on Codeship requires you to look in multiple places and is outdated in some cases, so hopefully this aggregates it in one place and updates it.
This is a tutorial on how to setup an AWS Elastic Kubernetes Service (EKS) cluster and deploy a Docker container service to EKS. We will mostly follow the AWS tutorial but make some changes to deploy your personal containers instead of the ones provided by the EKS tutorial. This process was used to deploy our Next.js Application.
This is a tutorial on how to setup a simple Docker image for a Next.js application so that we can deploy the Docker image to a container registry. We will use AWS Elastic Container Registry (ECR) in this tutorial as our Docker container registry. This way we can access our Docker image from other machines and deploy the image to something like AWS Elastic Kubernetes Server (EKS) or AWS Elastic Container Service (ECS).
Setting up Google Optimize for A/B experiments in a Single Page Application(SPA)
Using AWS Lambda Functions and Kinesis Streams to process and stream Segment.io events