Posted by & filed under DevOps, Docker, Web development.

Jekyll is a static site generator written in Ruby and designed to be a simple way to create a blog-like website. It’s what GitHub uses for Pages, which means you can also host your Jekyll-powered blog there for free. Static HTML pages load fast, there’s no database or programming involved (unless you add your own Javascript or other plugins), and no hosting company to deal with.

There is one caveat, though — Jekyll can be a bit difficult to install, since it does have quite a few Ruby dependencies and it also unfortunately requires Node.js to support a non-optional plugin.

Read more »

Posted by & filed under DevOps, Docker.

Boot2docker is a lightweight linux virtual machine for running Docker on OS X and Windows, providing non-Linux users with easy access to the world of Linux containers. The lightweight VM comes in the form of a downloadable ISO which is then used to create the virtual machine. This means you can have more than one boot2docker VM for using different versions, Guest Additions, etc.

Our use case is particular to Guest Additions which is required to support shared folders on OS X. Because the current implementation of shared folders is temporary and it may come with some security implications, we don’t want to completely switch over to that version of boot2docker. Instead, we’ll create two profiles: the normal boot2docker, and boot2docker with Guest Additions.
Read more »

Posted by & filed under DevOps, Python, Web development.

Let me start this off by saying RabbitMQ is a great piece of software. It excels in areas where other messaging stacks are either too cumbersome or overly complicated. Plus, it’s written in wacky Erlang.

With all of its merits, however, a common hurdle is trying understand its RabbitMQ’s exchange, queue, and routing key terminology. Only adding to the confusion, the documentation states routing key functionality depends on the exchange type being used. Developers trying to adopt RabbitMQ looking for a durable and simple message stack are often left feeling a bit betrayed.

For many users, the exchange, queue, and routing key concepts go beyond what will ever be needed. It’s important to understand how they work, and how powerful they are, but it’s just as important that the extra moving parts aren’t a deterrent.
Read more »

Posted by & filed under aws, Deployments, DevOps, Docker, Go, Web development.

The latest version of Golapa comes with some significant changes, namely extending support beyond Google App Engine. While we are still supporting GAE builds using the same codebase, by dockerizing Golapa we’re making it a lot easier to develop locally and deploy almost anywhere Docker is supported.

Launch pages are supposed to be simple, right? A single, very well designed page with awe-inspiring effects as you scroll coupled with an email form and you should be done. At least, until you realize that you want visitors to share your page on Facebook, Twitter, and Google+. And then what are you doing with those email addresses? Why does it take so long to see the thank you page after you submit the form? How about A/B testing your content or knowing which referring sources are providing the most signups? Where are visitors clicking? How well will this scale if you’re lucky enough to get picked up by TechCrunch?

Read more »

Posted by & filed under DevOps, Web development.

While still in its infancy, CoreOS is getting a lot of attention lately as a fast and lightweight Linux distribution geared towards large-scale server deployments. It’s bundled with software like Docker, Fleet, and etcd to allow for quick cluster deployments and manageable app containers.

One particular point that helps ease its adoption is that it supports iPXE booting with a cloud-config parameter. For providers that support iPXE booting (like, launching CoreOS instances doesn’t get much easier. A simple script.txt file placed in a publicly accessible location (we use Amazon S3 with the resource set as public) will give you a CoreOS instance on in about 60 seconds.

Read more »