Divide Scrum Work More Efficiently with Vertical Slicing

Developing complex custom software applications is difficult, even in ideal circumstances. In a Scrum workflow, it is desirable to have as few stories as possible in progress at any given time. This helps to maximize throughput and to ensure that multiple stories aren’t partially completed in a given sprint without points to show.

Unfortunately, dividing up work efficiently can be a real challenge. Read more on Divide Scrum Work More Efficiently with Vertical Slicing…

Ansible Communication with AWS EC2 Instances on a VPC

I’ve recently started using Ansible to manage Elastic Compute Cloud (EC2) hosts on Amazon Web Services (AWS). While it is possible to have public IP addresses for EC2 instances on an AWS Virtual Private Cloud (VPC), I opted to place the EC2 instances on a private VPC subnet which does not allow direct access from the Internet. This makes communicating with the EC2 instances a little more complicated.

While I could create a VPN connection to the VPC, this is rather cumbersome without a compatible hardware router. Instead, I opted to create a bastion host which allows me to connect to the VPC, and communicate securely with EC2 instances over SSH.
Read more on Ansible Communication with AWS EC2 Instances on a VPC…

Parallelizing Ember Tests Across CI Workers

One of CircleCIʼs killer features is automatic test parallelization: Circle can dramatically improve your build times by divvying up your tests across multiple build containers. Split three ways, this brings our 55-minute build time down to about 23 minutes:

Those three large bars represent our automatically-balanced RSpec test suite. See that lone bar on the right side, keeping container #0 busy while #1 and #2 take a break? Those are our Ember tests. Circle is unable to automatically split them, but we can do it manually! Here’s how.
Read more on Parallelizing Ember Tests Across CI Workers…

Monadt – Algebraic Data Types and Monads in Ruby, Part 2: Monads

In yesterday’s post, I introduced monadt, a gem that adds algebraic data types (ADTs) and monads to Ruby. Today I’m going to dive into how monadt provides monad support, specifically the imperative-looking syntactical sugar you get in languages like Haskell and F#. Read more on Monadt – Algebraic Data Types and Monads in Ruby, Part 2: Monads…

Monadt – Algebraic Data Types and Monads in Ruby, Part 1: ADTs

Functional programming is elegant and expressive. I’ve written before about my love of partial application, and how the funkify gem can be used to bring the power of partial application to your Ruby code. But partial application is just one of the powerful idioms from functional languages that I’d like to borrow in object-oriented languages. I’m also pretty into algebraic data types and monads.

So, continuing my pattern of adding functional concepts to object-oriented languages whether they like it or not, I recently created the monadt gem which adds support for using algebraic data types and monads to Ruby. Read more on Monadt – Algebraic Data Types and Monads in Ruby, Part 1: ADTs…

Effective Agendas Lead to Effective Meetings

While reading an HBR article on writing effective agendas the other day, I had an epiphany. There is no reason anyone should sit through a poorly run meeting. After all, this is a solved problem. As long as the organizer knows what she wants out of the meeting, meetings should be short and to the point.

Read more on Effective Agendas Lead to Effective Meetings…

Navigating Family Emergencies at Atomic with Flexible Scheduling

I recently found myself in a situation where I needed to use an Atomic benefit that isn’t as well codified as some of the others (like vacation time). My wife—who was 31 weeks pregnant at the time—was in a car accident and had to spend a week in the hospital.

When you’re in my position and need to be in the hospital for a week to take care of your significant other, what do you do? Read more on Navigating Family Emergencies at Atomic with Flexible Scheduling…

loading…