RSSAmplifier

Blog

Aaron Renner’s Blog

Personal blog for Aaron Renner covering topics including Elixir, Software Architecture, and various tips and tricks picked up as a Senior Software Engineer.

localhostRSS feed ↗10 posts

Latest posts

Walkthrough of Elixir’s Adapter Pattern

Sometimes we need to be able to change how parts of our application behave depending on the environment we’re running in. Examples of this include: Toggling sms gateway adapters (production sends a real sms while staging redirects sms to a test phone number) Testing with a stubbing library like Mox If the behavior change is large enough and needs to happen application-wide (like using a different…

Application Layering - A Pattern for Extensible Elixir Application Design

--> Introduction When designing any application, the question is inevitably raised: “where should this code go?” Many times this answer isn’t readily available, resulting in code that ends up in a project’s junk drawer (like utils or models). If this happens enough, the codebase becomes tangled and the team’s ability to maintain the software over time is significantly decreased. This is not a sign…

Conference Talk: Growing Applications and Taming Complexity

Earlier this month, I finally got to give my ElixirConf talk “Growing Applications and Taming Complexity”. This was my first full-length conference talk and it was an amazing experience. I didn’t realize the momumental amount of work that goes into giving a presentation, but my family stuck by me and I’m super grateful.

Lightning Talk: Elixir Deployment Tools

A couple of weeks ago, I had the opportunity to give a lightning talk at ElixirConf 2017 about my experiences in the last few months working in Elixir’s deployment ecosystem. In this talk, I cover using distillery to build OTP releases, edeliver for building and deploying to remote machines, and conform for configuring application settings at runtime.

Lightning Talk: Mocks, Adapters and Micro-services

Last fall, my employer generously sent me to ElixirConf 2016 in Orlando, Florida. While I was there, thought I’d put together a lightning talk about our experiences testing our Elixir API adapters in our microservices environment. Thanks to ConFreaks, I’m able to post the video of my talk here for posterity.

Navigating Vim projects like a Boss

I’ll admit it, I’m a Vim addict. I started using Vim while programming Ruby on Rails and quickly got hooked on vim-rails ’ project navigation shortcuts. Commands like :A (meaning “alternate ”) to jump between a Ruby file and its spec were huge timesavers. There were also other cool commands to jump to a specific type of file. :Econtroller - Jump to controller :Emodel - Jump to model :Emigration -…

Phoenix acceptance tests on Semaphore CI

Plataformatec just published a great introduction to testing Phoenix apps with Hound. Hound is really cool because it gives you a nice API to build browser-based acceptance tests that exercise your complete application — from your Ember/React/Angular frontend to your Phoenix backend.

Running PhantomJS Ghost Driver as an OS X service

Recently, I have been experimenting with the Phoenix Framework and testing tool called Hound . Hound allows you to write integration tests that drive your app with a headless PhantomJS browser. However, in order to use PhantomJS with Hound you must have a Ghost Driver session running on your Mac. Manually Running Ghost Driver Ghost Driver comes bundled with PhantomJS, and can be installed on OS X…

Building Workflows with Sidekiq Batches

A few weeks ago, Sidekiq’s creator, Mike Perham, posted a great article about how to handle Really Complex Workflows with Batches. His article shows how you can wait for a batch of jobs to complete before moving on to the next job/batch in the workflow.

Eager-loading Polymorphic Relationships in Rails

Update: The internal Preloader class has changed between Rails 3 and Rails 4. The code examples have been updated to reflect that.