Learn Kubernetes with Interactive Tutorials

I wanted to get a deeper understanding of how Kubernetes actually works, so I started to work through the tutorials on the kubernetes documentation website.  Kubernetes is a container orchestration system that creates some standard tooling for deploying, scaling, and managing containers at scale.

The tutorials themselves, are amazing.

The tutorials use Katacoda to run a virtual terminal in your web browser that runs Minikube, a small-scale local deployment of Kubernetes that can run anywhere.

At a high level kubernetes allows you to deploy a cluster of resources as a single unit without having to really think about the underlying individual hosts. It follows a master -> node model where there is a centralized control point for managing your cluster and worker nodes that perform the actions that your application needs.

Kubernetes supports running both Docker containers and rkt containers. I’m pretty familiar with Docker. I learned more than I ever wanted to over the last few years of working at CircleCI. I have never used rkt, but am looking forward to learning more in the future.

It is really neat that you can simulate a production-like instance on your local computer using minikube. This is a great way to learn kubernetes as well as be able to do local development.

Kubernetes docs has some interactive tutorials that allow you to get your hands dirty with Kubernetes without having to install anything. These tutorials are powered by KataCoda, a tool that I am not familiar with. This is a neat web service that allows you to learn new technologies in your browser.

Kubernetes in your Browser

Kubernetes in your Browser

The first tutorial teaches you how to use minikube, and the kubectl cli to create a new cluster.

One of the most amazing parts of kubernetes to me is the self-healing aspect. For example once you have defined what your application stack consists of, if a node happens to go down then kubernetes will automatically replace it with another instance.

Not only does the interactive online tutorial allow you to use a real kubernetes cluster from within your browser, you can even preview the web UI portion of the cluster as well as viewing your application running.

Kubernetes Web UI

Kubernetes Web UI

This is such a great way to learn.


100% Uptime*

I have been a customer of Vultr on and off since March 2015. I have been running a VPS (Virtual Private Server) server on one platform or another since 2011 and I spent some time working in operations for a large VPS provider. In addition I briefly started my own VPS service last year. My experience with Vultr has been mostly good. Their support is responsive, service is mostly stable, and aside from a few expected hiccups related to abuse on a shared host, things have been great. Recently while browsing their home page I noticed that they offer a 100% uptime SLA.

I was pretty intrigued by this. My previous experience has led me to believe that achieving a true 100% SLA is practically impossible. Hosting is a frustrating and difficult business where something will always go wrong and there are way too many variables beyond any one companies control to be able to promise 100% uptime. So I thought to myself, what is Vultr doing that no one else can?

Well, based on my most recent interaction with their account management team, the short answer is “Nothing”. As far as I can tell this 100% Uptime* guarantee is just a marketing ploy that is intended to make Vultr look like a great value without actually being one in the same way that mail in rebates (remember those?) made things seem very cheap until you had to actually go through the process of sending in the rebate and hoping that the return check actually arrived.

Recently I got the following email from Vultr:

We have detected a system issue with the node hosting the instances listed above. Our engineering team applied system updates and scheduled a brief maintenance window to perform a node restart. Date and Time: Jan-13-2017 11:00 UTC (Jan-13-2017 03:00 Local Time) Please note: This event will reboot your affected instances. Your data and configurations will not be affected by the reboot.

There is nothing surprising here. If you have had a VPS turned on for more than 90 days from pretty much any VPS provider in the world you have probably received a very similar email. This seemed like a great opportunity to put their 100% uptime SLA to the test. The server in question runs about a dozen websites served by Apache, MySQL, and Redis. When a server reboots most of these services come back online thanks to systemd without any user intervention. However, I always like to double check that everything is up and running after a reboot so this means that I needed to be awake at 3AM to check to make sure that the server was in good shape.

The total downtime was less than 5 minutes (awesome!) and everything came back online without incident (double awesome!). According to their SLA chart I would be eligible for 12 hours of credit. I opened a ticket (on Saturday morning) and asked how the SLA process worked. I was informed that this question had to be answered by a member of the account management team and they would get back to me on Monday. No worries, totally get that, I thanked the support engineer for their time and waited patiently until Monday.

This morning I get the following email from their account management team:

If you experience any disruption in service that is not scheduled maintenance you would have to open a ticket to request SLA credit. Further information can be found here:

I read the linked content and a couple questions immediately popped into my head.

In order to receive any credit offered under this SLA, You must initiate a support ticket related to the event AND expressly request that We issue a credit. DO NOT ASSUME THAT WE ARE AWARE OF YOUR OUTAGE. Your outage may be wholly unrelated to Vultr’s services, so unless You contact Us via a support ticket, We may not be aware any problem exists.

Why are they yelling at the customer? How can they possibly “not be aware that any problem exists” when their marketing page says “our engineering team utilizes active monitoring to proactively detect problems and take preventative measures, minimizing any impact failing host node hardware could have on your environment.”

If Vultr needs to perform scheduled maintenance on your node, this is exempt, unless of course it takes us more than 10 minutes!

In what universe is 100% – 10 minutes (or any number for that matter) = 100%?

In accordance with the procedure outlined below, you must initiate a support ticket and request that a credit be applied to your account. Merely initiating a support ticket related to an outage will not result in any credit to your account.


The most important questions that I had were why couldn’t the support team send me that link and why isn’t there an asterisk next to the 100% SLA on the marketing site?

To be honest, I could care less about the actual reimbursement. The server itself costs a trivial amount of money per month, and the downtime was not that disruptive to me. The thing that really makes me frustrated is this deceptive and seemingly marketing driven SLA copy. Its makes me feel that I cannot in good conscience recommend this service to anyone else. If you are going to make such a grand claim as a 100% SLA you should either live up to it (which includes not making the customer jump through hoops in order to use it) or not make these types of promises at all.


Amazon LightSail: Simple Virtual Private Servers on AWS

Amazon introduced LightSail today in a move that might signal the slow death of “Cloud Hosting Providers” such as Digital Ocean, Vultr, and Linode.

Blast off with Lightsail; Everything you need to jump start your project on AWS—compute, storage, and networking—for a low, predictable price.

Source: Amazon LightSail: Simple Virtual Private Servers on AWS

Users of these services have historically been frustrated by AWS’s unpredictable pay as you go pricing that can at times reach astronomical rates. A good example is network transfer; the other day we moved a 120GB image from one server to another data center and it cost upwards of $17 for the transfer itself. This would have been free on the lowest plan of any other smaller cloud hosting provider.

You can check out an excellent run down of LightSail on the Linux Academy Blog.

LightSail is somewhat competitively priced, but Linode and Vultr are both still better deals for now. I think this is great from a competitive perspective. Smaller companies will need to up their game in order to compete with Amazons mind and market share. I am looking forward to seeing how this plays out.


Ubuntu 16.04 on an Intel NUC

I have too many computers.

The other day I installed Ubuntu on my Alienware PC because I needed to get some work done and I got tired of fighting with Vagrant on Windows. Everything was perfect until I rebooted. The screen did not come back on, and I got tired of fighting with Nvidia drivers.

Next, I pulled my Mac Mini from the closet and started hacking on that. I was encrypting the hard drive, and since it was a spinny disk it took upwards of 22 hours to get it done. This made me sad. Recently, I discovered that I can be a lazy recluse in my apartment thanks to Amazon Prime Now.

In the time that it took for the Mac Mini to finish encrypting the disk, I ordered, received, configured, installed, and encrypted Ubuntu 16.04 LTS on an Intel NUC. I could not be happier with this computer. Its small, quiet, cheap and fast.

I now have a stack of computers on my desk. If I ever get around to writing an electron app, I am golden will three computers with a dedicated OS.


The 90’s Web

I remember going to the Roselawn Library in Cincinnati, OH when I was around 8 years old and signing up to get 30 minutes on the internet. This would have been around 1998. I remember going to a site that I think was called (which I cannot seem to find anymore) where you could play a flash game where you were able to punch Bill Clinton. The computer ran Windows 95 and had a blazing fast DSL connection (at least 200k). The web was so simple back then. I like to go on thewayback machine sometimes and just browse random sites in the 90s. You can come up with some pretty interesting things doing that. My favorite thing to do is look at modern companies old website. Google for instance, 500B dollar company started off looking like this. The point of all this is that I did throwback to the 90s on the blog because I could get my columns to line up in the main page. So instead of using CSS, I put it in a table. This worked flawlessly. However it is a horrible practice, I felt guilty by doing it, and ultimately it made the mobile experience awful when viewing this site because the columns were smushed together. I fixed this by creating a wrapper div, and then two small floating divs. I also used media queries to make this blog more readable on mobile devices. The SCSS ( I am using Jekyll ) for this is:

 .post {
   padding-bottom: 10px;

   .post-date {
     width: 15%;
     float: left;

   .post-body {
     width: 90%;

It was fun to use tables for this, because it reminded me of my early days as a junior web master. But, I worry that people will adopt this practice so I quickly got rid of it here.


Documentation Driven Development

Last week I went to Heavybit Dev Guild and learned about designing for developer experience (DX). This was the first time I had heard of the term DX used, but of course it makes perfect sense. All of the Heavybit companies (including CircleCI) are focused around creating developer tools. Naturally when you are creating tools for developers the types of things that make those tools useful and a joy to use are very different than when your primary audience is the mass consumer market.

All of the talks were great, and I am pretty sure that they will be posting videos of the talks here so keep an eye out for that. Three things really stood out to me:

First, during the opening remarks, Jesse Robins talked about how developer tooling changes the culture of an organization. If you want to change the culture of an organization then its not enough to just build a product, you have to also build a movement.

Second, during a Product Discovery Panel, Patrick Malatack mentioned that before Twilio writes a single line of code they write the docs first. We have heard of Test Driven DevelopmentBehavior Driven Development, and * Driven Development, but this is the first that I have heard about “Documentation Driven Development”. This is such an amazing idea that I would love to dig deeper into. So often documentation is just an afterthought. Good documentation (especially when you are working on a FOSS project that does not have “official support”) can make or break your platform. DDD makes a lot of sense when your product is primarily an API like Twilio, I suppose it could fall apart for other types of products. In any case, it is critical to periodically step into the shoes of a brand new user and go through your documentation.

From a support perspective, there is nothing more annoying than getting 100 questions from a user who clearly didn’t even bother to read your documentation. But from a users perspective, there is nothing more annoying than reading documentation and finding out that the person that wrote it has not looked at it in three years because nothing works. In short, if you want your users to RTFM, make sure the FM is worth reading.

Lastly, during a founders panel that discussed building vibrant developer communities. Matt Debergalis talked about how when they first started Meteor they tried to follow an Apple model when it came to product design decisions. He stated that:

Apple Model does not work in FOSS, since you don’t control your own product. People are gonna show up with not just feedback, but also code.

Overall, this was a great event. I am looking forward to the next one. Huge thanks to HeavyBit for making this happen.


Growing the CircleCI Community with Discourse

One of the things that I am most proud of so far in my tenure at CircleCI is our community site. It has been really exciting to watch this small community blossom over the last six months. We now have over 2000 users, and more people sign up each day. It is great to see all of the great ideas, knowledge sharing, hacks, and engagement from our users.

My secret plan all along was to create an “international testing error database” and it looks like that is slowly but surely coming true. Over 80% of our traffic comes from worldwide google searches, and I assume that most of them are googling errors from their testing framework.

The most amazing thing is that a lot of people that come to the site for help are not even CircleCI users. This is great because at the end of the day, in addition to be a place where our users can get help and learn, I really would love for it to be the place where anyone using any CI tool can come and discuss how to do better at testing, CI, and CD.

I blogged about how we actually listen to feature requests, and also about a new thing that we are trying this week where users get to vote on a feature and at the end of voting we guarantee that we will develop it. It’s a cool experiment, and I encourage everyone to go vote!

I could not be happier with Discourse. It has enabled us to build a real community, and I am excited to continue to watch it grow.


Hooked on Fonics, and the Tragedy of Domain Name Driven Business Naming

I have long thought that it was slightly ironic that some of the most successful tech companies of our generation have been created around misspelled names. The reason for this of course, is due to limited amount of English words that can be used in a domain name, and the continued belief that if your company does not have a .com domain name then you may as well close shop right away.

I am guilty of this myself of course, since is a made up name that is a misspelling of “status” (and I did not even have the benefit of snagging a .com).

I wanted to bring special attention to this gem. is a startup that is supposed to help kids learn how to read through the use of phonics. I find it utterly ironic that even in the world of education technology which is arguably the last bastion of hope for an educated future society, there is yet another misspelled name for a company.


Windows 10 is Awesome

Last week I got a new Dell Inspiron laptop from the Microsoft store for a great price. I did a bit of research while looking for a new laptop, and despite the fact that this computer still has a spinny disk, the 8GB RAM, i5 Processor, and Full HD Screen make it one of the best bangs for you buck at a price of $549.00.

Naturally, this laptop came preinstalled with Windows 10. I tried my best to give it a fair chance. I really only need this computer to write code and look at the results of said code in a web browser, so my requirements are pretty low.

  1. Text editor
  2. Usable Shell
  3. Google Chrome
  4. Virtualbox/Vagrant
  5. Git

Pretty much every operating system these days from Windows to Solaris support those basic features, so what could possibly go wrong?

To be honest for the first few days, I cloned all my current projects and started hacking away. Life was good, and for the most part everything was fine. Installing Git for Windows includes all sorts of goodies like bash, vim, ssh which makes the computer pretty usable for development work. Using the chocolaty package manager makes installing all sorts of software like python, npm a breeze. In addition, the command prompt in Windows 10 finally supports window resizing, non-block text selection, and regular copying and pasting. Overall, after being away from Windows for quite some time I was pretty impressed with Windows 10.

Trouble in Paradise

But then, as usual, the little minor annoyances add up to a death by 1000 tiny cuts when it comes to doing development work in Windows.

No Full Disk Encryption without “Pro”

Microsoft still believes heavily in creating arbitrary feature differences between versions. So using BitLocker is not possible unless you are running Windows 10 Pro. This seems pretty sad since full disk encryption comes by default in OS X and any GNU/Linux Distribution for the last several years.

Weird Key Bindings

I don’t run a key logger, but if I did I think my most used commands would be ctrl+a and ctrl+e to go to home and end when editing anything. This kind of works sometimes in some programs, but its kind of a deal breaker since the home and end keys on this keyboard are above the numberpad and impossible to reach.

Unable to See dotfiles

I guess dotfiles (i.e. .gitignore) are Unix things? In Windows Explorer the file shows up as blank.

Unable to Rename files that are currently in use.

This was the deal breaker. I was editing some code for a new project. I wanted to rename the project from ‘test_project’ to something else. This feature is apparently impossible, even on the Pro Edition of Windows 10. If you try to rename a folder it will complain that it is currently being used. No problem, I closed out every explorer window and text editor window. Still no dice. In addition to not being able to do this seemingly trivial task, Windows does not even tell you where the file is being used so you are basically stuck either closing every single program you have open, or rebooting your computer just to rename a directory.

That is madness. Pure madness.


In conclusion, Windows 10 lasted about 4 and a half days on my laptop. Windows 10 is awesome, until it’s not. I installed Ubuntu 15.10 and it is working perfectly. Maybe in another 10 years Microsoft will figure out how to rename folders that are currently in use.


Nikki Wertish and the UbuTab Scam

Yesterday I wrote a trolly post about how to make $25,000 in 15 easy steps in an effort to raise awareness about the UbuTab scam that happened on Indiegogo this year. Although no one has yet gathered a angry mob to chase after Nikki Wertish and Indiegogo, I think that overall it was pretty successful. In fact, yesterday was the single best day for overall traffic on this blog since its inception. Thank you to everyone who took the time to read, comment, and share that post!

I wanted to follow up with a slightly more serious post expressing my frustration with the whole situation. I first saw the UbuTab campaign on Indeigogo back in January. I wrote about it then predicting that it would probably turn out to be a scam and commenting on how if you want to be taken seriously as a new business then you should not use a gmail address or redirect potential customers to paypal for checkout. Especially if the name of the company on paypayl that you are redirecting them to is not the same as the name of the company of the site that the user was just on.

I’m sad to see that this campaign really did turn out to be scam. I am not sad because I don’t get to play with an awesome Ubuntu tablet (even though I would love to), I am sad because Nikki Wertish took advantage of the kindness of strangers and based on Indeigogos initial reaction to the whole thing, is likely going to get away with it. I think the reason why she is going to get away with it is because $27,980 dollars is a relatively small amount of money and 156 people are a relatively small number of backers. When you screw that few number of people over, no one really pays attention and the only people that lose are the ones that believed in the project in the first place.

Reading through the comments on the project is depressing. It is a sea of disappointed and frustrated users pleading for any sort of communication from Nikki. Their questions go unanswered for months, and contacting Indiegogo for any sort of support is a fruitless endeavor.

“I am starting to feel like this project is dead. Nothing for two months??” “No response to my comments or emails what are you talking about? I think we have been scammed and indiegogo will not do anything to help us.” “Hello Guys,
As we didn’t get any response from UbuTab Team and the only answer from Indiegogo is ” try to contact the campaign owner “. Is there any kind of legal actions can be taken ??” “As a reminder, the offer of a tangible perk is legally binding – see the IndieGoGo TOS below. Given that this campaign has failed to deliver the tangible item as offered, please refund either provide a tracking ID or refund my money. “If a Campaign Owner (CO) is unable to perform on any promise and/or commitment to Contributors, the CO will work with the Contributors to reach a mutually satisfactory resolution, which may include the issuance of a refund of Contributions by the CO.””

In addition, the website for the project is down and Nikki has not provided an update for over three months. Her latest update read:

3 months ago

Hello everyone!! First of all, I apologize to all who haven’t received any e-mail response. We are currently working on getting back to everyone’s questions. If you are waiting for a response, please know you will get an e-mail back by the end of this week. If you haven’t heard back after that, please try us again so we can help in any way possible. Secondly, I know you are all anxiously awaiting the tablets. We are still a little bit behind in production. We were disappointed in the quality of the first batch of tablets from the manufacture. We do not feel they were of high enough quality to continue production of the current model. We are working with them to resolve the issues, and hope the next batch is up to our standards. Thank you for your patience in this matter! We are working on getting a few things updated so that we can send everyone the highest quality product. At this point we are looking at another 6-12 weeks before shipment. I just want to thank everyone for their patience in this matter. We are working hard to get the UbuTab to you as soon as possible, but we don’t want to skimp on quality to save time. If you have any additional questions, please feel free to comment or e-mail and we will get back to you as soon as possible. Thank you again for your support and patience! – UbuTab Team

It turns out that this wasn’t the first time that Nikki took a stab at crowdfunding, along with a few other failed businesses under the company name NuMac, but she was much more successful taking advantage of people who actually want to see Ubuntu running on a tablet.  Some people say that the ones that funded this campaign were simply stupid. Why in the world would they trust someone with no background, no credibility, and no working prototype with their money. I would agree that perhaps they should have scrutinized this project a bit more before fronting cash, but I do not think they are stupid. I would argue that the entire point of crowdfunding is to provide someone with a crazy idea the resources that they need to make it a reality.

I think the crowdfunding overall is a good thing, there have been tons of really amazing projects that have come out of kickstarter, Indiegogo, crowdsupply and the like. For comparison this is what a successful and legitimate hardware crowdfunding campaign looks like. When things like this happen, it causes many to lose faith in the system and makes it harder for the next person with a crazy idea to get enough people to trust them to follow through with it. I think that is a real shame.

I really hope that Indiegogo steps up and does something on behalf of all the users that trusted in the platform. I would also love for Nikki to provide everyone with an honest update on what is going on with the project and if it truly failed find some way to refund all of the backers. Until then, shame on Nikki Wertish for exploiting the crowdfunding model and scamming 156 people.

I have registered a formal complaint with the FTC. I would encourage everyone else to do the same, especially if you are one of the victims of this scam.