All Blog Posts
Unlimited PTO can be a Manager's Tool
July 31, 2023While there are pros and cons of unlimited time off policies, I want to cover a pro that I was exposed to recently: the ability for managers…
Invalid PostgreSQL Indexes
June 30, 2023I want to share a PSA I learned about recently at work. If you use the CONCURRENTLY option to rebuild an index in PostgreSQL you will be…
My Employee Trading Card
May 30, 2023Prior to the first one-on-one in my new role, my manager granted me access to a shared one-on-one document. Within this document, they…
Questions to Ask an Interviewer
April 30, 2023Continuing on the theme of sharing resources for job-searching, I want to share my collected list of go-to questions to ask during…
Job Search Checklist
March 28, 2023Last month, I became one of the more than 100,000 U.S-based technology workers laid off in 20231. As a fan of resources like Getting Things…
Extracting 2022 Gratitude Entries
February 28, 2023Following a post from 2021, my last post reflected on the entries in my gratitude journal and my takeaways from the year. In the 202…
2022 Gratitude
January 30, 2023Following last year's post in which I reviewed entries into my daily gratitude entries, I have decided to do the same again this year. My…
Creating Org-roam node from an elfeed entry
December 29, 2022I had a very Emacs-y day while on PTO recently. It began with starting up elfeed to read articles in my RSS feed. After coming across an…
Changed Opinions - Livebook Desktop
November 30, 2022A few months ago, the Livebook team announced the Livebook Desktop app, which bundles everything necessary to run Livebook locally. This…
Changed Opinions - Alternative Escape Sequence in Vim
October 31, 2022In this post, I provide a brief background on using alternatives to the ESC key in Vim (and Vim-like emulators) and how my opinion has…
Compiling Erlang Documentation
September 30, 2022If you install Erlang with kerl (which asdf does), you can configure it to build its documentation by setting the environment variable KERL…
Add Timestamps to org-roam Files
August 31, 2022In this post, I cover adding timestamps to track creation and modification times in org-roam files and how to update existing nodes to…
Just-in-time Feature Surfacing
July 31, 2022Last week I was in a coffee shop when I overheard someone ask their friend if they successfully connected to the Wi-Fi. In disbelief, they…
Using the new GitHub feed
June 30, 2022In this post, I want to share how some of my usage patterns in GitHub have changed. These changes are not related to the code or project…
Adding commit message trailers with Magit
May 27, 2022In this quick tip post, I cover how adding messages such as Co-authored-by or Signed-off-by with Magit. These commit annotations are…
--if-missing flag for standalone CLI wrappers
April 30, 2022If you work on any Phoenix applications that leverage the standalone versions of build tools like esbuild, Tailwind, or Dart Sass, you are…
Open Source Opening My Eyes
April 23, 2022Update Added additional donation links suggested by @d12frosted The world of open-source has opened my eyes to many things. It is hard to…
EXPLAIN Query with Ecto
March 31, 2022In a previous post, I gave a brief introduction to understanding the results of an EXPLAIN query (from postgres, at least). In this post, I…
Taking Breaks
February 27, 2022I recently joined a weekly "life retro" group that some former teammates have been running. Similar to how a sprint retrospective provides…
Running Async Shell Commands with Projectile
January 31, 2022In this quick tip post, I wanted to highlight a function from the projectile project that I have been using a lot lately. If you are…
2021 Gratitude
December 30, 2021For the past few years, I have been working on the habit of listing three things I am grateful for or excited about. For most of 2021, I…
Pattern Matching Empty Maps with Elixir
November 30, 2021Unlike lists, using an empty map in pattern matching does not only match empty maps; it matches empty and populated maps. This was a bit of…
Using Mix.install for Benchmarks
October 30, 2021In a previous post, I covered using the recently released function, Mix.install. In this post, I cover how to use Mix.install for…
Intro to Postgre EXPLAIN
September 30, 2021For most of the database performance work I have done, simply looking at the queries has been enough to identify the issue. However, I've…
Adding Randomness to Test Data
August 30, 2021While tests can help improve the robustness of our applications, there is a limitation inherent to example-based testing - the sample data…
Creating Development-Specific Migrations with Ecto
July 31, 2021Inspired by the setup script used by my previous team and GitHub's Scripts To Rule Them All repository, I recently set out to create a setup…
Creating More Specific Factories with Traits
June 30, 2021In a previous post, I wrote about creating more specific FactoryBot factories using FactoryBot's inheritance and nested factories…
Using Mix.install
May 28, 2021Despite being a compiled language, Elixir has provided support for running code in a single file as though it were a scripting language…
Running a Phoenix App in an iframe
April 26, 2021For a side project, I am working on building a Jira Connect application using Elixir and Phoenix. With a Connect application, your UI is…
Singing 99 Bottles of Elixir
March 30, 2021At work, we have begun reading through 99 Bottles of OOP as a book club book. The tongue-in-cheek tl;dr of the book, laid out in the preface…
A Quote Against Imposter Syndrome
February 26, 2021I want to share one of the quotes included a few months back in James Clear's weekly 3-2-1 newsletter because it has provided me with a new…
Receiving Code Review Feedback
January 20, 2021Code reviews are a powerful tool for spreading knowledge, improving code quality, and, when done right, can strengthen team bonds. Often…
Leveraging the GitHub CLI During Hacktoberfest - Maintaining
December 04, 2020In a previous post, I mentioned using the GitHub CLI during Hacktoberfest to make it easier to contribute to projects. This year, I was also…
Leveraging the GitHub CLI During Hacktoberfest - Contributing
November 04, 2020Recently coming out of beta, the GitHub CLI is a tool for interacting with GitHub directly from your terminal. A successor to hub, CLI…
Contributing GitHub Actions
October 28, 2020tl;dr When possible, use a fork to run GitHub Actions before merging them into a repository GitHub Actions is a feature that enables…
Concurrent Ruby - Lazy Threads
September 10, 2020In this post, we try to understand how the concurrent-ruby gem leverages Threads within its Async module. In a previous post, we began the…
Initial Hash Value in Ruby
August 27, 2020Ruby's Hash.new has three different options for initialization. These options differ in how they handle missing keys. In this post, we will…
Writing While Remote
August 04, 2020At the time of writing, many people around the world are forced to work from home as a result of the COVID-19 pandemic. This sudden…
Comparing Ruby's Splat with JavaScript's Spread
July 31, 2020At work, we have been developing a mentorship and training program to help provide our team members time for deliberate practice. A recent…
Decision Making Spectrums
June 19, 2020My friend and former co-worker Charlie (@C-Saunders) and I make a point to periodically catch up with each other. Because I am lucky and…
Concurrent Ruby - Hello, Async
May 14, 2020Over the last few years, I have been fiddling on-and-off with Elixir and have loved it. One of the reasons there is so much hype around…
Referencing a local gem in Gemfile
April 10, 2020In a recent post, I discussed my new debugging technique of pulling down third party libraries. While having the code local to read and…
How I Debug My Dependencies
March 08, 2020Recently at work, I decided I wanted to set up the annotate gem for one of our Rails applications. I expected this to be a quick win to…
Deploying a Simple Go FaaS
April 12, 2019This post covers building a function as a service using: golang - I've been interested in playing around with golang and thought this would…
Hacktoberfest 2018
October 30, 2018This post is serving as my fifth and final (required) open source Pull Request for Hacktoberfest 2018. This method of getting my final Pull…
Glossary of Homebrew Terms
October 24, 2016While listening to the most recent episode of the Changelog podcast, Homebrew and Package Management with Mike McQuaid, I began to realize…
Creating More Specific Factories with Inheritance
November 17, 2015Update (6/21) Post has been updated to reflect rename from FactoryGirl to FactoryBot. I also have a new post where I discuss using traits…
Trip Picks
November 09, 2015NYC Coffee Shop Hipster This week I decided to take a long weekend off work and spend it in New York City. This will come as no surprise to…
Using Vim to Drive TDD
November 08, 2015A lot of recent developments in my programming career have been inspired by thoughtbot. This began as the result of using their gems and…
GIF Picks
November 01, 2015April 2019 Update Popkey is no longer serving gifs: As a result, you will need to look elsewhere for your gif fix (and some imgs below are…
The Power to Say No
October 27, 2015A few months ago I was promoted to Lead Software Developer. I had been taking on the responsibilities of a lead developer over the past year…
Spotify Running
October 25, 2015Inspired by the Ruby Rouge's picks section and Tim Ferriss' 5-Bullet Fridays I have decided to start creating short, weekly posts…
Making NERDTree and CtrlP Play Nice
September 19, 2015I am a few months in to my switch to Vim and so far have been working to keep a fairly minimal vimrc and not use too many packages. There…
Why I Love the Cloud
May 09, 2015Disclaimer: While I know it is overused, I am going to use the term "cloud" a lot. By cloud I mean data stored remotely that can be accessed…
My First Open Source Contribution
May 03, 2015In working towards my original goals, I finally opened my first pull request on an open source project. For my first project I chose Rubocop…
Adding Carnival Comments to a Jekyll Blog
April 30, 2015Update April 2019 The carnival repository has been archived and the site fails to load, so it looks like the service is no longer being…
2015 BarCamp Orlando
April 18, 2015While not on the scale of a Silicon Valley or New York City, Orlando is working to gain traction to have a booming tech scene. I think a lot…
Are Your Class Methods Actually Private?
April 09, 2015While no methods in Ruby are really safe, even when private, it's possible the class methods you think are private aren't actually private…
Bulk SQL Statements with ActiveRecord - delete_all
March 28, 2015New Rails developers tend to fall in love with ActiveRecord. More specifically they fall in love with the "magic" of ActiveRecord - the…
The Anatomy of a Ruby Class
March 15, 2015In this post I am going to break down the basic parts of a Ruby class. For this example we will look at the following Cat class: Creating an…
Memoization in Ruby
March 08, 2015Meomization in Ruby is a pretty simple to accomplish. You basically use an instance variable and the ||= operator: How ||= works The…
Return Struct as JSON
March 01, 2015I am working on a side project in which I want to use Sinatra as a simple backend and experiment with a more rich Javascript front end. The…
Why I made this blog
February 28, 2015Like many developers I felt the need to create a blog. The dream is, it will provide some benefit to other software developers around the…