Easily setting up a Salt Master and Minion using Vagrant

I wrote a couple articles previously on getting started with Salt (see here and here). Those articles are good for learning however once you know the general idea of what it takes to install Salt (well one way to install it) sometimes you just want to quickly spin up and Salt master and a minion or two to experiment with. If that sounds like something you would use then go ahead and checkout my repo vagrant-salt-starter. Simply follow the instructions in the readme and you’ll have a Salt master and minion running in no time.

Posted in Open Source, Salt | Comments Off on Easily setting up a Salt Master and Minion using Vagrant

Introducing ViperPy – A Python library for interacting with the EMC ViPR API

ViperPy is a Python library for interacting with the EMC ViPR API. ViperPy began originally as an easy way to hook up numerous projects that needed to interact with the ViPR product in order to perform certain metering and billing extraction and handle authentication tokens behind the scenes. Very quickly I realized that it could be useful to others in my group if I added support for additional APIs and certain other features. ViperPy gives a great alternative to the existing Java SDK for ViPR if you would prefer to write your application in Python.

Continue reading

Posted in Open Source, Python | 1 Comment

Building a Python 3 REST application that scales “good enough”

Often developers get caught up in discussions about scaling their applications – usually before one line of code has even been written. Of course its helpful to keep the scalability of an application in mind, it however shouldn’t be a primary focus – at least initially on (most) new applications. I say this simply because the vast majority of applications out there will run just fine under most scenarios with minimal horsepower behind them. Most of us are not building Reddit, Twitter, or Amazon. In fact, you’d be surprised at how even some large projects like Twitter started out and eventually scaled. Suffice to say no at Twitter originally probably could’ve prefigured out how to have scaled Twitter to the levels its at now. Many times you’ll find that handling a few hundred requests per second will handle many corporate (or otherwise) workloads and you’ll never need to go beyond that.

Continue reading

Posted in Open Source, Python | 1 Comment

Python Multiprocessing: A Second Look

A while back I blogged about Python’s multiprocessing. I was talking with a friend the other day and was looking over his team’s Github repos and came across an interesting use of the multiprocessing package. I broke the original code down into a very small and easy to use example that you can use to power your own creations. Its not really anything somebody couldn’t figure out on their own, but my blog has always been popular with people new to programming so I think this could help new Python developers out.

Continue reading

Posted in Open Source, Python | Comments Off on Python Multiprocessing: A Second Look

Clustering Graphite – The Easy Way

Graphite is used extensively by many companies. Right now, I’m working on a large Cloud based project that collects metering/billing data from several sources like EMC ViPR, OpenStack, etc. In order to quickly generate reports we cache some of the metering data inside Graphite. Today, I’ll go over how to setup a simple Graphite cluster and test it using Vagrant.

Continue reading

Posted in Open Source, OpenStack, Python, Ubuntu | Comments Off on Clustering Graphite – The Easy Way

The two minute guide to using Viper – configuration management with Go (golang)

A per the website Viper is a complete configuration solution. Designed to work within an application to handle file based configuration and seamlessly marry that with command line flags which can also be used to control application behavior”. You can load configuration files in: YAML, TOML or JSON. Viper allows you to easily add configuration management to your Go (golang) based projects.

Continue reading

Posted in Go, Open Source | 1 Comment

Getting started with etcd and Python

In a nutshell etcd is an open-source distributed key value store and is written in Go. You can run a single instance but it really shines when you set it up in a cluster and it will gracefully handle master election during network partitions and the loss of the current master. Today we are going to install etcd, use the CLI tool it ships with, and then do some simple Python scripts to interact with etcd.

Continue reading

Posted in Docker, Open Source, Python, Ubuntu | 1 Comment

Isolating your Ruby gems to a local project folder with a sample Sinatra app

In my previous blog post I wrote about installing rbenv on OS X 10.9 (Mavericks) to manage multiple Ruby installations easily. Today, I’m going to go over how I setup an initial Sinatra application while keeping the installed gems in the Ruby project and not going into the default system’s gem repository. I work a lot with Python so I tend to like how the separation of installed dependencies are handled using virtualenv and kept in the local project’s isolated instance. For more information on that see my blog post here.

Continue reading

Posted in Open Source, Ruby | Comments Off on Isolating your Ruby gems to a local project folder with a sample Sinatra app

Installing rbenv on OS X 10.9 (Mavericks) to manage multiple Ruby installations easily

I’m a big fan of pyenv so rbenv was a natural fit for the style of how I like to setup my development environments (on numerous computers). This allows me to easily switch between versions of Ruby depending on which project at work I’m working on.

Continue reading

Posted in Open Source, Ruby | 1 Comment

The 10 Minute Guide to the Observer Pattern in Python

Today I want to cover the Observer Pattern in Python. I’ll be using Python 3 but this should work equally well with Python 2.6.x and newer.

According to Wikipedia the Observer Pattern is: A software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their methods. It is mainly used to implement distributed event handling systems.

Continue reading

Posted in Design Patterns, Open Source, Python | 4 Comments