“We don’t need a designer for this.” (Yes, you do.)

By on in Design

Design is an important part of the development process and we don’t want you to take it away without considering the risks.

Carbon Five has been practicing design for 10 years and in that time we have had the privilege of working with many design-driven companies. However, even the most design-focused companies get cold feet. Here are some things we have learned over the years on the (thankfully rare) occasion the value of design is called into question. Continue reading …

The First Rule of Agile is Don’t Talk About Agile

By on in Product Management

I asked a group of fellow product managers if they’ve ever read through the Agile Manifesto with product owners / clients. They all said “no”, and the general consensus was that doing so wouldn’t be well received. This is interesting. Even though Carbon Five is well-respected for our process, and we definitely practice agile, we’re guarded about discussing it. Continue reading …

Comparing Dynamic Supervision Strategies in Elixir 1.5 and 1.6

By on in Development, Elixir


Let’s say you’re managing complex process state in your Elixir application and you need a way to spin up and down new processes as your app runs. This requirement is known as dynamic supervision, the ability for a supervisor to add processes to its supervision tree at runtime.

This post will explain how to implement a process under dynamic supervision with Elixir 1.5, and discuss how Elixir 1.6’s new DynamicSupervisor is easier to configure and is more flexible.

Continue reading …

An Introduction to ADTs and Structural Pattern Matching in TypeScript

By on in Development


To quote Rúnar Bjarnason:

One of the great features of modern programming languages is structural pattern matching on algebraic data types. Once you’ve used this feature, you don’t ever want to program without it. You will find this in languages like Haskell and Scala.

I couldn’t agree more myself. That said, I spend most of my time writing programs with languages that don’t have first-class support for algebraic data types (ADTs). So what’s a programmer to do? Continue reading …

Taking Elm for a Test Drive

By on in Development, JavaScript

Elm emerged on the scene in early 2012 as a strongly-typed, functional language that compiles down to Javascript. With its architecture and type system, it claims to provide bulletproof guardrails to help developers build systems that are highly reliable, with “no runtime exceptions in practice”.

Elm prides itself on having a low barrier of entry – it can be introduced as a component into an existing web app, so long as your app can provide it a self-contained div. In fact, the creators of Elm strongly advocate taking an incremental approach to introducing Elm into your systems.

Lately, a few Carbon Fivers and I have been taking the language out for a spin and discovering what it means to write software systems in Elm. In this post, we’ll walk through what it looks like to take a small form widget written in vanilla jQuery and convert it to Elm, picking up language basics and learning to write apps the Elm way. We’ll also discuss the unique feature set that makes Elm apps so reliable.

Continue reading …