Dog Gate Design Flaws

We have a dog and while he is quite friendly, he’s also loud and solid and fast. He tends to scare people and he loves to chase the rabbits that scour the neighborhood.

So we have placed a gate in the house. Unfortunately, it is held to the wall with friction using a bolt that expands and presses into the wall. This is all fine and good, but with 7 people running around the house, plus guests and the dog jumping up on it, the friction tends to break loose every once in a while.

This has put a hole in the wall and scraped up the paint on the wall due to it moving. Enter a design to help with that. I created two parts. The first part is meant to spread out the surace area of the pucks. While the small pads might do fine with a lightly used door, it does not do well with a fully functioning house with multiple kids opening and closing the dog door.

The second part is to keep the walls from being marred and adding more friction to the wall so they don’t move as much. To provide more grip and prevent damage to the walls, it is printed using a flexible filament.

Here’s a picture of the parts, up close, assembled and in service.

Since installing, I have had far much less movement on the dog door.

The parts are available on Thingiverse.

Raspberry Pi and Ansible Part 1

I have been looking for a way to manage my growing collection of Raspberry Pis. I have a collection, including a Pi 2, Pi 3 and a handful of Zeros.

The challenge with managing a collection of devices is making sure they are all up-to-date. Sure, I could spend the time to log into each one, setting up the wifi-information, updating the OS, installing the common packages. I could create a disk image and copy it from SD card to a new install, but what about maintaining packages? What if I want to add an application to one or more of them? Or I could simply manage ssh into each and every one of them and do as I need. But, the question is… Do I want to manage these devices or use them?


If you aren’t familar, Ansible is an open source package for managing your machines. It is agentless. It connects to systems using services typically installed by default (ssh). Using this automation technique, you can use the system to access software on your machine(s).

Installing software on the RPi typically involves accessing the package manager APT-GET. If you aren’t familar with it, you may simply being using the UI version. But, using the command line version is fast and efficient, if you know what you want to install.

Apt-get must be kept up to date. So before any installation, an administrator or user issues the following command:

sudo apt-get update

This will update the repositories. Then after that, you typically install software by running a command like:

sudo apt-get install motion

This would install the motion package on the Raspberry Pi. In order to not sit around and wait for the machine to finish the update process, some users might combine the two actions:

sudo apt-get update && sudo apt-get install motion

This works great if you want to install the package on one machine, but what if you want to install it on 5? That means going to 5 machines (manually or using SSH) and running those commands. Then you hae to verify the output of each of those machines to ensure they installed correctly.

Or what if you wanted to set up a series of applications on a set of machines? This quickly becomes a problem. Enter Ansible. Using a hosts file, called an inventory file, you can automate the actions into Playbooks.

These playbooks can be set up to execute the actions on any host in the inventory file or against certain hosts. For example, if you have Redhat and Raspberry Pis, the package managers are different. Yum versus apt-get. You can selectively execute different commands on each machine using the same inventory file.