Hardware Diagnostics with Puppet Razor

In my last article on Razor, I discussed my experiences setting it up  and getting a single OS loaded.  That was fun, but let’s do more!

I figured that I would start by loading a second operating system and take advantage of this heterogeneous kickstart-like capability, but something else has come up.  I just upgraded the RAM in each node with some cheap, used stuff on eBay (I got a really good deal).

Now, for my three servers, I’m adding nearly 50 DIMMs, and I want to check them for faults before I give eBay feedback :-).  I typically turn to Memtest86 for this kind of diagnostic, and I could pretty easily burn an ISO, and go plug it into each server, but 1.) that’s boring, and 2.) how would I do that for a hundred or a thousand servers?  That’d suck.  Let’s see if our new toy, Razor, can get the job done.

In this article, I’ll setup a Razor task for Memtest86, and see how it goes! Continue reading “Hardware Diagnostics with Puppet Razor”

My Experience with Puppet Razor

I recently came into some good fortune.  You see, I’ve been in need of some physical servers for a couple of projects that I’m working on (which, hopefully, I’ll write about soon) and have moped around thinking about how I was going to simulate SAN host-bus adapters for VMs.  Then out of the blue, I received a gift of three, free six-year-old servers — some Dell R710s.  Now this might not seem like a jackpot to all of you, but these guys have everything that I need: remote-console iDRAC, a couple of PCIe ports & Broadcom NICs, 4 x PCIe slots and Intel-VT.

Now, I have about a dozen different ideas of things to try out with my new lab, and with these possibilities, I wanted a nice clean way to build up and tear down these systems without a bunch of effort.  I had heard about Puppet Razor, which was originated by a fellow EMCer (like myself), Nick Weaver, before being adopted by Puppetlabs.

In this article, I’ll review my experience getting Razor up & running for my lab, and some of my opinions on it.
Continue reading “My Experience with Puppet Razor”

Angular apps in Cloud Foundry

Possibly the least necessary article, ever.


Did you read the subtitle up there?  Read it.  This article is not required.  Deploying Angular.JS is so to Cloud Foundry is insanely easy.  If you start thinking that it should be complex, stop — step back, it’s not hard.  It’s really easy.

Continue reading “Angular apps in Cloud Foundry”

Adding Packages to a BOSH Deployment


This article is the second in a series on implementing an Erlang distributed service with BOSH & Cloud Foundry.  In the first article, I created a simple BOSH release which compiled a couple of packages and ran a single Erlang job (a monitored daemon) on three virtual-machines.  My eventual goal here is to have a running service broker, and conduct some experiments with distributed Erlang and Cloud Foundry, but before we get there, we have some more work to do.

While developing the broker, it became clear that I need a few more build-tool dependencies.  I want to keep these articles as short and focused as possible, so in this article, we’ll do just that.

Continue reading “Adding Packages to a BOSH Deployment”

Using BOSH to deploy Erlang Nodes

I’m preparing to do a couple of experiments with Cloud Foundry & Erlang. They’re not ready for prime-time yet, but I think the prep work might be at least as interesting as the experiment (particularly, if it goes up in flames).

If you’ve never heard of BOSH or Cloud Foundry before, you should probably visit those links, because I won’t be covering them in detail.  There is a lot of good material on the net that I can’t help to match, but I’ll give you a couple of one-liners:

  • BOSH is a declarative orchestration tool that deploys & monitors applications within virtual machines (on AWS, vSphere, Google Compute, etc.)
  • Cloud Foundry is a Platform as a Service built on top of BOSH that deploys, runs & monitors applications.

In this article, we’ll create a BOSH release for an Erlang runtime, and deploy it to a tiny personal cloud using BOSH-Lite.  In subsequent articles, I’ll expand on this  with a Cloud Foundry Service Broker.  With that in place we can play around with the service broker with some Cloud Foundry deployed Erlang applications.

If you’d like to follow along, you’ll need a couple of things setup:

Continue reading “Using BOSH to deploy Erlang Nodes”

Centering on the User in Ember.js

emberjs Ember.js is a powerful framework, and it’s really amazing how much you’re able to get done quickly.  However, some things that are simple in server-side frameworks take a little thought to work out on the client-side.  Centering an application on the user was a bit of a brain-bender for me. This article will review my approach to this common design with Ember.JS.

Let’s put the user at the center

user-centered A person logs in with their credentials, and sees their stuff.  Should be straight forward.  That said, it took me some experimentation to find an elegant solution.  I’ll document it here, since I didn’t find my approach detailed anywhere else. I won’t discuss authentication — that’s been covered in a number of posts.  I want to cover what happens next.  Just to add a little flair, I’ll make this a self-referencial model where users connect to each other.

Continue reading “Centering on the User in Ember.js”

Programming on 4 Strings [part 0]

I’m not talking about Strings of characters here.  I’m talking about Ukelele strings.  What?   Yeah, Ukelele strings.  My wife and 2 of my kids are all learning Ukelele, and we watched a glut of YouTube videos about Jake Shimabukuro. He’s pretty awesome, but I don’t have an Ukelele blog — I have a programming blog.  So what is this about?
One of  Shimabukuro’s comments struck me.  A Ukelele player feels the absence of those two strings present on the guitar, but not his instrument.  He wrestles to express a full sound with fewer strings at his disposal.  I don’t know what that means for Jake’s music (which is fantastic), but I can appreciate the struggle.  Starting with functional programming, I felt like I was striving for expression with a reduced set of tools.  At the same time, I’ve gained a lot!  It’s been exciting and enlightening.
As my functional skills mature, I thought I’d share some thoughts on what is taken away, and what is given as a result.  In this series, we’ll explore several functional concepts including:
  • External State vs Objects:  A different view of managing complexity
  • Function Composition:  This is really why it’s called functional programming
  • Immutability and Recursion:  You may not realize it, but they’re related

I’m sure we’ll find more subjects along the way, but this will get things kicked off.  I’d like to start by giving a general overview of object orientation. Continue reading “Programming on 4 Strings [part 0]”

What’s in a Join?


'Tis but the SQL is my enemy.  Thou art thyself not a join.
What's a join?  It is nor log nor table.  Nor interface,
Nor storage-format, nor any other part belonging to a database.
O, be something web-scale!  What's in a join? That which we call
relational by an embedded document or denormailization would
smell as sweet... Doth thy join, and for that join,
Take all myself.

Ok Juliette. We’ve got it.  You hate SQL and you hate joins.  But let’s take a step back before you stab yourself over it.

Continue reading “What’s in a Join?”

Deploying Erlang to Cloud Foundry

I’ve a big fan of PaaS in general and Cloud Foundry in particular.  I’m pretty lucky to be able to play around with it as part of my day job considering our close partnership with one of Cloud Foundry’s most important supporters: Pivotal.  That said, it’s taken me a while to get up to speed on Cloud Foundry v2, but I’ve just gotten a  micro-cloud up & running on my trusty Macbook with Bosh-Lite.

Obviously, the first thing I wanted to do was to get Erlang running on it.CF-Erlang

I won’t spend any time in this article discussing what PaaS is, why it’s awesome or how, exactly, Cloud Foundry fits into this ecosystem.  If you’re interested in those questions, hit me up on Twitter.  Today, I’ll mostly discuss what it took to run Erlang on CF.  TL;DR it’s surprisingly simple.
Continue reading “Deploying Erlang to Cloud Foundry”

Writing a Navigation Bar Controller in Ember.js

Edit:  Based on some feedback I’ve received on Reddit, I’ve updated the article with a cleaner method of highlighting the navigation links.  Thanks, Reddit!Navigation bars seem super simple.  How many apps don’t have a navigation bar of some sort at the top?  Nonetheless, I didn’t see any quick and easy guides to writing one for Ember, so I’ve elected to provide an option here.

I’ve just whipped this together today, so please offer feedback.  I’d really like to get some eyes on what I’ve done.

First, here’s what we’re going to accomplish.  A simple extensible navigation bar for our application’s links:

Continue reading “Writing a Navigation Bar Controller in Ember.js”