Story Nanoslicing

By on in Development

It’s the start of a new project for our team, and we’re all excited to get development rolling. The Product Owner’s grand vision sounds great, but how do we get from that vision to the day-to-day detailed stories we’ll need to work on? We’re not about to go off into a cave to build in isolation for months, since we know our understanding of the problem will evolve over time. We want to get a Minimally Viable Product live, see what makes customers happy, and adjust the parts that aren’t satisfying or profitable.

Continue reading …


Creating Successful Online Banking Products – Agile Growth Workshop Recap

By on in Development, Events

Banking and financial institutions are rapidly working on digitizing products to stay relevant and better serve customers, but, the truth is, modernizing banking experiences is incredibly difficult. A digital project in the banking world is nothing short of an order of magnitude. The requirements behind developing successful banking products are staggering compared to the average consumer product, but the high ROI of launching a successful banking app makes it all worth the effort.

Carbon Five hosted a panel discussion on Expert Insights for Creating Successful Online Banking Products. During the conversation, panelists shared first-hand experiences working with some of the most well-known banking and FinTech brands, including Capital One, Citi Ventures Studios, Chime, Commerce Bank, FNBO, Plastiq, Square, Wells Fargo and more.

Continue reading …


A Tale of Two GitHubs: A Practical Guide

By on in Development

Let’s say you have two GitHub accounts: one is a work account that you use for professional projects, and the other is for your top secret hacker projects. This can cause problems like trying to push to a repository with an account that doesn’t have access or having the wrong GitHub author in your commits. For people with 2FA enabled, juggling ssh configs can also be hugely annoying. Here’s how I clone, pull, and push to GitHub repos using multiple GitHub accounts on one computer.

Continue reading …


It’s Never Been Better to Get Started with Cypress Web Tests

By on in Development, JavaScript

If your project could at all be described as a web application, your UX pipeline would likely benefit from adopting Cypress. Beating out Selenium on speed as well as breadth of testing tools, Cypress provides automated testing of your website’s critical features in a matter of minutes.

A testing framework built on top of many familiar techs — Mocha, JQuery, Chai — Cypress can be a frustrating product because, though it looks familiar, it behaves in unfamiliar ways. But its powerful tooling means mastering this framework is well worth the effort.

Here are the most important things to know as you dive into Cypress.

Continue reading …


How to Deploy Elixir Releases with Ansible

By on in Development, Elixir, Ops

In my last post, I described how to generate a platform-specific Elixir release. Now, the only thing left to do is to put it on the world wide web.

To follow along with this post, you’ll need a few things:

  1. An IP address for a remote machine (preferably running Linux) you want to deploy your application to.
  2. An RSA keypair, with the public key placed on that remote machine. Read more about how to do this here.
  3. Ansible (on your local machine). Read more about Ansible here.

Continue reading …


Reflections in Go, for Cats

By on in Development, golang

Several months ago, I had a story requiring metaprogramming in golang. I wasn’t very familiar with reflections in Go, and the available docs and write-ups aren’t the best for me, since I’m a learn-by-example kind of person. Having come to Go (ha) as a Rubyist, the lack of generics left a little bit of a hole in my heart, but a stiff upper lip, I pressed on and learned about reflections. Since I had to write my own examples anyway, it made sense to clean this up and turn it into a blog.

Continue reading …


Authorization and Authentication in GraphQL

By on in Development

Introduction

GraphQL is growing in popularity because it allows applications to request only the data they need using a strongly-typed, self-documenting query structure that enables an API to deliver data that can evolve over time.

Unlike traditional REST APIs, GraphQL exposes a single endpoint to query and mutate data. Upon learning this, one of the first questions that comes up for many developers is: “How do I implement authorization and authentication in GraphQL?”

Continue reading …


Writing ZSH Themes: A Quickref

By on in Development

Customizing your terminal is a fun way to streamline and personalize your digital workspace. People are more productive when using tools they enjoy and tend to value things they made themselves at a premium, but, as with all technical adventures, it can also be a little tedious to track down all the relevant documentation. This tutorial assumes you’re using zsh as your terminal shell. If you’re not sure what shell you’re using, the following will print the default shell path:

$ echo $SHELL

Continue reading …


Cross-Platform Elixir Releases with Docker

By on in Development, Docker

Deployment, despite being an essential task, can be a confusing part of shipping an application. Depending on your stack, there could be a plethora of tools out there or… none at all. Unfortunately, Elixir falls into the latter bucket. Despite having a heart of gold, the language is still obscure, and that makes the process of deployment a tiny bit harder.

Addressing this problem may have been the reason for incorporating releases into version 1.9 of the language. Since the version bump, Elixir Releases have received the official blessing of the core language team. That means that deployment will finally be a piece of cake… right? There’s a caveat. While releases are meant to be self-contained executables, they still call out to native system libraries to do things like open TCP sockets and write to files. That means that the native libraries referenced at compile time need to be exactly the same as the ones on your target machine. Unless you can guarantee that your workstation and cloud are exactly the same, releases can seem like only half the promise of a stress-free deployment.

Continue reading …


Migrating From Sprockets to Webpacker

By on in Development, JavaScript, Rails

Starting with Rails 6, Webpacker became the default asset compiler, replacing sprockets–better known as the asset pipeline. While the asset pipeline was a big step for its time in making it easy to package JS, CSS, and images, webpack has matured enough to do all of the above and more, due to modern JavaScript’s support for modular imports and exports.

Why Migrate?

Personally, the biggest benefit of webpacker is how it encourages me to think about structuring assets as components so that they are theoretically portable and do not rely on hidden globals. And by using an extensible tool like webpack under the hood, you can take advantage of popular plugins and customizations to tune what you need – like deduplicating shared imports, in both JS and CSS. Finally, you’re not limited to just extending webpack: it’s much easier to tap into the huge ecosystem of npm packages.

Below is a breakdown of how to start moving from sprockets to webpacker.

Continue reading …