DIY Pokemon Go: Our Experience Building an Augmented Reality Scavenger Hunt

By on in C5 Labs, Development, Everything Else

 

Thanks to PokemonGO, the streets are filled with people racing around cities, stopping to interact with virtual characters they could see through their phone camera. The experience is familiar to us at Carbon Five; 6 months ago we were doing the same thing on the streets of San Francisco playing our own augmented reality game. A game our tiny, three person team conceived, built and delivered in under a month, in and around our regular client workload!

This was no simple feat. In addition to the tight timeline, most of our day to day work focuses on mobile and web applications. Working in 3D was something only some of us have tried, with little practical experience.

So how did we do it?

Continue reading …


C5 Labs: Daily Ascent

By on in C5 Labs, Design, Development, Mobile

There is plenty of research to show that taking stairs is one of the best ways to work out without taking time out to exercise. Taking the elevator wastes electricity, and the stairs are a great opportunity to improve overall health. With this in mind, we wanted to encourage people to start thinking about using the stairs over elevators.

Though there are lots of great social health tracking apps out there, we wanted to try using wellness as an excuse to build community around a physical location (the Edney building staircase).

Continue reading …


Special Processes in OTP

By on in Development, Elixir

On a recent Elixir project, I needed to test some asynchronous behaviour. Doing so led me to learn about the basics of special processes in OTP.

Our project was using Phoenix Channels and had a need to keep track of all connected socket processes. We could have used the upcoming Phoenix presence feature, but we didn’t quite need all of its features. We settled on using a simple GenServer process that would monitor each connected socket.

Continue reading …


The 10 Practices of Healthy Engineering Teams – Part 2

By on in Culture, Development, Process, Startups

In Part 1 of this series, we introduced a high-performing engineering team at SuperStartupCorp that had automated repetitive tasks, codified its engineering practices, and adopted a learning mindset, resulting in happy engineers and happy stakeholders. Read on to learn more traits and practices that make this team so successful, and how they keep their bus factor high. (If you’re feeling extra adventurous, you can head on over to Part 3).

Continue reading …


Carbon Five & Heroku

By on in Development, golang, Java

 

Check out the latest Heroku case study, featuring Carbon Five.

The article explains how we build 35+ Apps a year and use Heroku for 90% of our software projects for wide range of clients. Courtney, Erik, and David share their thoughts on the platform’s support for rapid deployment, language flexibility, and ease of use.

Find out more here.

 


Dr. Smarty or How I learned to stop worrying and love the bot?

By on in Culture, Development, Everything Else

 

Twice a year, all of the Carbon Five offices congregate for our company-wide Summit. One of the funnest parts of these all company trips is the Codeo, which we have been running for the last few years and they have become an integral part of our DNA.

For those that don’t know, our Codeo (short for “Code Rodeo”) is a 2-day internal hackathon. The goal of the Codeo is to have fun creating a product with people you haven’t had a chance to work with in a while (or maybe ever).

The teams are made up of mixture of office locations and cross-functional groups so that everyone has a different role to play (developers, designers, product manager, and operations). The focus of this Codeo was “Slackbots” with the overall goal to create something that helps out our co-workers and/or Carbon Five as a whole. The only rule was to use an existing internal Slack channel as inspiration for the project.

Here is a snapshot of each team’s Slackbot, as told by the team. Continue reading …


Elixir and Phoenix: The Future of Web APIs and Apps?

By on in Development, Elixir

Buzz has been building up around Elixir (and Phoenix) in the development community over the last year. We’re pretty excited about them too and want to share the reasons why they’ve piqued our interest and what we’ve learned so far.

We decided to kick the tires by rewriting one of our in-house web applications using Elixir and Phoenix so that we could answer the questions that are most front of mind:

  • How productive is the stack?
  • Are there any emergent benefits?
  • Are there any significant gotchas?
  • What are the performance characteristics?
  • What’s the community like?

Continue reading …


Concurrent Acceptance Testing in Elixir

By on in Development, Elixir, Web

If you’ve practiced Test-Driven Development, you know that fast-to-execute tests are more than just a nice-to-have. As suites get slow, developers run them less often locally. Failures start to crop up in the CI environment, and the length of time between a breaking change and its detection increases.

The problem gets worse with acceptance tests. Since they execute in a browser, they’re slower to begin with and significantly more brittle. But with these negatives come a huge benefit: since they interact with your application in the same way a user does, they give you much more confidence that your system is working than isolated unit tests.

Running tests in parallel can sometimes help speed up tests, but doing so comes with its own set of issues. As with any concurrent code execution, global state can cause intermittent failures. In particular, very often tests rely on making changes to a database. These changes can easily leak from one test to another, causing havoc.

The upcoming release of ecto has a interesting new solution to this problem. It offers a connection pool built on the db_connection library, which provides a module named DBConnection.Ownership.

Continue reading …


ES6, ES7, and Looking Forward

By on in Development, Everything Else, Web

After attending Allen Wirts-Brock’s presentation on ES6 and ES7 at ForwardJS last week, I asked him if there was more momentum in shaping the JavaScript language recently. ES6, or ECMAScript 2015, has only just been released and shall soon be followed by ES7, or ECMAScript 2016. And what is ECMAScript, you may ask? ECMAScript is nothing more or less than the standard that defines what JavaScript is. With the last major release of ES5.1 back in 2011, and two new releases two years in a row, it appeared to me there was new momentum put into evolving this incredibly popular language. This blog will give you an overview of how JavaScript is being shaped over time and give a high-level look at ES6 and ES7.

Shaping JavaScript

Allen famously created the JavaScript language with Brendan Eich in just 10 days in May of 1995. He points out that while that statement is true, the reality is that there was a lot of thought preceding those 10 days about how the language would be shaped. After initially creating the language, it was picked up by two different companies who were trying to develop it independently. That is when the standards committee was developed. Technical Committee 39 (TC-39) of ECMA International now sets the ECMAScript standard. The standards committee is headed by pioneers in the business: Mozilla, jQuery, Meteor, Salesforce, Internet Explorer, Intel, et al. Continue reading …


The 10 Practices of Healthy Engineering Teams – Part 1

By on in Culture, Development, Process, Startups

Behold the engineering team at SuperStartupCorp: their steady delivery of features, humble reception of feedback and crafting of well-architected software systems earn them praise up and down the company. The team greatly enjoys working together, and consistently leaves the office feeling accomplished, empowered, and happy.

happy_engineers

How is this team able to consistently deliver features for the business, while maintaining morale in a changing sea of fluctuating product requirements, leadership changes, and unplanned site emergencies? It wasn’t always this way.

Read on to learn the first three steps to this team’s journey towards engineering happiness. And don’t forget to read on to Part 2 and Part 3 of this series.

Continue reading …