Shifting to A Work From Home Policy: A Mini Survival Guide for Your Company

By on in Process

Given the COVID-19 crisis, most companies that can have shifted to temporary work from home policy. While about a quarter of those companies are likely already adept at working remotely — at least to some degree. The rest are completely new to this way of working and it’s not an easy shift. I’d like to share a few tips from our experience working with remote-first companies and across distributed teams.

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 …


Recap: Running Remote Product Teams Fireside Chat

By on in Process

Carbon Five has worked with a variety of clients across the globe and within our own five offices that require remote collaboration while maintaining a sense of camaraderie and team cohesion.

With a lot of teams transitioning to remote workforces, we opened up the conversation to share some of our best practices. We would love to hear what you are doing as well. Tweet us at @carbonfive to share any other tips and tools your team finds effective! 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 …


What Are These $%^&* Chores Doing in My Backlog!

By on in Process

Beyond Just Features and Bugs

Projects tend to have three types of “tasks” for developers to do: features, bugs, and chores. Features and bugs are mostly self-explanatory. Features deliver direct customer value. Bugs are features that are not working as intended. These two tasks focus on direct connections to the users. Chores provide indirect customer value. Indirect value can be hard to identify as it can come through a variety of paths. Continue reading …


Human-Centered Learning Loops with IDEO

By on in Design, Events

Carbon Five San Francisco hosts Talk Nights and invites the community to join the conversation on how we can build better products together.

This month we were joined by two guest speakers from IDEO, Kaitlyn Irvine, an Interaction Designer, and Nadia Surtees, a Design Researcher. Together, they discussed Human-Centered Learning Loops and some of their recent user research projects done by IDEO in collaboration with Carbon Five. Continue reading …


Working with Guests: Seven Tips for Getting your Company Ready to Leverage External Firepower

By on in Process

Companies have been successfully partnering with consultants since the dawn of time. Think IDEO’s work with Apple to create the mouse or Microsoft’s work with IBM to create MS-DOS. Our nation’s competitive strength comes, in large part, from this openness to collaborate, to learn from each other, to move quicker, and to leverage outside strengths, when needed and without shame.

Regardless of where you stand on the topic of partnering, there is one thing you have to realize. If you’re in tech and growing fast, there is a high likelihood you will have to partner at some point to meet your goals. Today’s labor market is just too tight to fill all the demand for experienced software talent.

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 …


Running Multiple Versions of Postgres with Docker Compose for Local Development

By on in Development, Docker

Say we have Project X and Project Y that require Postgres 9 and Postgres 10 respectively. These projects aren’t using Docker to manage their Postgres dependency so it is up to each developer to manage this themselves. How do we get different versions of Postgres running simultaneously on our workstation without making any modifications to these projects? One easy way is to use Docker Compose.

Why not Homebrew? With Homebrew, installing multiple versions of Postgres is easy, but running them simultaneously is cumbersome. With Docker Compose, both installing and running are easy. Note that we’re not “dockerizing” the applications themselves; instead, we’re using Docker Compose as an alternative to Homebrew to fetch and run Postgres. Continue reading …