My Design Session at VMworld 2016

Next week is VMworld 2016 (US) and I wanted to put the word out that I’ll be presenting again this year. In previous years I’ve had the honour to share the stage with Mr Scott Lowe, as we discussed Infrastructure Design with a holistic approach across the datacenter. This year is a little different, as apart from anything else, I’m now a VMware employee working on a specific product. However the great news is I’m back to talk about high-level design topics in #SDDC9025 “VVD 101: Build Your Cloud the Right Way, First Time”.

I must sign up for #SDDC9025. I must sign up ...
   I must sign up for #SDDC9025 now. I must sign up for …

Before I explain why you want to attend this session more than any other session next week, let me explain a little bit about the product that I’ve been involved in at VMware.


VMware Validated Designs

So about 4 months ago I joined VMware, staying on the Product Management side of things, to an engineering team focussed on something called VMware Validated Designs, or VVD for short. This is a pretty amazing team of technical folks including plenty of well known vRockstars personalities and VCDXs.

Here we see two VVD engineers contemplate the impact of a particularly thorny design decision
   Here we see two VVD engineers contemplate the impact of a particularly thorny design decision

I could spend some several hundred lines of blog post explaining the what and the why of VVDs, but something amazing happened last month which is far more instructive. TL;DR it is the BEST up-to-date design documentation for your datacenter. Bar none.

Although VVDs were lightly mentioned at VMworld 2015, the team released version 2.0 last month and we made it openly available to everyone. For FREE! Yep, you can now download this previously professional-services-only toolkit and implement it yourself, DIY-style. If you’re even moderately interested in the design process and datacenter solutions, then these are the docs you’ve been looking for. There are lots of good, sensible, reasoned arguments why you want to use this guidance (some of which my colleague and I will talk about during my VMworld session), but I think the interesting point right now is to grab the documents and take a look yourself.

Want to look like an SDDC guru? Download the VVD design docs today.
   Want to look like an SDDC guru? Download the VVD design docs today.

There’s several ways you can get them, but the easiest if you have a account is to grab them here as they are all bundled into a single tarball archive.
Alternatively you can pick-and-mix by going to the documentation center.

Another great resource is to jump on over to the VMware community site we’ve just refreshed, and join in the discussion. Among other things, you’ll find Ryan Johnson’s  awesome VVD poster over there which helps sets the stage for the design.

VMworld 2016

Love talking about datacenter design? Sign up for the VVD 101 session, spaces are limited. Although this is an introductory session and we won’t be digging down into the technical nuts-and-bolts level, we will be talking about design level goals.  We will be explaining how a VVD can improve your datacenter design and why it’s the best design approach.  I’ll be revealing some of the hidden work that the VVD team do behind the scenes to solve problems so you don’t need to. And we’ll be talking about the future direction of the VVDs programme and announcing some breaking VVD news.

There are a lot of other VVD based sessions on next week, many looking at specific technical areas. Check out the link to Blaine’s post below for a good set of links.

Come and grab me at any point during the week for some snazzy VVD laptop stickers and to discuss the VVD approach.


Related external VVD blog posts:

Kill Your Combinatorics Before They Kill You by Blaine Christian

Announcing the VMware Validated Design for Software-Defined Data Center 2.0 by Ryan Johnson

VMware Validated Design for SDDC 2.0 – Now Available by Jonathan McDonald

Mac OS X application installation automation

Mac OS X “application installation automation” – now say that 3 times quickly!

This is a post about Homebrew and Cask, two package management projects for OS X CLI and GUI applications respectively, and why they’re so useful when it comes to setting a new Apple Mac.

This week I started a new job at VMware. Yes, I’ve moved on from Coho Data (an awesome scale-out, high performance, high-bandwidth enabled, distributed, shared nothing, enterprise-class, freakishly good storage product – give them a call if you have storage needs for VMware, docker images, OpenStack, Big Data, etc).

I’ve joined VMware’s Validated Design team within the Integrated Systems business unit as one of their product managers. There’s lots of super interesting work going on there, and very cool, smart folks to learn from. I’m sure I’ll be writing some articles here about what we’re up to in the coming months. Trust me, if you’re an architect or engineer responsible for designing and/or implementing VMware solutions in your datacenter, then the technology this team is working on will have a material impact on how you do what you do in the next couple of years.  If you get the chance to speak to anyone from this team at VMworld, your local VMUG, etc, then ask them why and take the time to listen carefully.

So starting a new job means amongst many other (far more important) things, setting up your new work computer. OS X has its App Store, which should in theory make this sort of menial task a breeze. Installing all your must-have apps on a smartphone is easy-peasy, especially if you’ve already been living in the same ecosystem with your previous phone. And yes, in fact, Apple’s App Store for Macs does something pretty similar – you log into your account and it lists all the apps you had previously installed via the App Store. The problem is only about 10% of the tools and applications I use on a Mac are listed in Apple’s walled garden. There’s lots of reasons why, but fundamentally most application developers don’t agree with Apple’s T&C and know that most folks are happy to roam across to their website to chase down each app. But where’s automation potential there? If each one take 10 minutes to find and install, multiplied by say 50 (yeah, you’d be surprised how much stuff you install), that means I’m spending a chunk of my first week at work not figuring out the coffee situation (seriously , that only makes it to #5? facepalm).

(Now, in reality my shiny new MacBook Pro is waiting for me at home, while I’m in Palo Alto for my first week. But I’ll be following these instructions once I actually get my paws on it.)

Homebrew – what’s this?

This is where I started looking for a tool with a more ubiquitous reach.

You look like a beer coaster. Okay, I’m sold.

I’ve used Homebrew before. If you’re familiar with Linux package managers such as apt-get for Debian, then you’ll understand the concept. Brew focuses on CLI tools and packages. You may also have heard of MacPorts and Fink, but Homebrew is arguably most popular of the trio these days. Homebrew refers to each package as a formulae and currently they’re over 3,500 different formulaes to pick from in their default repository. Pretty much any non-UI tool, application, app stack you can think of for a Mac is in there. And it’s trivial to use.

Cask – what’s that?

Great, but OS X has this wonderous Graphical User Interface thing that I sometimes like to use to search for pictures of cats, and other critical work related things. This is where Cask comes to the rescue. It’s its own distinct project (separate team), but they’ve taken the Homebrew ethos and way of doing things, and extended it to the most common UI applications. When I say most common, they cover over 3,000 of the most popular UI apps out there in the primary tap (think repo). This might not sound like a lot in comparison to Apple’s app store, but unlike all the shoot-em-up games filling Apple’s coin-operated machine, it provides over 90% of the apps I use everyday. Check out my own script at the bottom of this post – I’ll bet you use lots of the same tools.

Hate the CLI?

Okay, so as I’ll show you, both Homebrew and Cask are as pimpsicle to use as “brew install foo” and “brew cask install bar“, but how about UI options here for the heathens among you. Yes, the irony of recommending a CLI tool to install a bunch of GUI tools is not lost on me. This is about using the best tool to automate something inherently repeatably (and dull).

I did hunt around for something, and I found two potential tools that seem to work in a very similar to the awesome Windows ninite tool.

I haven’t used either as the coverage wasn’t anywhere near that of Cask, but both look easy ways to install a handful of the more common apps out there. It might just scratch your itch sufficiently.

Here be Dragons!


So, you’ve thrown caution to the wind and decided to follow me on the journey into the murky CLI option. Here goes nothing.

Setup Homebrew

To get started, we use the only scary looking command in this post. Promise. Open a Terminal window and paste this in:
/usr/bin/ruby -e "$(curl -fsSL"

Don’t fret over what it means or does. Just do it, forget it, and move on with your life. Now comes the fun stuff.

Using Homebrew

Brew is super easy, with only a handful of commands that you’ll actually use. There is a man page, but you can probably see all you need by just typing:



Here’s my top pick of commands, and probably the only ones you’ll need:

First, run the doctor command to do a health check of the install:
brew doctor

Let’s search for a tool to see what’s available and the package name used:
brew search top
The results of this command lists several different top-style commands such as dnstop, iftop, apachetop.

I find two versions of htop (htop and htop-osx) and I’m not quite sure which to go for, so I look at the info page for each with:
brew info htop-osx and brew info htop
From that, I can see htop-osx is a much older legacy version.

To install htop I simply use:
brew install htop


To remove it I’d just need:
brew uninstall htop
(BTW, don’t uninstall htop. It’s awesome)

There’s probably only a couple more commands I use that often:
– To update brew itself: brew update
– To upgrade all the apps: brew upgrade (you can specify specific apps if you want to)

Two more that are worth taking a look at are:
brew tap to manage additional repositories
brew cleanup which removes the cached install files. The doctor command shows how much space can be freed up by this.
To get a full listing of all the current brew formulaes available, do something like this:
brew list > brew_listing.txt

Setup Cask

Now we get to those GUI applications that our trackpad loves so much. Setting up casks these days is as easy as:
brew install cask
That’s it.

Using Cask

If you read the section on using brew, then you know how to use cask. Cask is implemented as a subcommand of Homebrew, just insert cask after the brew command. For example, to install the very handy cheetsheet tool:
brew cask install cheatsheet
(A great little app to help you learn all the keyboard shortcuts you ever wanted:

Just like brew itself, run brew cask to see a list of the main cask commands.

To get a full listing of all the current apps available from the default cask tap, do something like this:
brew cask list > cask_listing.txt

But where’s my new applications?

By default cask installs all its apps into directories under /opt and creates symlinks to your ~/Applications folder (in your own home directory, under /Users). If you want them in /Applications for easier access, just drag and drop the shortcuts across there yourself.

I tend to use Alfred to launch applications when I’m keeping my hands on the keyboard, so this isn’t a big deal for me as my good man finds the apps there without adjusting his bowler.

Alternatively, it seems you can add a line to your .bash_profile file. See here for the instructions:, but I suspect you’ll need to run some commands with elevated privileges – YMMV.

My own script

Below is the simple shell script that I’ll use next week to install my app list. I’m dropping it here for my own reference as much as anything, but I thought some of you might find it a useful starting point for your own use. I suspect that if you’ve followed the post this far you’ve probably share many of the poor tastes in applications as I do.

# Check that Homebrew is installed and install if not,
if test ! $(which brew); then
echo "Installing homebrew…"
/usr/bin/ruby -e "$(curl -fsSL"

# Update any existing homebrew recipes
brew update

# Install my brew packages
brew install wget
brew install fish
brew install git
brew install htop
brew install calc
brew install tree
brew install ncdu
brew install irssi

# Install cask!
brew install cask

# Add tab completion for bash and fish to cask commands
brew install homebrew/completions/brew-cask-completion

# Install my cask packages
brew cask install abricotine
brew cask install adobe-reader
brew cask install airdroid
brew cask install alfred
brew cask install android-file-transfer
brew cask install angry-ip-scanner
brew cask install atom
brew cask install banshee
brew cask install boot2docker
brew cask install caffeine
brew cask install cakebrew
brew cask install calibre
brew cask install cheatsheet
brew cask install cpumeter
brew cask install day-o
brew cask install dockertoolbox
brew cask install dropbox
brew cask install evernote
brew cask install filezilla
brew cask install firefox
brew cask install flux
brew cask install git
brew cask install gitbook-editor
brew cask install github-desktop
brew cask install gmail-notifr
brew cask install google-chrome
brew cask install google-hangouts
brew cask install gpodder
brew cask install grandperspective
brew cask install iterm2
brew cask install keepassx
# brew cask install libreoffice
# brew cask install microsoft-intellipoint
# brew cask install microsoft-intellitype
# brew cask install microsoft-lync # Lync 2011
# brew cask install microsoft-lync-plugin
# brew cask install microsoft-office # Office 2016 installer
brew cask install movelinks
brew cask install pencil
brew cask install pomodone
brew cask install prey
brew cask install royal-tsx
brew cask install skim
brew cask install simplifyextras # Spotify mac keyboard control
# brew cask install skype
brew cask install slack
brew cask install spotifree
brew cask install spotify
brew cask install spotify-notifications
brew cask install teamviewer
brew cask install the-unarchiver
brew cask install transmission
brew cask install visual-studio-code
brew cask install vlc
brew cask install vmware-appcatalyst
brew cask install vmware-fusion
brew cask install vmware-horizon-client
brew cask install wireshark
brew cask install xmind

# Add other things from the beta "versions" tap
brew tap caskroom/versions
brew cask install google-chrome-canary

# Remove brew cruft
brew cleanup

# Remove cask cruft
brew cask cleanup

# Link alfred to apps
brew cask alfred link

Remember to make it executable: chmod a+x

Other tools I install

As a reminder to myself, here’s a list of the other apps that I install that unfortunately aren’t available via brew or cask:
1. FreeSpace Tab (App store)
2. Lightshot Screenshot (App store)
3. Memory Monitor
4. Microsoft Remote Desktop (App store)
5. Pocket (App store)
6. Pomodoro Time
7. ReadKit (App store)
8. Simplenote (App store)
9. TweetDeck (App store)
10. VMware Client Integration Plug-in
11. VMware Remote Console (VMRC 8.01)

I can probably find replacements for some of these utility apps, i.e. # 1, 2, 3, 4, 6, 9 – suggestions in the comments section are most welcome!

Bonus: Cakebrew

One last thing I found while writing this article is something called cakebrew which provides a nice little GUI tool to install brew apps.


Unfortunately it doesn’t seem to support cask (GUI) apps yet. Yeah, there’s a very weird snake eating itself there – a GUI app to install CLI tools. Installed via the CLI: brew cask install cakebrew. The feature request ticket for adding cask is here.

What’s your must have OS X apps?

What are your must-have applications for when you set up your MacBook? Let us know in the comments.

A simple markdown editor that’s actually rather good

A short blog (actually started as tweet but I couldn’t do it justice in 140 characters) to let you know about a new markdown editor that caught my attention this week called Abricotine.

Abricotine 1

Here’s the rub

For those of you who are markdown aficionados, you probably follow a similar search for the ultimate markdown editor that is elegant, frictionless, distraction-free; all while being powerful, feature-rich and endlessly extensible. Yeah, seems like a good way to procrastinate. Of late I’ve bounced between Github’s Atom and Microsoft’s surprisingly nice Visual Studio Code.

Unfortunately most markdown editors fall into one of two categories:

  • Too cold. An editor that you write in, that can easily preview via a keystroke/menu click by opening a second window/pane to render your markdown text as an HTML page. This is nice as it allows a straightforward writing experience which stays true to what you are typing, but it isn’t particular intuitive to preview the formatting, causes a jarring switch of focus when you do, and uses double the real-estate causing your eyes to flit between the two.
  • Too hot. An editor which transforms markdown as you type, replacing the text with the formatted rich text. This saves any need to switch to a different view and seems simple for new markdown users, but the problem is you lose the formatting immediately. This approach doesn’t make much sense to me as one of the primary reason I write in markdown is its portable nature. Open, save, edit anywhere – it’s just a text file, but it retains the bare minimum markup a writer needs while still being mostly readable in it’s raw format. For example, if I just wanted a quick way to bold a word without leaving the keyboard, I’d learn how to use ctrl+B. I use markdown because it’s easier to type than enclosing HTML tags, leaves the text easy to read, while keeping the formatting separate. To me, this is where the new inline editor in WordPress gets it wrong (also, online editors take time to build up trust – gmail’s editor is about the only one I’ll not worry too much about.  Even then, if it’s more than a couple of paragraphs I reach for a real text editor). See the following animated gif to see what I mean about “too hot”.
Image courtesy of
Image courtesy of

Just right

I’ve seen some editors attempt to blend these approaches although up to now I find most don’t do it well. For example Visual Studio Code, has a strange mix of providing a rendered split window, but also tries to format things in the text entry pane but is limited by the single font size. It ends up with odd results such as applying bold and italics appropriately, but not strikethrough or underscores. Headings aren’t a larger size than body text, but a different colour – mix this with f.lux in the evening when writing and you’ll think things are very odd.

This is where Abricotine seems to get the balance right. It lets you see the formatting syntax and the resulting impact inline, without trying to hide or convert the syntax. It probably looks ugly if you’re not used to markdown, but for someone that writes that way I think it’s a perfect balance.

abricotine icon

For example, inserting images via a URL works really nicely in practice, showing the image, while still retaining the link correctly in pure markdown whenever you move the cursor over that line or copy the text somewhere (click on the image below to see it larger – normal on the left, focus on the right).

Abricotine 2

Open, lots of flavours and potential

There are lots of other markdown editors out there, but unlike most of the new high-quality options Abricotine is open source (GPLv3), cross-platform (Windows, OS X and Linux) and developed in the open on its GitHub site.


There are a few minor rough edges and feature requests I discovered during my initial trials (based on build v0.2.2). This shouldn’t detract from how useful I’m already finding this tool, but I thought I’d list them here in case anyone from the project is listening – yes, I know I should file these on their GitHub site 😉

  • Spell check underlining works, but there is no suggestions provided on right-click.
  • No recently opened files list.
  • I’d like to see tabbed documents.
  • Some preferences are only changeable via the config.json file.
  • Inserting a table via a menu is great (typing/inserting separators can be tedious in markdown), but the static menu options for this presently are limiting.
  • There’s a nice link to quickly view the page in your browser – it would be great to have some easily editable CSS options for its format (and the export function):
  • I’d like to see the “save as” option suggest “.md” as the file’s extension.
  • The help’s homepage link still points directly to the GitHub project, not their new website.
  • The “Copy as html” option is an awesome idea for quickly grabbing sections of text, but it seems to do a regular copy at the moment.
  • Word count would be a nice addition.
  • Support for PDF exporting via the Pandoc library would be great.
  • The ability to do full screen for distraction-free writing is super nice, and I like the default limit on characters per line, but this should probably be adjustable.
  • Support for Grammarly/Hemingway type functionality, or ability to seamlessly integrate with either/both would be great. Not sure if they have public APIs for this.

The intermission bell is now ringing

After quite the extended hiatus, I’m back on the blogging train. Over the last 18 months, I’ve been super occupied at Coho Data as their Technical Product Manager, participated (and trained for) some ultra trail running events, and generally been busy with life – unfortunately, as a result, I let my blog posting suffer. Anyway, enough excuses. Just to let you know that I intend to get back to churning out irregularly scheduled blogs with a few interesting projects that have been percolating on the back burner long enough.


Over the last couple of months, I’ve actually been making small tweaks to this site, such as a newer theme, done some optimization work, etc, and generally getting things ready. I’ve also been blogging a little over on Coho Data’s site as well:

During the break, I renewed my VMware certification status last summer by completing version 6 VCPs for both DCV (Data Center Virtualization) and NV (NSX). As soon as the v6 VCAP-DCV Admin exam (now called “Deploy”) is available I’ll be upgrading and grabbing myself a VCIX6 if I can – no doubt I’ll publish some articles about what I learn during that journey. As a Product Manger these days it can be tough to keep my hands-on skills relevant and not too dusty, but I think the VCAP-Admin exams are a good *forcing function*. I completed both the Design and Admin VCAP exams for v5, so I was glad when VMware relaxed the rules for VCIX and allowed candidates to elect to take either option for the upgrade (see the comments in this thread: Great to see a large company like VMware listening to their customers on this one.

Also, last week I was delighted (if not a little surprised) to be designated as a vExpert again. I feel personally that this was somewhat of an emeritus status for me, as during 2015 there wasn’t as much going on (at least publicly on this site) on the virtualization advocacy-side. Regardless, I’m delighted to stay on the list. I find access to the NFR licenses from VMware and their partners, and access to the VMworld sessions, invaluable to creating blog content and keeping skills honed in my home lab. I will endeavour to use the vExpert badge with greater gusto this year.

I may also write-up 1 or 2 running articles this year. This is not something I’ve done before, and obviously not related to my normal distribution audience, but it might prove to be an interesting diversion. Don’t get me wrong, I’m not a good runner. But I enjoy the challenge of these longer distance trots, and I know I like reading about the tribulations of the common-runner more, as they’re usually more entertaining and instructive than those written by the athletes that operate in a seemly different world.

I don’t want to promise on any projects yet, but I’ll have some more news on some of them shortly I hope.  The one area I spent quite a bit of time on last year, although nothing has surfaced on this site yet, is a refresh to my reference cards. I’m still super keen to get out a version 6 card and plan to use the power of GitHub to allow greater transparency and collaboration from now on. <aside>I saw Duncan’s announcement this morning, and was delighted that they’ve decided to share their deepdive book in a similarly open way – I’ll need to take a look at GitBook as an option for accepting contributions.</aside>

To conclude I wanting to quote something ethereal, noteworthy and markedly considered. So I leave you these important words: