Micromessaging: Connecting Heroku Microservices w/Redis and RabbitMQ

By on in Everything Else

While attempting to deploy a system of interconnected microservices to Heroku recently, I discovered that processes running in dynos in the same application cannot talk to each other via HTTP. I had originally planned on each microservice implementing a “REST” API – but this wasn’t going to be an option if I wanted to stick with Heroku. Much head-scratching ensued.

The solution, it turns out, is to communicate between microservices through a centralized message broker – in my case, a Redis database (but I’ll show you how do it with RabbitMQ as well, free of charge). The design of each microservice API has been decoupled from HTTP entirely: Client/server communication is achieved by enqueueing JSON-RPC 2.0-encoded messages in a list, with BRPOP and return-queues used to emulate HTTP request/response semantics. The Redis database serves as a load balancer of sorts, enabling easy horizontal scaling of each microservice (in Heroku dyno) on an as-needed basis. Redis will ensure that a message is dequeued by only a single consumer, so you can spin up a lot of dynos without worrying that they’ll clobber each other’s work. It’s pretty sa-weet.

So how’d I do it, you ask? Read on!

Continue reading …


Spring Summit Diary

By on in Everything Else

Last week all of Carbon Five converged on Santa Monica for our bi-annual Summit to talk, eat, and play together. The theme for this season’s summit was Mobile, but as expected some of the most interesting conversations ranged far afield: from the challenges and opportunities of integrating design on Agile teams, to silly employee origin stories, and a thoughtful discussion about diversity.

IMG_0137

Following is a summary of the two-day event. If you’re curious about the presentation content, let us know and we’ll figure out a way to share the outcomes with you. More photos of the event can be found on our Facebook page.

Continue reading …


The Junior Jump – Life After Coding Bootcamps

By on in Everything Else

As a former Dev Bootcamp (DBC) student, I get a lot of inquiries from recent grads asking for tips on landing a job. I was lucky to get into the DBC early, graduating from the second cohort a year and a half ago, and the job market was quick to pick us up. However, after going through the growing pains of learning how to code in a production environment, I don’t find it too surprising that bootcamp grads now are having a harder time landing jobs.

Continue reading …


vimtronner: A Multiplayer, Command-line vim Trainer Built on Node.js and Socket.io

By on in Everything Else, Web

vimtronner game play

Greetings, programs! Meet vimtronner, a multiplayer command-line game that teaches you the core vim keys. Be the last player alive by either controlling your bike safely around obstacles or building your own walls for your opponents to crash into. Just remember: you can’t do both at the same time!

You can learn how to install and play vimtronner on its Github page as well as check out its codebase. In this post we’ll walk through it’s origins and lessons learned about terminal graphics, handling input for games, efficiently routing events to interested parties and more. Continue reading …


Applying Functional Programming Principles To Your Rails Codebase

By on in Design, Everything Else, Web

All the programmers around me seem to have very strong opinions about functional programming. The Internet certainly loves to talk about it. Some of the concepts are interesting – but many of them (at first) don’t seem to apply for those of us writing database-fronting web applications. What can we apply from a world in which side effects are shunned if the majority of what our application is doing is getting stuff out of a database for display on a web page?

In this article, I’ll share some of the lessons I’ve learned writing programs in a functional style using other languages and how these lessons apply to problems of testability, predictability, and parallelism in the regular ‘ole web application code we’re writing today. I’ll show you how you can increase the quality of your existing application by introducing stateless functions that interact with the state-manipulating stuff you’re already familiar with (and have already written). This article is geared towards web application development in the real world; don’t fret, the word “monad” does not appear anywhere on this page. Continue reading …


The 6 Essential Traits of the Successful DEO (and what the heck is a DEO?)

By on in Everything Else

Rise_of_the_DEO

Rise of the DEO: Leadership by Design, an evening with Authors Maria Giudice & Christopher Ireland

On Thursday, November 14, we’re pleased to host the authors of Rise of the DEO: Leadership by Design, Maria Giudice and Christopher Ireland, in a special event discussing the role of the DEO and their place in navigating the business challenges of today.

Space is Limited: RSVP on Eventbrite

Do you have the traits of a DEO?

Continue reading …


The JavaScript Event Loop: Explained

By on in Everything Else

What’s this post about?

With JavaScript approaching near-ubiquity as the scripting language of the web browser, it benefits you to have a basic understanding of its event-driven interaction model and how it differs from the request-response model typically found in languages like Ruby, Python, and Java. In this post, I’ll explain some core concepts of the JavaScript concurrency model, including its event loop and message queue in hopes of improving your understanding of a language you’re probably already writing but perhaps don’t fully understand.

Continue reading …


Courtney Hemphill Speaks at Lean UX SF Meetup

By on in Everything Else

Come check out Courtney Hemphill as she speaks at this week’s Lean UX SF Meetup this Tuesday as she gears up for her talk at this year’s FlowCon. Courtney will be talking about the weekly flow of product development at Carbon Five, including the importance of fostering integrated teams, establishing cadence, and gathering user feedback & validation.

Check out the Lean UX SF Meetup for more details and to put your name on the waiting list for this sold out event. If you can’t make it, or can’t get in, why not pick up a ticket to FlowCon?


Kablammo! The Ruby Robot War Has a Winner

By on in Everything Else

At this year’s GoGaRuCo, we ran a coding contest called Kablammo. Contestants submitted robot strategies and their ‘bots fought it out in the arena at Kablammo.io for a chance to win a Printrbot Simple 3D printer. After more than 20 entries and 1,000 battles, we’re ready to announce the winner!

kablammo1

jhmoore

Congratulations to Jeff Moore (AKA jhmoore) for his robot Yashwantrao Holkar. Jeff works at Mavenlink as a software engineer, and his hobbies include riding motorcycles way too fast, podcasting about terrible things on the internet, and baking pies.

There were a lot of great entries, but after checking out Jeff’s code and pitting his strategy against all comers in both one-on-one and one-on-many battles, he emerged as the winner. He’ll be receiving his Printrbot in the mail and we look forward to seeing what he prints up with it.

kablammo2

We’d like to thank all of the participants. We had a ton of fun coding the tournament and hope you had as much fun playing. We’ll be running more Kablammo tournaments in the future, so keep an eye on the blog. In the meantime, feel free to check out the repo, run your own server, or submit a robot into the public arena.


GoGaRuCo 2013

By on in Everything Else

We are thrilled to be one of the sponsors of the Golden Gate Ruby Conference once again. GoGaRuCo is a great event, balancing technical talks with the meta-topics that are important to all of us. We’re very psyched about what Leah, Josh, Jim, and all of the volunteers and speakers have done. Their work helps make the Ruby Community the awesome place that it is today.

We are proud to be one of the sponsors. For our third year as a sponsor we upped our involvement by running a table and hosting one of the official parties with our friends at Sharethrough: the Hacker + Maker Lounge. Rather than throwing a party at a club where it’s too loud to talk or where the primary activity is drinking, we created an event focused on the other things we’re excited about: learning and creating new things (in addition to good food and drink).

passport1

The Hacker + Maker Lounge passport.

Continue reading …