This is a simplified makefile for making it easy to to rebuild whatever needs rebuilding when touching any of the protocol buffer files or other source files for either the server or the cli.

For convenience, I use an alias:

$ alias m="make -f amp.makefile"

Then I just invoke m to make all, and then m deploy to update the stack, then restart logs in another terminal (docker service logs -f amplifier_amplifier).


Secrets Example


In this example, you will create a pair of x.509 certificates for the public and private keys to encrypt and decrypt messages.

You will then create a compose file for a service that you will configure with the private key. You will encrypt messages using the public key, then send the encrypted messages to the service.

# Source:
command_exists() {
command -v "$@" > /dev/null 2>&1
sh_c='sh -c'
if [ "$user" != 'root' ]; then
if command_exists sudo; then
We couldn’t find that file to show.
$ sudo apt-get update && sudo apt-get upgrade -yf && sudo apt-get dist-upgrade -yf
$ sudo apt-get install -yf update-manager-core
$ sudo do-release-upgrade

Installing with apt-get

sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88 | grep || exit 1
sudo add-apt-repository "deb [arch=amd64] $(lsb_release -cs) stable"
sudo apt-get update

I recently switched over to neovim (see my screenshots at the bottom). Below is my updated config file.

It's currently synchronized with my .vimrc config except for a block of neovim-specific terminal key mappings.

This is still a work in progress (everyone's own config is always a labor of love), but I'm already extremely pleased with how well this is working for me with neovim. While terminal mode isn't enough to make me stop using tmux, it is quite good and I like having it since it simplifies my documentation workflow for yanking terminal output to paste in a markdown buffer.

These days I primarily develop in Go. I'm super thrilled and grateful for fatih/vim-go,


Go source, packages and working with tools

  • go test
  • go run
  • go build
  • go install



How to import and indicate empty request or reply messages:

import "google/protobuf/empty.proto";

service SomeService {
    rpc SomeOperation (google.protobuf.Empty) returns (google.protobuf.Empty) {}


It's easy enough to set up your machine as a swarm manager for local development on a single node swarm. But how about setting up multiple local nodes using Docker Machine in case you want to simulate a multiple node environment (maybe to test HA features)?

The following script demonstrates a simple way to specify the number of manager and worker nodes you want and then bootstrap a swarm.

You can also check out the sample as a Github project here.