Saturday, January 31, 2015

Architect, Designer, Build or Assemble.

I'm not an official Webster's representative but experience tells me:

The difference between assemble and build is the amount and level of detail instruction.

The difference between architect and designer is the principle priorities. The architect is primarily interested in scale and function where the designer is primarily interested in aesthetic and function.

And where architects are further defined by scope which blur (application, system, enterprise); designers try to focus with distinct, sharp, boundaries.

Apcera and gnatsd


I've watched a number of Apcera demo videos and while I'm not an expert or freshman user of continuum I can spot excellence. In fact one of the conversations I had been having with some CoreOS, DataDog team members and writing about the comments made by the Fusion base image guys... the Apcera team closed the loop.

Docker and CoreOS started with the notion that the container was supposed to be lightweight. It was supposed to execute a single purpose application and maybe a few dedicated sub-processes... and maybe ssh if absolutely necessary. And to that end the Docker team started publishing their idiomatic base images. Then along came the masses who started creating all sorts of images... and then Fusion stepped in to tell us we were all doing it wrong.

Going the Phusion route meant that the only savings generated by Docker would be the shared kernel and so given the amount of tooling required to manage a Docker cluster vs an OpenStack or VMware... you're probably better using the latter two.

So the Apcera team met me at the tipping point. In their gnatsd project they included a docker folder where they provided a build script and two docker files. The result of running the shell script is a runtime image that is the scratch base image plus the gnatsd server application... and did I mention I was able to build and run the whole thing on my MacBook Air running boot2docker.

All you need is to install boot2docker and git to get things started.
boot2docker init
boot2docker up
boot2docker shellinit | source
git clone https://github.com/apcera/gnatsd
cd gnatsd/docker
./build.sh
docker run apcera/gnatsd
If you're working on a Windows desktop then all you will need to install gitbash.

The best part of this pipeline is that it's all self contained and has the minimal host dependencies. It does not need complex tools like Chef or Puppet and it will install and run anywhere. Uploading the gnatsd image to a private registry is trivial and adding some code to monitor etcd and upgrade, restart  etc is as simple as a fleetd service.

Great job Apcera!

say what about OS X and iOS?

Watching this TechCrunch video Hands on Windows 10 I was actually impressed with Windows. It made a compelling story as I sit here typing on my MacBook Air considering my hardware refresh which should include phones, tablets and laptops. But then the reviewer made a critical mistake. Granted it was not one that I would say cancels out my interest but it does sort of challenge his credibility.

The statement was to the effect that Microsoft was unifying Windows across all 3 devices. Computers, phones and consoles; and that at Apple there was iOS and OS X, implying that they were not the same. That final comment about iOS and OS X is simply wrong. The core of the operating system for both is exactly the same code. This was never a secret and in fact was part of the propaganda used to sell iOS to potential developers. 

Now, of course, it's all about the APIs and experience... and so the same delta exists in the Windows and Apple brands. While the point is taken to mean that the interface experience is different depending on the current user mode (Windows) some things actually stayed the same and appeared to be difficult to operate. Just how many times was he going to press the start button before it actuated?

Windows 10 looked very interesting in the demo. Granted a lot of the code appeared to be W10-ish and so it was nicely visual. Even the fullscreen start menu. The colors were cool too. Unfortunately it's the applications. At least in the windows ecosystem the themes seem to carry through the version changes (see Mavericks). W10 will not tell the complete story until it drops some of the backward compatibility.

Wednesday, January 28, 2015

Makefile in Go


I’ve been having an exchange with some readers about rake and go. In the end I took a page out of the golang playbook and created my own make.go although it was specialized for easy/hound it could be modified to be a more general purpose make program. Granted the more general purpose it becomes the more it's like the actual make. And then there is the installinator project I have been working on where some of this would make plenty of sense.

BLEET - rake and golang?

I'm having a hard  time reconciling the logic that combined Rake and Golang in the etsy/hound project. Why on earth? Most systems already have make and the go authors have some tools that'll construct and assemble the code nicely.

Sunday, January 25, 2015

What a waste of a perfectly good USB drive

My family and I are planning a trip to Disney World in the next few months. In response Disney has decided to send us a USB drive with a message "plug it in for a message" or something like that. The drive itself is a 1 GB device. On the drive is a single HTML file which when opened will redirect your browser to the Internet where it downloads and plays a video. Cute? I'm grateful I did not ask to install any software.

Now that I have watched the video I want to reuse the drive for other purposes. In fact since it was only one gigabyte I thought I would reuse it to install my favorite operating system. After working on the many small details required to create a USB bootable version of my favorite Linux distribution I have come to realize that the device is partially crippled. While the read times are acceptable because the file that is read from the device is very small using it as a bootable operating system device is extremely painful.

I have decided to buy a better USB device instead of trying to reuse this one. But it would have been nice.

"REST is not a silver bullet"

I was reading the article "REST is not a silver bullet" as published on "prismatic", however, after reading the article I wanted to comment on the post. Commenting required registration. However, once I registered the link in my reading list redirected me to additional registration tasks. What a waste!

The author had a number of complaints; but while not wrong they were not as correct as written. The big issue is/was REST and HTTP, however, I've read a lot on the subject and most authors seem to believe that (a) HTTP is ubiquitous, it's well understood, and easy to implement. (b) it's trivial to add SSL. (c) there are plenty of tools for testing and debugging. (d) it is scalable and concurrent. (e) REST just gives the transaction context. (f) long-pole and web sockets can fill additional gaps.

I suppose there are plenty of reasons to hate HTTP/REST but most arguments are limited.