Start an Interactive Shell from Within Go
Looking around the web for information on creating a new shell from Go, I kept finding the same answer: "You can't do it." Actually, you can do it, and it's not hard.
My goal was to write a Go program that did some processing, set up a particular environment, and then opened an interactive UNIX shell...
Saved by the Bug
We should have seen a catastrophic failure. The server should have gone down in flames. But instead, we just saw these little blue blips. This is the story of how the effects of a dire and destructive bug were forestalled by... a little tiny bug.
It all started when we noticed something odd on...
The Best Keyboard Hack Ever
There's a key on my keyboard that I have spent most of my typing career learning not to press. Right next to A
and right above Shift
, it seems impossible to avoid. It MAKES ME SOUND ANGRY when I'm not. It stops many a password from working. And I pretty much never intentionally use it. Caps Lock is...
Century Link Labs Interview
BIG UPDATE: Century Link Labs posted a text interview (with commentary and summary) to accompany the video.
Last week I had the honor of joining Lucas Carlson for an interview with Century Link Labs. On the show, we talked about the evolution of containers, the recent Docker announcements, how my...
Don't Shrink Wrap Bananas
Software architecture finds some odd mirrors in life. I found an amusing example at the grocery store. The bananas. The great elegance of the banana is the simple fact that nature has endowed it with its very own container. It's thick, it's tough, and if you've got yourself an opposable thumb, it...
Setting Compile-time Strings in Go
It is handy to have a program be able to tell you its own version number. But it's a pain to maintain version strings manually. So why not let Go do it for you? It turns out to be pretty easy to do. When reading the code for Drone.io I ran across this cool trick for setting string values at compile...
Simple Applescript to Focus and Active MacVIM
I use certain apps far more frequently than others, and I've been setting up specific keybindings for those apps. One app that I use all the time is MacVIM. But MacVIM doesn't quite behave like normal OSX apps. Specifically, since it doesn't show up as an "Application," I can't access it using the...
Cookoo's Synchronized Context
Last week Masterminds released Cookoo 1.1.0. While most of the release is composed of minor bug fixes, we also added synchronization support to the cookoo.Context
object.
In the past, we've resisted the synchronization of the context on two grounds: (1) Since context is not designed to be shared...
Show GOPATH in Your Shell Prompt
I use gpm and gvp to set and manage my $GOPATH
. What this means is that I frequently change the value of my $GOPATH
variable. So it's nice to be able to see the value of $GOPATH
in some convenient form in my shell prompt ($PS1
).
But I don't want the entire path -- just enough to indicate which...
Using Drone and Docker for Continuous Integration
It all started with a whine. "Isn't there something better than Jenkins?" I'd had it with Jenkins' hungry runtime, difficult setup, build slave system, and shoddy plugins. Matt Farina pointed me to Drone.
Drone is a Docker-based continuous integration and delivery platform written in Go. The Drone...