What is a variable?

You can visualize a variable1 as a box that contains a thing2. For example, this variable called x contains an integer 0:

x = 0

This other variable called most_recent_email contains a pointer (more below) which we draw with an arrow.

Using Packer and Ansible (instead of Dockerfile) to create Docker Images

Docker contains a feature, the Dockerfile, for automating the creation of images. However, packer can also be used to create docker images, and does so in a way that's generalizes to creating virtual machine or cloud images too.

Here is an example packer file that will create a docker image using an ansible playbook, and tag the image so that you can use it locally.

What is Apache Beam?

(Update 2017 May 25) A more detailed and refined description is available at https://wtanaka.com/beam.

Apache Beam is a formal definition of a few core data structures:

Notes about using HTTP/2


Generic https notes

There's a useful cipher suite generator at https://mozilla.github.io/server-side-tls/ssl-config-generator/

How do I find which AWS IAM user owns an AWS Access Key

  • pip install awscli
  • for i in `aws iam list-users | grep UserName | cut -d\" -f4`; do aws iam list-access-keys --user-name $i; done

strace equivalent in Mac OS X

Recent versions of Mac OS X have a System Integrity Protection feature which breaks the dtrace implementation installed on Mac OS X. In order to use dtrace functionality you first need to disable a portion of System Integrity Protection.

  1. Restart computer
  2. Hold down Command-R while computer boots
  3. Launch Terminal from the Utilities menu
  4. csrutil disable
  5. csrutil enable --without dtrace
  6. Restart again

Now you can use dtrace command line tools such as:

Generating grpc stubs for Python from the command line

The GRPC quickstart guide refers to generating GRPC stubs using python code similar to run_codegen.py

When you look in this file, you see what appears to be a command line like: protoc --python_out=. --grpc_python_out=. myfile.proto

However, if you actually try to execude that command line with either protoc 2.6.1 or 3.0.0, you get this error:

Understanding protocol buffer version compatibility issues in Python

(Updated December 12, 2017 for Python 3)

There are multiple protocol buffer and protobuf-related software packages available in multiple versions, as well as two major protocol buffer syntax releases. Forward compatibility does not exist, so the error messages that appear require research to understand:

Testing Ansible roles with test-kitchen and Docker using the Ansible Role Tester

Preparing an Ansible role to be distributed can be time consuming and error prone. Ideally, you should test it against many versions of Ansible and many operating system versions. However, doing this is time consuming.

Enter the Ansible Role Tester.

In its simplest form, you simply add this to your CI script after making sure that docker and bundler are available:

wget -O- bit.ly/ansibletest | sh

Structured log files in Python using python-json-logger

One approach for transferring events from your software into a log indexer software like logstash or splunk is to output them to disk in a structured format like JSON. Structured logs have some advantages over plain text logs, and the API of the Python logging module is flexible enough to output them with a custom Formatter.


Subscribe to Wesley Tanaka RSS